summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint')
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/code-frame/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/code-frame/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/code-frame/lib/index.js163
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/code-frame/package.json29
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/corejs2-built-ins.js1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/corejs3-shipped-proposals.js1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json1770
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json5
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/data/native-modules.json18
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/data/overlapping-plugins.json22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json157
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json473
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/native-modules.js1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/overlapping-plugins.js1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/package.json39
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/plugin-bugfixes.js1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/compat-data/plugins.js1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js0
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js325
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js564
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js244
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js357
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js10
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js67
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js79
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js104
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js76
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js206
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js0
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js44
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js338
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js103
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js10
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js75
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js76
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js197
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js44
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js30
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js139
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js42
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js68
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js31
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js352
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js210
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js71
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js66
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js94
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js40
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/index.js266
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js48
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js95
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js313
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js164
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js46
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js41
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js42
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js94
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js254
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js87
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js245
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js124
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js167
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js62
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js54
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js25
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/LICENSE15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/README.md443
-rwxr-xr-xtools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/bin/semver.js174
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/package.json28
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/range.bnf16
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/semver.js1596
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/core/package.json76
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/README.md124
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs386
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs173
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs157
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs13
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs180
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs30
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs29
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs44
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/utils/eslint-version.cjs1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs33
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs99
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs8
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs42
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs50
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs53
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/README.md54
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/definition.js86
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/index.js165
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/pattern-visitor.js152
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/reference.js167
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/referencer.js629
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope-manager.js247
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope.js748
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/variable.js88
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/package.json48
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/LICENSE201
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/README.md98
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/index.js81
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/visitor-keys.json289
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/package.json39
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/LICENSE.BSD19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/README.md153
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/estraverse.js782
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/package.json40
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/LICENSE15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/README.md443
-rwxr-xr-xtools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/bin/semver.js174
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/package.json28
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/range.bnf16
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/semver.js1596
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json44
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js265
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js96
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js174
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js318
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js795
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/index.js148
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js145
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js150
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js239
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js331
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/template-literals.js33
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js276
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js806
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js97
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js111
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js342
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js214
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js540
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js78
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/generator/package.json36
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/debug.js33
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/filter-items.js88
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js255
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/options.js21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/pretty.js47
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/targets.js27
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/types.js0
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js69
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/LICENSE15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/README.md443
-rwxr-xr-xtools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js174
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json28
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/range.bnf16
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/semver.js1596
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json40
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-function-name/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-function-name/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js188
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json25
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/lib/index.js27
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json23
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/lib/index.js58
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json27
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/lib/index.js453
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/package.json26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js162
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js290
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/index.js41
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/is-module.js18
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json27
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/get-module-name.js54
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js416
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js398
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js360
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js30
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json30
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/lib/index.js36
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/package.json27
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js90
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json20
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/lib/index.js293
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/package.json26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-simple-access/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-simple-access/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js93
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js67
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json23
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/identifier.js84
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/index.js57
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/keyword.js38
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json24
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js75
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-option/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-option/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/find-suggestion.js45
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/index.js21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/validator.js58
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json20
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js34
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js1949
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/asyncIterator.js81
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/jsx.js53
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/objectSpread2.js46
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/typeof.js22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js73
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js300
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/package.json28
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js68
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/helpers/scripts/package.json1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js116
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/index.js165
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/license9
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/package.json56
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md147
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js228
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js.flow93
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/license9
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/package.json71
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/readme.md314
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/templates.js128
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/LICENSE21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/README.md68
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/conversions.js868
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/index.js78
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/package.json46
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/route.js97
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/LICENSE8
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/README.md11
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/index.js152
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/package.json25
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js11
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/license21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json41
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md27
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/index.js8
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/license9
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/package.json44
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/readme.md70
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/browser.js5
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/index.js131
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/license9
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/package.json53
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/readme.md66
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/highlight/package.json29
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/parser/LICENSE19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/parser/README.md19
-rwxr-xr-xtools/node_modules/eslint/node_modules/@babel/parser/bin/babel-parser.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js15148
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/parser/package.json42
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json31
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/src/index.js13
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/builder.js81
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/formatters.js71
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/index.js32
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/literal.js80
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/options.js83
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/parse.js188
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/populate.js135
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/lib/string.js22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/template/package.json26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/cache.js26
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js137
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/hub.js23
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js118
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/ancestry.js180
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/comments.js42
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js265
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js495
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js401
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/family.js407
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/asserts.js5
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/validators.js5
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/virtual-types.js3
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js253
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js156
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js206
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js261
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js436
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/hoister.js206
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js38
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js230
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/modification.js232
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/removal.js73
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js260
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/binding.js75
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js1015
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js146
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/types.js5
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/lib/visitors.js242
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/globals.json1563
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/index.js2
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/license9
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/package.json41
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/readme.md41
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/package.json35
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js25
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js43
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js24
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/traverse/scripts/package.json1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/LICENSE22
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/README.md19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/assertNode.js17
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js1507
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/ast-types/generated/index.js0
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js43
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js20
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js41
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js1261
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js1507
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/react/buildChildren.js29
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/clone/clone.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeep.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js114
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComment.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComments.js23
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritInnerComments.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritLeadingComments.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritTrailingComments.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritsComments.js19
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/comments/removeComments.js16
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/constants/generated/index.js105
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js49
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/Scope.js0
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js75
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js14
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBlock.js34
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toComputedKey.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toExpression.js33
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toIdentifier.js30
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toKeyAlias.js46
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toSequenceExpression.js21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toStatement.js47
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/converters/valueToNode.js99
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js1604
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/experimental.js133
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js474
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/index.js103
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js156
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/misc.js32
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/placeholders.js33
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js470
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js343
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/index.js647
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow2549
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js78
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js31
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js13
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js30
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js54
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js104
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverse.js55
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverseFast.js28
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/utils/inherit.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js47
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/utils/shallowEqual.js18
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js13
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js4779
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/is.js33
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBinding.js31
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBlockScoped.js14
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isImmutable.js24
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isLet.js14
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNode.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js67
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isPlaceholderType.js21
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isReferenced.js127
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isScope.js20
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isSpecifierDefault.js14
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isType.js24
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidES3Identifier.js14
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidIdentifier.js20
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isVar.js16
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/matchesPattern.js42
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isCompatTag.js10
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isReactComponent.js12
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/lib/validators/validate.js32
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/package.json39
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js50
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js144
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js163
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js15
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js282
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js260
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js369
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js87
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/package.json1
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/formatBuilderName.js8
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/lowerFirst.js3
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/stringifyValidator.js66
-rw-r--r--tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/toFunctionName.js4
-rwxr-xr-xtools/node_modules/eslint/node_modules/@types/mdast/LICENSE21
-rwxr-xr-xtools/node_modules/eslint/node_modules/@types/mdast/README.md16
-rwxr-xr-xtools/node_modules/eslint/node_modules/@types/mdast/package.json42
-rwxr-xr-xtools/node_modules/eslint/node_modules/@types/unist/LICENSE21
-rwxr-xr-xtools/node_modules/eslint/node_modules/@types/unist/README.md16
-rwxr-xr-xtools/node_modules/eslint/node_modules/@types/unist/package.json55
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/LICENSE20
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/README.md66
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/browser.js50
-rwxr-xr-xtools/node_modules/eslint/node_modules/browserslist/cli.js149
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/error.js12
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/index.js1214
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/node.js385
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/package.json35
-rw-r--r--tools/node_modules/eslint/node_modules/browserslist/update-db.js363
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/LICENSE395
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/README.md92
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/browsers.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-apply-rule.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/statuses.js9
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/supported.js9
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/agents.js47
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browserVersions.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browsers.js1
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/feature.js48
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/features.js6
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/index.js4
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/region.js22
-rw-r--r--tools/node_modules/eslint/node_modules/caniuse-lite/package.json28
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities-legacy/index.json108
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities-legacy/license22
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities-legacy/package.json70
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities-legacy/readme.md74
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities/index.json2224
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities/license22
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities/package.json71
-rw-r--r--tools/node_modules/eslint/node_modules/character-entities/readme.md72
-rw-r--r--tools/node_modules/eslint/node_modules/character-reference-invalid/index.json30
-rw-r--r--tools/node_modules/eslint/node_modules/character-reference-invalid/license22
-rw-r--r--tools/node_modules/eslint/node_modules/character-reference-invalid/package.json74
-rw-r--r--tools/node_modules/eslint/node_modules/character-reference-invalid/readme.md74
-rw-r--r--tools/node_modules/eslint/node_modules/convert-source-map/LICENSE23
-rw-r--r--tools/node_modules/eslint/node_modules/convert-source-map/README.md120
-rw-r--r--tools/node_modules/eslint/node_modules/convert-source-map/index.js136
-rw-r--r--tools/node_modules/eslint/node_modules/convert-source-map/package.json44
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/LICENSE5
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/README.md186
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js43
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json1
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js1691
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json1
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js1227
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json1
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/index.js36
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/package.json42
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js84
-rw-r--r--tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json1
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/dist/index.js22
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/dist/index.mjs22
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/license9
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/package.json61
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/readme.md211
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/sync/index.js18
-rw-r--r--tools/node_modules/eslint/node_modules/escalade/sync/index.mjs18
l---------tools/node_modules/eslint/node_modules/eslint1
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/LICENSE21
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md362
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/index.js8
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js60
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js405
-rw-r--r--tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json58
-rw-r--r--tools/node_modules/eslint/node_modules/gensync/LICENSE7
-rw-r--r--tools/node_modules/eslint/node_modules/gensync/README.md196
-rw-r--r--tools/node_modules/eslint/node_modules/gensync/index.js373
-rw-r--r--tools/node_modules/eslint/node_modules/gensync/index.js.flow32
-rw-r--r--tools/node_modules/eslint/node_modules/gensync/package.json37
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphabetical/index.js14
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphabetical/license22
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphabetical/package.json75
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphabetical/readme.md70
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphanumerical/index.js12
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphanumerical/license22
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphanumerical/package.json77
-rw-r--r--tools/node_modules/eslint/node_modules/is-alphanumerical/readme.md71
-rw-r--r--tools/node_modules/eslint/node_modules/is-decimal/index.js11
-rw-r--r--tools/node_modules/eslint/node_modules/is-decimal/license22
-rw-r--r--tools/node_modules/eslint/node_modules/is-decimal/package.json72
-rw-r--r--tools/node_modules/eslint/node_modules/is-decimal/readme.md69
-rw-r--r--tools/node_modules/eslint/node_modules/is-hexadecimal/index.js15
-rw-r--r--tools/node_modules/eslint/node_modules/is-hexadecimal/license22
-rw-r--r--tools/node_modules/eslint/node_modules/is-hexadecimal/package.json72
-rw-r--r--tools/node_modules/eslint/node_modules/is-hexadecimal/readme.md70
-rw-r--r--tools/node_modules/eslint/node_modules/js-tokens/LICENSE21
-rw-r--r--tools/node_modules/eslint/node_modules/js-tokens/README.md240
-rw-r--r--tools/node_modules/eslint/node_modules/js-tokens/index.js23
-rw-r--r--tools/node_modules/eslint/node_modules/js-tokens/package.json30
-rw-r--r--tools/node_modules/eslint/node_modules/jsesc/LICENSE-MIT.txt20
-rw-r--r--tools/node_modules/eslint/node_modules/jsesc/README.md421
-rwxr-xr-xtools/node_modules/eslint/node_modules/jsesc/bin/jsesc148
-rw-r--r--tools/node_modules/eslint/node_modules/jsesc/jsesc.js329
-rw-r--r--tools/node_modules/eslint/node_modules/jsesc/man/jsesc.194
-rw-r--r--tools/node_modules/eslint/node_modules/jsesc/package.json54
-rw-r--r--tools/node_modules/eslint/node_modules/json5/LICENSE.md23
-rw-r--r--tools/node_modules/eslint/node_modules/json5/README.md234
-rw-r--r--tools/node_modules/eslint/node_modules/json5/dist/index.js1710
-rw-r--r--tools/node_modules/eslint/node_modules/json5/dist/index.min.js1
-rw-r--r--tools/node_modules/eslint/node_modules/json5/dist/index.min.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/json5/dist/index.mjs1399
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/cli.js112
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/index.js9
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/parse.js1087
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/register.js13
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/require.js4
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/stringify.js261
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/unicode.js4
-rw-r--r--tools/node_modules/eslint/node_modules/json5/lib/util.js35
-rw-r--r--tools/node_modules/eslint/node_modules/json5/package.json72
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-from-markdown/dist/index.js823
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-from-markdown/index.js3
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-from-markdown/lib/index.js819
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-from-markdown/license22
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-from-markdown/package.json109
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-from-markdown/readme.md206
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-to-string/index.js29
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-to-string/license22
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-to-string/package.json80
-rw-r--r--tools/node_modules/eslint/node_modules/mdast-util-to-string/readme.md127
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/buffer.js3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/buffer.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alpha.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alphanumeric.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-atext.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-control.js12
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-digit.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-hex-digit.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-punctuation.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/codes.js257
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending-or-space.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-space.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-punctuation.js10
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-whitespace.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/character/values.js111
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/compile/html.js787
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/assign.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/constants.js71
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/from-char-code.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/has-own-property.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/html-block-names.js69
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/html-raw-names.js6
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/splice.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/types.js357
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constant/unicode-punctuation-regex.js11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/constructs.js127
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/index.js21
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/initialize/content.js69
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/initialize/document.js237
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/initialize/flow.js60
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/initialize/text.js201
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/parse.js36
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/postprocess.js13
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/preprocess.js87
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/stream.js103
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/attention.js186
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/autolink.js125
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/block-quote.js67
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-escape.js34
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-reference.js94
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-fenced.js176
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-indented.js72
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-text.js162
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/content.js99
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/definition.js115
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-destination.js131
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-label.js88
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-space.js30
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-title.js75
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-whitespace.js32
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/hard-break-escape.js31
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/heading-atx.js129
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-flow.js486
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-text.js435
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-end.js330
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-image.js46
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-link.js35
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/line-ending.js21
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/list.js214
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/partial-blank-line.js19
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/setext-underline.js117
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/tokenize/thematic-break.js53
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-push.js14
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-splice.js38
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/classify-character.js25
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/combine-extensions.js49
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/combine-html-extensions.js34
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/create-tokenizer.js316
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/miniflat.js11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/move-point.js12
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-identifier.js18
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-uri.js62
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/prefix-size.js11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/regex-check.js13
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/resolve-all.js20
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/safe-from-int.js26
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/serialize-chunks.js40
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/shallow.js9
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/size-chunks.js16
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/slice-chunks.js27
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/dist/util/subtokenize.js199
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/index.js3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/index.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.js14
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.mjs12
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/codes.js158
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/codes.mjs154
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.js9
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.mjs7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.js9
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.mjs7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.js13
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.mjs11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.js10
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.mjs6
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.js7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.mjs3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/values.js111
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/character/values.mjs107
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/compile/html.js810
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/compile/html.mjs813
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.js45
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.mjs41
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.js69
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.mjs65
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.js6
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.mjs2
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.js5
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/types.js452
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/types.mjs448
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.js11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.mjs7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constructs.js98
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/constructs.mjs85
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/index.js21
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/index.mjs19
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.js91
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.mjs79
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.js245
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.mjs239
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.js82
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.mjs70
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.js210
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.mjs203
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/parse.js36
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/parse.mjs34
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/postprocess.js13
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/postprocess.mjs11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/preprocess.js96
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/preprocess.mjs94
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/stream.js119
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/stream.mjs117
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.js216
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.mjs207
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.js147
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.mjs138
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.js67
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.mjs64
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.js44
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.mjs35
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.js101
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.mjs88
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.js185
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.mjs176
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.js91
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.mjs88
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.js191
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.mjs179
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.js121
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.mjs109
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.js129
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.mjs120
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.js145
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.mjs143
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.js102
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.mjs94
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.js31
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.mjs29
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.js92
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.mjs84
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.js34
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.mjs32
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.js41
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.mjs32
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.js151
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.mjs142
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.js513
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.mjs498
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.js458
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.mjs449
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.js374
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.mjs350
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.js56
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.mjs48
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.js46
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.mjs38
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.js31
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.mjs22
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.js219
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.mjs216
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.js21
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.mjs18
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.js138
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.mjs129
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.js74
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.mjs65
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.js14
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.mjs12
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.js46
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.mjs44
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.js27
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.mjs25
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.js50
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.mjs48
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.js35
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.mjs31
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.js440
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.mjs399
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.js11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.mjs9
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.js12
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.mjs10
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.js23
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.mjs21
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.js70
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.mjs68
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.js11
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.mjs9
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.js12
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.mjs10
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.js20
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.mjs18
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.js32
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.mjs30
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.js54
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.mjs42
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.js9
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.mjs7
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.js16
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.mjs14
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.js43
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.mjs29
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.js219
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.mjs211
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/license22
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/package.json208
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/readme.md737
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/stream.js3
-rw-r--r--tools/node_modules/eslint/node_modules/micromark/stream.mjs1
-rw-r--r--tools/node_modules/eslint/node_modules/minimist/LICENSE18
-rw-r--r--tools/node_modules/eslint/node_modules/minimist/index.js245
-rw-r--r--tools/node_modules/eslint/node_modules/minimist/package.json45
-rw-r--r--tools/node_modules/eslint/node_modules/minimist/readme.markdown95
-rw-r--r--tools/node_modules/eslint/node_modules/node-releases/LICENSE21
-rw-r--r--tools/node_modules/eslint/node_modules/node-releases/README.md31
-rw-r--r--tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json1
-rw-r--r--tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json1
-rw-r--r--tools/node_modules/eslint/node_modules/node-releases/package.json18
-rw-r--r--tools/node_modules/eslint/node_modules/parse-entities/decode-entity.browser.js30
-rw-r--r--tools/node_modules/eslint/node_modules/parse-entities/decode-entity.js13
-rw-r--r--tools/node_modules/eslint/node_modules/parse-entities/index.js451
-rw-r--r--tools/node_modules/eslint/node_modules/parse-entities/license22
-rw-r--r--tools/node_modules/eslint/node_modules/parse-entities/package.json99
-rw-r--r--tools/node_modules/eslint/node_modules/parse-entities/readme.md217
-rw-r--r--tools/node_modules/eslint/node_modules/picocolors/LICENSE15
-rw-r--r--tools/node_modules/eslint/node_modules/picocolors/README.md21
-rw-r--r--tools/node_modules/eslint/node_modules/picocolors/package.json25
-rw-r--r--tools/node_modules/eslint/node_modules/picocolors/picocolors.browser.js4
-rw-r--r--tools/node_modules/eslint/node_modules/picocolors/picocolors.js58
-rw-r--r--tools/node_modules/eslint/node_modules/safe-buffer/LICENSE21
-rw-r--r--tools/node_modules/eslint/node_modules/safe-buffer/README.md584
-rw-r--r--tools/node_modules/eslint/node_modules/safe-buffer/index.js62
-rw-r--r--tools/node_modules/eslint/node_modules/safe-buffer/package.json37
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/LICENSE28
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/README.md729
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js3091
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/dist/source-map.js3090
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js2
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/array-set.js121
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js140
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/base64.js67
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js111
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js79
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js114
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js1082
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js416
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/source-node.js413
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/lib/util.js417
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/package.json72
-rw-r--r--tools/node_modules/eslint/node_modules/source-map/source-map.js8
-rw-r--r--tools/node_modules/eslint/node_modules/to-fast-properties/index.js27
-rw-r--r--tools/node_modules/eslint/node_modules/to-fast-properties/license10
-rw-r--r--tools/node_modules/eslint/node_modules/to-fast-properties/package.json35
-rw-r--r--tools/node_modules/eslint/node_modules/to-fast-properties/readme.md37
-rw-r--r--tools/node_modules/eslint/node_modules/unist-util-stringify-position/index.js50
-rw-r--r--tools/node_modules/eslint/node_modules/unist-util-stringify-position/license22
-rw-r--r--tools/node_modules/eslint/node_modules/unist-util-stringify-position/package.json84
-rw-r--r--tools/node_modules/eslint/node_modules/unist-util-stringify-position/readme.md140
-rw-r--r--tools/node_modules/eslint/package.json5
1656 files changed, 138083 insertions, 1 deletions
diff --git a/tools/node_modules/eslint/node_modules/@babel/code-frame/LICENSE b/tools/node_modules/eslint/node_modules/@babel/code-frame/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/code-frame/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/code-frame/README.md b/tools/node_modules/eslint/node_modules/@babel/code-frame/README.md
new file mode 100644
index 0000000000..08cacb0477
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/code-frame/README.md
@@ -0,0 +1,19 @@
+# @babel/code-frame
+
+> Generate errors that contain a code frame that point to source locations.
+
+See our website [@babel/code-frame](https://babeljs.io/docs/en/babel-code-frame) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/code-frame
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/code-frame --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/code-frame/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/code-frame/lib/index.js
new file mode 100644
index 0000000000..cba3f83792
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/code-frame/lib/index.js
@@ -0,0 +1,163 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.codeFrameColumns = codeFrameColumns;
+exports.default = _default;
+
+var _highlight = require("@babel/highlight");
+
+let deprecationWarningShown = false;
+
+function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+}
+
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+
+function getMarkerLines(loc, source, opts) {
+ const startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ const endLoc = Object.assign({}, startLoc, loc.end);
+ const {
+ linesAbove = 2,
+ linesBelow = 3
+ } = opts || {};
+ const startLine = startLoc.line;
+ const startColumn = startLoc.column;
+ const endLine = endLoc.line;
+ const endColumn = endLoc.column;
+ let start = Math.max(startLine - (linesAbove + 1), 0);
+ let end = Math.min(source.length, endLine + linesBelow);
+
+ if (startLine === -1) {
+ start = 0;
+ }
+
+ if (endLine === -1) {
+ end = source.length;
+ }
+
+ const lineDiff = endLine - startLine;
+ const markerLines = {};
+
+ if (lineDiff) {
+ for (let i = 0; i <= lineDiff; i++) {
+ const lineNumber = i + startLine;
+
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ const sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ const sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+
+ return {
+ start,
+ end,
+ markerLines
+ };
+}
+
+function codeFrameColumns(rawLines, loc, opts = {}) {
+ const highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight.shouldHighlight)(opts);
+ const chalk = (0, _highlight.getChalk)(opts);
+ const defs = getDefs(chalk);
+
+ const maybeHighlight = (chalkFn, string) => {
+ return highlighted ? chalkFn(string) : string;
+ };
+
+ const lines = rawLines.split(NEWLINE);
+ const {
+ start,
+ end,
+ markerLines
+ } = getMarkerLines(loc, lines, opts);
+ const hasColumns = loc.start && typeof loc.start.column === "number";
+ const numberMaxWidth = String(end).length;
+ const highlightedLines = highlighted ? (0, _highlight.default)(rawLines, opts) : rawLines;
+ let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
+ const number = start + 1 + index;
+ const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ const gutter = ` ${paddedNumber} |`;
+ const hasMarker = markerLines[number];
+ const lastMarkerLine = !markerLines[number + 1];
+
+ if (hasMarker) {
+ let markerLine = "";
+
+ if (Array.isArray(hasMarker)) {
+ const markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ const numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? ` ${line}` : "", markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line.length > 0 ? ` ${line}` : ""}`;
+ }
+ }).join("\n");
+
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
+
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+}
+
+function _default(rawLines, lineNumber, colNumber, opts = {}) {
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ const message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ const deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+
+ colNumber = Math.max(colNumber, 0);
+ const location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json b/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json
new file mode 100644
index 0000000000..fddb275964
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/code-frame/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@babel/code-frame",
+ "version": "7.16.0",
+ "description": "Generate errors that contain a code frame that point to source locations.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-code-frame",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-code-frame"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/highlight": "^7.16.0"
+ },
+ "devDependencies": {
+ "@types/chalk": "^2.0.0",
+ "chalk": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/LICENSE b/tools/node_modules/eslint/node_modules/@babel/compat-data/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/corejs2-built-ins.js b/tools/node_modules/eslint/node_modules/@babel/compat-data/corejs2-built-ins.js
new file mode 100644
index 0000000000..68ce97ff83
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/corejs2-built-ins.js
@@ -0,0 +1 @@
+module.exports = require("./data/corejs2-built-ins.json");
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/corejs3-shipped-proposals.js b/tools/node_modules/eslint/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
new file mode 100644
index 0000000000..6a85b4d974
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/corejs3-shipped-proposals.js
@@ -0,0 +1 @@
+module.exports = require("./data/corejs3-shipped-proposals.json");
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json
new file mode 100644
index 0000000000..72c5f3ad7c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs2-built-ins.json
@@ -0,0 +1,1770 @@
+{
+ "es6.array.copy-within": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "32",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.every": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.fill": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.filter": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.array.find": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.find-index": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es7.array.flat-map": {
+ "chrome": "69",
+ "opera": "56",
+ "edge": "79",
+ "firefox": "62",
+ "safari": "12",
+ "node": "11",
+ "ios": "12",
+ "samsung": "10",
+ "electron": "4.0"
+ },
+ "es6.array.for-each": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.from": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "36",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es7.array.includes": {
+ "chrome": "47",
+ "opera": "34",
+ "edge": "14",
+ "firefox": "43",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "es6.array.index-of": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.is-array": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.iterator": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "12",
+ "firefox": "60",
+ "safari": "9",
+ "node": "10",
+ "ios": "9",
+ "samsung": "9",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es6.array.last-index-of": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.map": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.array.of": {
+ "chrome": "45",
+ "opera": "32",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.31"
+ },
+ "es6.array.reduce": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.reduce-right": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.slice": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.array.some": {
+ "chrome": "5",
+ "opera": "10.10",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.array.sort": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "12",
+ "firefox": "5",
+ "safari": "12",
+ "node": "10",
+ "ie": "9",
+ "ios": "12",
+ "samsung": "8",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es6.array.species": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.date.now": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.date.to-iso-string": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3.5",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.date.to-json": {
+ "chrome": "5",
+ "opera": "12.10",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "10",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "10",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.date.to-primitive": {
+ "chrome": "47",
+ "opera": "34",
+ "edge": "15",
+ "firefox": "44",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "es6.date.to-string": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "10",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.function.bind": {
+ "chrome": "7",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.function.has-instance": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "50",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.function.name": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "14",
+ "firefox": "2",
+ "safari": "4",
+ "node": "0.10",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.map": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.math.acosh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.asinh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.atanh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.cbrt": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.clz32": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.cosh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.expm1": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.fround": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "26",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.hypot": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "27",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.imul": {
+ "chrome": "30",
+ "opera": "17",
+ "edge": "12",
+ "firefox": "23",
+ "safari": "7",
+ "node": "0.12",
+ "android": "4.4",
+ "ios": "7",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.log1p": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.log10": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.log2": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.sign": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.sinh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.tanh": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.math.trunc": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "7.1",
+ "node": "0.12",
+ "ios": "8",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.constructor": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "36",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.number.epsilon": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "electron": "0.20"
+ },
+ "es6.number.is-finite": {
+ "chrome": "19",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "16",
+ "safari": "9",
+ "node": "0.12",
+ "android": "4.1",
+ "ios": "9",
+ "samsung": "1.5",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.is-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "16",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.is-nan": {
+ "chrome": "19",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "15",
+ "safari": "9",
+ "node": "0.12",
+ "android": "4.1",
+ "ios": "9",
+ "samsung": "1.5",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.is-safe-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "32",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.max-safe-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.min-safe-integer": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.number.parse-float": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "electron": "0.20"
+ },
+ "es6.number.parse-int": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "25",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "2",
+ "electron": "0.20"
+ },
+ "es6.object.assign": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "36",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.object.create": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.object.define-getter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "16",
+ "firefox": "48",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es7.object.define-setter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "16",
+ "firefox": "48",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.object.define-property": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.object.define-properties": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.object.entries": {
+ "chrome": "54",
+ "opera": "41",
+ "edge": "14",
+ "firefox": "47",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.4"
+ },
+ "es6.object.freeze": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.get-own-property-descriptor": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es7.object.get-own-property-descriptors": {
+ "chrome": "54",
+ "opera": "41",
+ "edge": "15",
+ "firefox": "50",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.4"
+ },
+ "es6.object.get-own-property-names": {
+ "chrome": "40",
+ "opera": "27",
+ "edge": "12",
+ "firefox": "33",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.object.get-prototype-of": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es7.object.lookup-getter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "79",
+ "firefox": "36",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es7.object.lookup-setter": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "79",
+ "firefox": "36",
+ "safari": "9",
+ "node": "8.10",
+ "ios": "9",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.object.prevent-extensions": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.to-string": {
+ "chrome": "57",
+ "opera": "44",
+ "edge": "15",
+ "firefox": "51",
+ "safari": "10",
+ "node": "8",
+ "ios": "10",
+ "samsung": "7",
+ "electron": "1.7"
+ },
+ "es6.object.is": {
+ "chrome": "19",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "22",
+ "safari": "9",
+ "node": "0.12",
+ "android": "4.1",
+ "ios": "9",
+ "samsung": "1.5",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.object.is-frozen": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.is-sealed": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.is-extensible": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.keys": {
+ "chrome": "40",
+ "opera": "27",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.object.seal": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "35",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "rhino": "1.7.13",
+ "electron": "0.30"
+ },
+ "es6.object.set-prototype-of": {
+ "chrome": "34",
+ "opera": "21",
+ "edge": "12",
+ "firefox": "31",
+ "safari": "9",
+ "node": "0.12",
+ "ie": "11",
+ "ios": "9",
+ "samsung": "2",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.object.values": {
+ "chrome": "54",
+ "opera": "41",
+ "edge": "14",
+ "firefox": "47",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.4"
+ },
+ "es6.promise": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "14",
+ "firefox": "45",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es7.promise.finally": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "18",
+ "firefox": "58",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.reflect.apply": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.construct": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.define-property": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.delete-property": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.get": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.get-own-property-descriptor": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.get-prototype-of": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.has": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.is-extensible": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.own-keys": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.prevent-extensions": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.set": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.reflect.set-prototype-of": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "42",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.regexp.constructor": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "40",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.regexp.flags": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "79",
+ "firefox": "37",
+ "safari": "9",
+ "node": "6",
+ "ios": "9",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "es6.regexp.match": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "1.1"
+ },
+ "es6.regexp.replace": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.regexp.split": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.regexp.search": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "49",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "1.1"
+ },
+ "es6.regexp.to-string": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "79",
+ "firefox": "39",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "es6.set": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.symbol": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "79",
+ "firefox": "51",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es7.symbol.async-iterator": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "79",
+ "firefox": "57",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "es6.string.anchor": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.big": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.blink": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.bold": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.code-point-at": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.ends-with": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.fixed": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.fontcolor": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.fontsize": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.from-code-point": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.includes": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "40",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.italics": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.iterator": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "36",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.string.link": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es7.string.pad-start": {
+ "chrome": "57",
+ "opera": "44",
+ "edge": "15",
+ "firefox": "48",
+ "safari": "10",
+ "node": "8",
+ "ios": "10",
+ "samsung": "7",
+ "rhino": "1.7.13",
+ "electron": "1.7"
+ },
+ "es7.string.pad-end": {
+ "chrome": "57",
+ "opera": "44",
+ "edge": "15",
+ "firefox": "48",
+ "safari": "10",
+ "node": "8",
+ "ios": "10",
+ "samsung": "7",
+ "rhino": "1.7.13",
+ "electron": "1.7"
+ },
+ "es6.string.raw": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "es6.string.repeat": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "24",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.small": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.starts-with": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "29",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "rhino": "1.7.13",
+ "electron": "0.21"
+ },
+ "es6.string.strike": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.sub": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.sup": {
+ "chrome": "5",
+ "opera": "15",
+ "edge": "12",
+ "firefox": "17",
+ "safari": "6",
+ "node": "0.10",
+ "android": "4",
+ "ios": "7",
+ "phantom": "2",
+ "samsung": "1",
+ "electron": "0.20"
+ },
+ "es6.string.trim": {
+ "chrome": "5",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "3.5",
+ "safari": "4",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es7.string.trim-left": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "61",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "9",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es7.string.trim-right": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "61",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "9",
+ "rhino": "1.7.13",
+ "electron": "3.0"
+ },
+ "es6.typed.array-buffer": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.data-view": {
+ "chrome": "5",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "15",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "10",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "es6.typed.int8-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint8-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint8-clamped-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.int16-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint16-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.int32-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.uint32-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.float32-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.typed.float64-array": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "13",
+ "firefox": "48",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.weak-map": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "9",
+ "node": "6.5",
+ "ios": "9",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "es6.weak-set": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "9",
+ "node": "6.5",
+ "ios": "9",
+ "samsung": "5",
+ "electron": "1.2"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
new file mode 100644
index 0000000000..7ce01ed934
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/corejs3-shipped-proposals.json
@@ -0,0 +1,5 @@
+[
+ "esnext.global-this",
+ "esnext.promise.all-settled",
+ "esnext.string.match-all"
+]
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/native-modules.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/native-modules.json
new file mode 100644
index 0000000000..bf634997ee
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/native-modules.json
@@ -0,0 +1,18 @@
+{
+ "es6.module": {
+ "chrome": "61",
+ "and_chr": "61",
+ "edge": "16",
+ "firefox": "60",
+ "and_ff": "60",
+ "node": "13.2.0",
+ "opera": "48",
+ "op_mob": "48",
+ "safari": "10.1",
+ "ios": "10.3",
+ "samsung": "8.2",
+ "android": "61",
+ "electron": "2.0",
+ "ios_saf": "10.3"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/overlapping-plugins.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/overlapping-plugins.json
new file mode 100644
index 0000000000..6ad09e4324
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/overlapping-plugins.json
@@ -0,0 +1,22 @@
+{
+ "transform-async-to-generator": [
+ "bugfix/transform-async-arrows-in-class"
+ ],
+ "transform-parameters": [
+ "bugfix/transform-edge-default-parameters",
+ "bugfix/transform-safari-id-destructuring-collision-in-function-expression"
+ ],
+ "transform-function-name": [
+ "bugfix/transform-edge-function-name"
+ ],
+ "transform-block-scoping": [
+ "bugfix/transform-safari-block-shadowing",
+ "bugfix/transform-safari-for-shadowing"
+ ],
+ "transform-template-literals": [
+ "bugfix/transform-tagged-template-caching"
+ ],
+ "proposal-optional-chaining": [
+ "bugfix/transform-v8-spread-parameters-in-optional-chaining"
+ ]
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json
new file mode 100644
index 0000000000..dcac53562c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugin-bugfixes.json
@@ -0,0 +1,157 @@
+{
+ "transform-async-to-generator": {
+ "chrome": "55",
+ "opera": "42",
+ "edge": "15",
+ "firefox": "52",
+ "safari": "10.1",
+ "node": "7.6",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.6"
+ },
+ "bugfix/transform-async-arrows-in-class": {
+ "chrome": "55",
+ "opera": "42",
+ "edge": "15",
+ "firefox": "52",
+ "safari": "11",
+ "node": "7.6",
+ "ios": "11",
+ "samsung": "6",
+ "electron": "1.6"
+ },
+ "transform-parameters": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "bugfix/transform-edge-default-parameters": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "18",
+ "firefox": "52",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "transform-function-name": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "14",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "bugfix/transform-edge-function-name": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "79",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-block-scoping": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "14",
+ "firefox": "51",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "bugfix/transform-safari-block-shadowing": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "44",
+ "safari": "11",
+ "node": "6",
+ "ie": "11",
+ "ios": "11",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "bugfix/transform-safari-for-shadowing": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "12",
+ "firefox": "4",
+ "safari": "11",
+ "node": "6",
+ "ie": "11",
+ "ios": "11",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.37"
+ },
+ "bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "14",
+ "firefox": "2",
+ "node": "6",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.37"
+ },
+ "transform-template-literals": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "13",
+ "firefox": "34",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "bugfix/transform-tagged-template-caching": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "13",
+ "node": "4",
+ "ios": "13",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "proposal-optional-chaining": {
+ "chrome": "80",
+ "opera": "67",
+ "edge": "80",
+ "firefox": "74",
+ "safari": "13.1",
+ "node": "14",
+ "ios": "13.4",
+ "samsung": "13",
+ "electron": "8.0"
+ },
+ "bugfix/transform-v8-spread-parameters-in-optional-chaining": {
+ "chrome": "91",
+ "opera": "77",
+ "edge": "91",
+ "firefox": "74",
+ "safari": "13.1",
+ "node": "16.9",
+ "ios": "13.4",
+ "electron": "13.0"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json
new file mode 100644
index 0000000000..ce3f3f3fd9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/data/plugins.json
@@ -0,0 +1,473 @@
+{
+ "proposal-class-static-block": {
+ "chrome": "94",
+ "opera": "80",
+ "edge": "94",
+ "firefox": "93",
+ "node": "16.11"
+ },
+ "proposal-private-property-in-object": {
+ "chrome": "91",
+ "opera": "77",
+ "edge": "91",
+ "firefox": "90",
+ "safari": "15",
+ "node": "16.9",
+ "ios": "15",
+ "electron": "13.0"
+ },
+ "proposal-class-properties": {
+ "chrome": "74",
+ "opera": "62",
+ "edge": "79",
+ "firefox": "90",
+ "safari": "14.1",
+ "node": "12",
+ "ios": "15",
+ "samsung": "11",
+ "electron": "6.0"
+ },
+ "proposal-private-methods": {
+ "chrome": "84",
+ "opera": "70",
+ "edge": "84",
+ "firefox": "90",
+ "safari": "15",
+ "node": "14.6",
+ "ios": "15",
+ "samsung": "14",
+ "electron": "10.0"
+ },
+ "proposal-numeric-separator": {
+ "chrome": "75",
+ "opera": "62",
+ "edge": "79",
+ "firefox": "70",
+ "safari": "13",
+ "node": "12.5",
+ "ios": "13",
+ "samsung": "11",
+ "electron": "6.0"
+ },
+ "proposal-logical-assignment-operators": {
+ "chrome": "85",
+ "opera": "71",
+ "edge": "85",
+ "firefox": "79",
+ "safari": "14",
+ "node": "15",
+ "ios": "14",
+ "samsung": "14",
+ "electron": "10.0"
+ },
+ "proposal-nullish-coalescing-operator": {
+ "chrome": "80",
+ "opera": "67",
+ "edge": "80",
+ "firefox": "72",
+ "safari": "13.1",
+ "node": "14",
+ "ios": "13.4",
+ "samsung": "13",
+ "electron": "8.0"
+ },
+ "proposal-optional-chaining": {
+ "chrome": "91",
+ "opera": "77",
+ "edge": "91",
+ "firefox": "74",
+ "safari": "13.1",
+ "node": "16.9",
+ "ios": "13.4",
+ "electron": "13.0"
+ },
+ "proposal-json-strings": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "62",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "proposal-optional-catch-binding": {
+ "chrome": "66",
+ "opera": "53",
+ "edge": "79",
+ "firefox": "58",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "transform-parameters": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "18",
+ "firefox": "53",
+ "node": "6",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "proposal-async-generator-functions": {
+ "chrome": "63",
+ "opera": "50",
+ "edge": "79",
+ "firefox": "57",
+ "safari": "12",
+ "node": "10",
+ "ios": "12",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "proposal-object-rest-spread": {
+ "chrome": "60",
+ "opera": "47",
+ "edge": "79",
+ "firefox": "55",
+ "safari": "11.1",
+ "node": "8.3",
+ "ios": "11.3",
+ "samsung": "8",
+ "electron": "2.0"
+ },
+ "transform-dotall-regex": {
+ "chrome": "62",
+ "opera": "49",
+ "edge": "79",
+ "firefox": "78",
+ "safari": "11.1",
+ "node": "8.10",
+ "ios": "11.3",
+ "samsung": "8",
+ "electron": "3.0"
+ },
+ "proposal-unicode-property-regex": {
+ "chrome": "64",
+ "opera": "51",
+ "edge": "79",
+ "firefox": "78",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "transform-named-capturing-groups-regex": {
+ "chrome": "64",
+ "opera": "51",
+ "edge": "79",
+ "firefox": "78",
+ "safari": "11.1",
+ "node": "10",
+ "ios": "11.3",
+ "samsung": "9",
+ "electron": "3.0"
+ },
+ "transform-async-to-generator": {
+ "chrome": "55",
+ "opera": "42",
+ "edge": "15",
+ "firefox": "52",
+ "safari": "11",
+ "node": "7.6",
+ "ios": "11",
+ "samsung": "6",
+ "electron": "1.6"
+ },
+ "transform-exponentiation-operator": {
+ "chrome": "52",
+ "opera": "39",
+ "edge": "14",
+ "firefox": "52",
+ "safari": "10.1",
+ "node": "7",
+ "ios": "10.3",
+ "samsung": "6",
+ "electron": "1.3"
+ },
+ "transform-template-literals": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "13",
+ "firefox": "34",
+ "safari": "13",
+ "node": "4",
+ "ios": "13",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "transform-literals": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "53",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "electron": "0.30"
+ },
+ "transform-function-name": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "79",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-arrow-functions": {
+ "chrome": "47",
+ "opera": "34",
+ "edge": "13",
+ "firefox": "43",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "rhino": "1.7.13",
+ "electron": "0.36"
+ },
+ "transform-block-scoped-functions": {
+ "chrome": "41",
+ "opera": "28",
+ "edge": "12",
+ "firefox": "46",
+ "safari": "10",
+ "node": "4",
+ "ie": "11",
+ "ios": "10",
+ "samsung": "3.4",
+ "electron": "0.21"
+ },
+ "transform-classes": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "13",
+ "firefox": "45",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-object-super": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "13",
+ "firefox": "45",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-shorthand-properties": {
+ "chrome": "43",
+ "opera": "30",
+ "edge": "12",
+ "firefox": "33",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "electron": "0.27"
+ },
+ "transform-duplicate-keys": {
+ "chrome": "42",
+ "opera": "29",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "3.4",
+ "electron": "0.25"
+ },
+ "transform-computed-properties": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "34",
+ "safari": "7.1",
+ "node": "4",
+ "ios": "8",
+ "samsung": "4",
+ "electron": "0.30"
+ },
+ "transform-for-of": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-sticky-regex": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "13",
+ "firefox": "3",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "transform-unicode-escapes": {
+ "chrome": "44",
+ "opera": "31",
+ "edge": "12",
+ "firefox": "53",
+ "safari": "9",
+ "node": "4",
+ "ios": "9",
+ "samsung": "4",
+ "electron": "0.30"
+ },
+ "transform-unicode-regex": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "13",
+ "firefox": "46",
+ "safari": "12",
+ "node": "6",
+ "ios": "12",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "transform-spread": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "13",
+ "firefox": "45",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-destructuring": {
+ "chrome": "51",
+ "opera": "38",
+ "edge": "15",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6.5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.2"
+ },
+ "transform-block-scoping": {
+ "chrome": "49",
+ "opera": "36",
+ "edge": "14",
+ "firefox": "51",
+ "safari": "11",
+ "node": "6",
+ "ios": "11",
+ "samsung": "5",
+ "electron": "0.37"
+ },
+ "transform-typeof-symbol": {
+ "chrome": "38",
+ "opera": "25",
+ "edge": "12",
+ "firefox": "36",
+ "safari": "9",
+ "node": "0.12",
+ "ios": "9",
+ "samsung": "3",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "transform-new-target": {
+ "chrome": "46",
+ "opera": "33",
+ "edge": "14",
+ "firefox": "41",
+ "safari": "10",
+ "node": "5",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "0.36"
+ },
+ "transform-regenerator": {
+ "chrome": "50",
+ "opera": "37",
+ "edge": "13",
+ "firefox": "53",
+ "safari": "10",
+ "node": "6",
+ "ios": "10",
+ "samsung": "5",
+ "electron": "1.1"
+ },
+ "transform-member-expression-literals": {
+ "chrome": "7",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "transform-property-literals": {
+ "chrome": "7",
+ "opera": "12",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "5.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "transform-reserved-words": {
+ "chrome": "13",
+ "opera": "10.50",
+ "edge": "12",
+ "firefox": "2",
+ "safari": "3.1",
+ "node": "0.10",
+ "ie": "9",
+ "android": "4.4",
+ "ios": "6",
+ "phantom": "2",
+ "samsung": "1",
+ "rhino": "1.7.13",
+ "electron": "0.20"
+ },
+ "proposal-export-namespace-from": {
+ "chrome": "72",
+ "and_chr": "72",
+ "edge": "79",
+ "firefox": "80",
+ "and_ff": "80",
+ "node": "13.2",
+ "opera": "60",
+ "op_mob": "51",
+ "samsung": "11.0",
+ "android": "72",
+ "electron": "5.0"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/native-modules.js b/tools/node_modules/eslint/node_modules/@babel/compat-data/native-modules.js
new file mode 100644
index 0000000000..8e97da4bcf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/native-modules.js
@@ -0,0 +1 @@
+module.exports = require("./data/native-modules.json");
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/overlapping-plugins.js b/tools/node_modules/eslint/node_modules/@babel/compat-data/overlapping-plugins.js
new file mode 100644
index 0000000000..88242e4678
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/overlapping-plugins.js
@@ -0,0 +1 @@
+module.exports = require("./data/overlapping-plugins.json");
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json b/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json
new file mode 100644
index 0000000000..a3c5e3dfea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@babel/compat-data",
+ "version": "7.16.4",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "description": "",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-compat-data"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "exports": {
+ "./plugins": "./plugins.js",
+ "./native-modules": "./native-modules.js",
+ "./corejs2-built-ins": "./corejs2-built-ins.js",
+ "./corejs3-shipped-proposals": "./corejs3-shipped-proposals.js",
+ "./overlapping-plugins": "./overlapping-plugins.js",
+ "./plugin-bugfixes": "./plugin-bugfixes.js"
+ },
+ "scripts": {
+ "build-data": "./scripts/download-compat-table.sh && node ./scripts/build-data.js && node ./scripts/build-modules-support.js && node ./scripts/build-bugfixes-targets.js"
+ },
+ "keywords": [
+ "babel",
+ "compat-table",
+ "compat-data"
+ ],
+ "devDependencies": {
+ "@mdn/browser-compat-data": "^4.0.10",
+ "core-js-compat": "^3.19.1",
+ "electron-to-chromium": "^1.3.893"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/plugin-bugfixes.js b/tools/node_modules/eslint/node_modules/@babel/compat-data/plugin-bugfixes.js
new file mode 100644
index 0000000000..f390181a63
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/plugin-bugfixes.js
@@ -0,0 +1 @@
+module.exports = require("./data/plugin-bugfixes.json");
diff --git a/tools/node_modules/eslint/node_modules/@babel/compat-data/plugins.js b/tools/node_modules/eslint/node_modules/@babel/compat-data/plugins.js
new file mode 100644
index 0000000000..42646edce6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/compat-data/plugins.js
@@ -0,0 +1 @@
+module.exports = require("./data/plugins.json");
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/LICENSE b/tools/node_modules/eslint/node_modules/@babel/core/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/README.md b/tools/node_modules/eslint/node_modules/@babel/core/README.md
new file mode 100644
index 0000000000..9b3a950336
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/README.md
@@ -0,0 +1,19 @@
+# @babel/core
+
+> Babel compiler core.
+
+See our website [@babel/core](https://babeljs.io/docs/en/babel-core) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/core
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/core --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/cache-contexts.js
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js
new file mode 100644
index 0000000000..16c6e9edb9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/caching.js
@@ -0,0 +1,325 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assertSimpleType = assertSimpleType;
+exports.makeStrongCache = makeStrongCache;
+exports.makeStrongCacheSync = makeStrongCacheSync;
+exports.makeWeakCache = makeWeakCache;
+exports.makeWeakCacheSync = makeWeakCacheSync;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _async = require("../gensync-utils/async");
+
+var _util = require("./util");
+
+const synchronize = gen => {
+ return _gensync()(gen).sync;
+};
+
+function* genTrue() {
+ return true;
+}
+
+function makeWeakCache(handler) {
+ return makeCachedFunction(WeakMap, handler);
+}
+
+function makeWeakCacheSync(handler) {
+ return synchronize(makeWeakCache(handler));
+}
+
+function makeStrongCache(handler) {
+ return makeCachedFunction(Map, handler);
+}
+
+function makeStrongCacheSync(handler) {
+ return synchronize(makeStrongCache(handler));
+}
+
+function makeCachedFunction(CallCache, handler) {
+ const callCacheSync = new CallCache();
+ const callCacheAsync = new CallCache();
+ const futureCache = new CallCache();
+ return function* cachedFunction(arg, data) {
+ const asyncContext = yield* (0, _async.isAsync)();
+ const callCache = asyncContext ? callCacheAsync : callCacheSync;
+ const cached = yield* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data);
+ if (cached.valid) return cached.value;
+ const cache = new CacheConfigurator(data);
+ const handlerResult = handler(arg, cache);
+ let finishLock;
+ let value;
+
+ if ((0, _util.isIterableIterator)(handlerResult)) {
+ const gen = handlerResult;
+ value = yield* (0, _async.onFirstPause)(gen, () => {
+ finishLock = setupAsyncLocks(cache, futureCache, arg);
+ });
+ } else {
+ value = handlerResult;
+ }
+
+ updateFunctionCache(callCache, cache, arg, value);
+
+ if (finishLock) {
+ futureCache.delete(arg);
+ finishLock.release(value);
+ }
+
+ return value;
+ };
+}
+
+function* getCachedValue(cache, arg, data) {
+ const cachedValue = cache.get(arg);
+
+ if (cachedValue) {
+ for (const {
+ value,
+ valid
+ } of cachedValue) {
+ if (yield* valid(data)) return {
+ valid: true,
+ value
+ };
+ }
+ }
+
+ return {
+ valid: false,
+ value: null
+ };
+}
+
+function* getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
+ const cached = yield* getCachedValue(callCache, arg, data);
+
+ if (cached.valid) {
+ return cached;
+ }
+
+ if (asyncContext) {
+ const cached = yield* getCachedValue(futureCache, arg, data);
+
+ if (cached.valid) {
+ const value = yield* (0, _async.waitFor)(cached.value.promise);
+ return {
+ valid: true,
+ value
+ };
+ }
+ }
+
+ return {
+ valid: false,
+ value: null
+ };
+}
+
+function setupAsyncLocks(config, futureCache, arg) {
+ const finishLock = new Lock();
+ updateFunctionCache(futureCache, config, arg, finishLock);
+ return finishLock;
+}
+
+function updateFunctionCache(cache, config, arg, value) {
+ if (!config.configured()) config.forever();
+ let cachedValue = cache.get(arg);
+ config.deactivate();
+
+ switch (config.mode()) {
+ case "forever":
+ cachedValue = [{
+ value,
+ valid: genTrue
+ }];
+ cache.set(arg, cachedValue);
+ break;
+
+ case "invalidate":
+ cachedValue = [{
+ value,
+ valid: config.validator()
+ }];
+ cache.set(arg, cachedValue);
+ break;
+
+ case "valid":
+ if (cachedValue) {
+ cachedValue.push({
+ value,
+ valid: config.validator()
+ });
+ } else {
+ cachedValue = [{
+ value,
+ valid: config.validator()
+ }];
+ cache.set(arg, cachedValue);
+ }
+
+ }
+}
+
+class CacheConfigurator {
+ constructor(data) {
+ this._active = true;
+ this._never = false;
+ this._forever = false;
+ this._invalidate = false;
+ this._configured = false;
+ this._pairs = [];
+ this._data = void 0;
+ this._data = data;
+ }
+
+ simple() {
+ return makeSimpleConfigurator(this);
+ }
+
+ mode() {
+ if (this._never) return "never";
+ if (this._forever) return "forever";
+ if (this._invalidate) return "invalidate";
+ return "valid";
+ }
+
+ forever() {
+ if (!this._active) {
+ throw new Error("Cannot change caching after evaluation has completed.");
+ }
+
+ if (this._never) {
+ throw new Error("Caching has already been configured with .never()");
+ }
+
+ this._forever = true;
+ this._configured = true;
+ }
+
+ never() {
+ if (!this._active) {
+ throw new Error("Cannot change caching after evaluation has completed.");
+ }
+
+ if (this._forever) {
+ throw new Error("Caching has already been configured with .forever()");
+ }
+
+ this._never = true;
+ this._configured = true;
+ }
+
+ using(handler) {
+ if (!this._active) {
+ throw new Error("Cannot change caching after evaluation has completed.");
+ }
+
+ if (this._never || this._forever) {
+ throw new Error("Caching has already been configured with .never or .forever()");
+ }
+
+ this._configured = true;
+ const key = handler(this._data);
+ const fn = (0, _async.maybeAsync)(handler, `You appear to be using an async cache handler, but Babel has been called synchronously`);
+
+ if ((0, _async.isThenable)(key)) {
+ return key.then(key => {
+ this._pairs.push([key, fn]);
+
+ return key;
+ });
+ }
+
+ this._pairs.push([key, fn]);
+
+ return key;
+ }
+
+ invalidate(handler) {
+ this._invalidate = true;
+ return this.using(handler);
+ }
+
+ validator() {
+ const pairs = this._pairs;
+ return function* (data) {
+ for (const [key, fn] of pairs) {
+ if (key !== (yield* fn(data))) return false;
+ }
+
+ return true;
+ };
+ }
+
+ deactivate() {
+ this._active = false;
+ }
+
+ configured() {
+ return this._configured;
+ }
+
+}
+
+function makeSimpleConfigurator(cache) {
+ function cacheFn(val) {
+ if (typeof val === "boolean") {
+ if (val) cache.forever();else cache.never();
+ return;
+ }
+
+ return cache.using(() => assertSimpleType(val()));
+ }
+
+ cacheFn.forever = () => cache.forever();
+
+ cacheFn.never = () => cache.never();
+
+ cacheFn.using = cb => cache.using(() => assertSimpleType(cb()));
+
+ cacheFn.invalidate = cb => cache.invalidate(() => assertSimpleType(cb()));
+
+ return cacheFn;
+}
+
+function assertSimpleType(value) {
+ if ((0, _async.isThenable)(value)) {
+ throw new Error(`You appear to be using an async cache handler, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously handle your caching logic.`);
+ }
+
+ if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
+ throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
+ }
+
+ return value;
+}
+
+class Lock {
+ constructor() {
+ this.released = false;
+ this.promise = void 0;
+ this._resolve = void 0;
+ this.promise = new Promise(resolve => {
+ this._resolve = resolve;
+ });
+ }
+
+ release(value) {
+ this.released = true;
+
+ this._resolve(value);
+ }
+
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js
new file mode 100644
index 0000000000..aa5c5f22a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-chain.js
@@ -0,0 +1,564 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildPresetChain = buildPresetChain;
+exports.buildPresetChainWalker = void 0;
+exports.buildRootChain = buildRootChain;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _options = require("./validation/options");
+
+var _patternToRegex = require("./pattern-to-regex");
+
+var _printer = require("./printer");
+
+var _files = require("./files");
+
+var _caching = require("./caching");
+
+var _configDescriptors = require("./config-descriptors");
+
+const debug = _debug()("babel:config:config-chain");
+
+function* buildPresetChain(arg, context) {
+ const chain = yield* buildPresetChainWalker(arg, context);
+ if (!chain) return null;
+ return {
+ plugins: dedupDescriptors(chain.plugins),
+ presets: dedupDescriptors(chain.presets),
+ options: chain.options.map(o => normalizeOptions(o)),
+ files: new Set()
+ };
+}
+
+const buildPresetChainWalker = makeChainWalker({
+ root: preset => loadPresetDescriptors(preset),
+ env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),
+ overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),
+ overridesEnv: (preset, index, envName) => loadPresetOverridesEnvDescriptors(preset)(index)(envName),
+ createLogger: () => () => {}
+});
+exports.buildPresetChainWalker = buildPresetChainWalker;
+const loadPresetDescriptors = (0, _caching.makeWeakCacheSync)(preset => buildRootDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors));
+const loadPresetEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, envName)));
+const loadPresetOverridesDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index)));
+const loadPresetOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(preset => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(preset, preset.alias, _configDescriptors.createUncachedDescriptors, index, envName))));
+
+function* buildRootChain(opts, context) {
+ let configReport, babelRcReport;
+ const programmaticLogger = new _printer.ConfigPrinter();
+ const programmaticChain = yield* loadProgrammaticChain({
+ options: opts,
+ dirname: context.cwd
+ }, context, undefined, programmaticLogger);
+ if (!programmaticChain) return null;
+ const programmaticReport = yield* programmaticLogger.output();
+ let configFile;
+
+ if (typeof opts.configFile === "string") {
+ configFile = yield* (0, _files.loadConfig)(opts.configFile, context.cwd, context.envName, context.caller);
+ } else if (opts.configFile !== false) {
+ configFile = yield* (0, _files.findRootConfig)(context.root, context.envName, context.caller);
+ }
+
+ let {
+ babelrc,
+ babelrcRoots
+ } = opts;
+ let babelrcRootsDirectory = context.cwd;
+ const configFileChain = emptyChain();
+ const configFileLogger = new _printer.ConfigPrinter();
+
+ if (configFile) {
+ const validatedFile = validateConfigFile(configFile);
+ const result = yield* loadFileChain(validatedFile, context, undefined, configFileLogger);
+ if (!result) return null;
+ configReport = yield* configFileLogger.output();
+
+ if (babelrc === undefined) {
+ babelrc = validatedFile.options.babelrc;
+ }
+
+ if (babelrcRoots === undefined) {
+ babelrcRootsDirectory = validatedFile.dirname;
+ babelrcRoots = validatedFile.options.babelrcRoots;
+ }
+
+ mergeChain(configFileChain, result);
+ }
+
+ let ignoreFile, babelrcFile;
+ let isIgnored = false;
+ const fileChain = emptyChain();
+
+ if ((babelrc === true || babelrc === undefined) && typeof context.filename === "string") {
+ const pkgData = yield* (0, _files.findPackageData)(context.filename);
+
+ if (pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)) {
+ ({
+ ignore: ignoreFile,
+ config: babelrcFile
+ } = yield* (0, _files.findRelativeConfig)(pkgData, context.envName, context.caller));
+
+ if (ignoreFile) {
+ fileChain.files.add(ignoreFile.filepath);
+ }
+
+ if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
+ isIgnored = true;
+ }
+
+ if (babelrcFile && !isIgnored) {
+ const validatedFile = validateBabelrcFile(babelrcFile);
+ const babelrcLogger = new _printer.ConfigPrinter();
+ const result = yield* loadFileChain(validatedFile, context, undefined, babelrcLogger);
+
+ if (!result) {
+ isIgnored = true;
+ } else {
+ babelRcReport = yield* babelrcLogger.output();
+ mergeChain(fileChain, result);
+ }
+ }
+
+ if (babelrcFile && isIgnored) {
+ fileChain.files.add(babelrcFile.filepath);
+ }
+ }
+ }
+
+ if (context.showConfig) {
+ console.log(`Babel configs on "${context.filename}" (ascending priority):\n` + [configReport, babelRcReport, programmaticReport].filter(x => !!x).join("\n\n") + "\n-----End Babel configs-----");
+ }
+
+ const chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
+ return {
+ plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
+ presets: isIgnored ? [] : dedupDescriptors(chain.presets),
+ options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)),
+ fileHandling: isIgnored ? "ignored" : "transpile",
+ ignore: ignoreFile || undefined,
+ babelrc: babelrcFile || undefined,
+ config: configFile || undefined,
+ files: chain.files
+ };
+}
+
+function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
+ if (typeof babelrcRoots === "boolean") return babelrcRoots;
+ const absoluteRoot = context.root;
+
+ if (babelrcRoots === undefined) {
+ return pkgData.directories.indexOf(absoluteRoot) !== -1;
+ }
+
+ let babelrcPatterns = babelrcRoots;
+
+ if (!Array.isArray(babelrcPatterns)) {
+ babelrcPatterns = [babelrcPatterns];
+ }
+
+ babelrcPatterns = babelrcPatterns.map(pat => {
+ return typeof pat === "string" ? _path().resolve(babelrcRootsDirectory, pat) : pat;
+ });
+
+ if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
+ return pkgData.directories.indexOf(absoluteRoot) !== -1;
+ }
+
+ return babelrcPatterns.some(pat => {
+ if (typeof pat === "string") {
+ pat = (0, _patternToRegex.default)(pat, babelrcRootsDirectory);
+ }
+
+ return pkgData.directories.some(directory => {
+ return matchPattern(pat, babelrcRootsDirectory, directory, context);
+ });
+ });
+}
+
+const validateConfigFile = (0, _caching.makeWeakCacheSync)(file => ({
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: (0, _options.validate)("configfile", file.options)
+}));
+const validateBabelrcFile = (0, _caching.makeWeakCacheSync)(file => ({
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: (0, _options.validate)("babelrcfile", file.options)
+}));
+const validateExtendFile = (0, _caching.makeWeakCacheSync)(file => ({
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: (0, _options.validate)("extendsfile", file.options)
+}));
+const loadProgrammaticChain = makeChainWalker({
+ root: input => buildRootDescriptors(input, "base", _configDescriptors.createCachedDescriptors),
+ env: (input, envName) => buildEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, envName),
+ overrides: (input, index) => buildOverrideDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index),
+ overridesEnv: (input, index, envName) => buildOverrideEnvDescriptors(input, "base", _configDescriptors.createCachedDescriptors, index, envName),
+ createLogger: (input, context, baseLogger) => buildProgrammaticLogger(input, context, baseLogger)
+});
+const loadFileChainWalker = makeChainWalker({
+ root: file => loadFileDescriptors(file),
+ env: (file, envName) => loadFileEnvDescriptors(file)(envName),
+ overrides: (file, index) => loadFileOverridesDescriptors(file)(index),
+ overridesEnv: (file, index, envName) => loadFileOverridesEnvDescriptors(file)(index)(envName),
+ createLogger: (file, context, baseLogger) => buildFileLogger(file.filepath, context, baseLogger)
+});
+
+function* loadFileChain(input, context, files, baseLogger) {
+ const chain = yield* loadFileChainWalker(input, context, files, baseLogger);
+
+ if (chain) {
+ chain.files.add(input.filepath);
+ }
+
+ return chain;
+}
+
+const loadFileDescriptors = (0, _caching.makeWeakCacheSync)(file => buildRootDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors));
+const loadFileEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(envName => buildEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, envName)));
+const loadFileOverridesDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => buildOverrideDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index)));
+const loadFileOverridesEnvDescriptors = (0, _caching.makeWeakCacheSync)(file => (0, _caching.makeStrongCacheSync)(index => (0, _caching.makeStrongCacheSync)(envName => buildOverrideEnvDescriptors(file, file.filepath, _configDescriptors.createUncachedDescriptors, index, envName))));
+
+function buildFileLogger(filepath, context, baseLogger) {
+ if (!baseLogger) {
+ return () => {};
+ }
+
+ return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Config, {
+ filepath
+ });
+}
+
+function buildRootDescriptors({
+ dirname,
+ options
+}, alias, descriptors) {
+ return descriptors(dirname, options, alias);
+}
+
+function buildProgrammaticLogger(_, context, baseLogger) {
+ var _context$caller;
+
+ if (!baseLogger) {
+ return () => {};
+ }
+
+ return baseLogger.configure(context.showConfig, _printer.ChainFormatter.Programmatic, {
+ callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
+ });
+}
+
+function buildEnvDescriptors({
+ dirname,
+ options
+}, alias, descriptors, envName) {
+ const opts = options.env && options.env[envName];
+ return opts ? descriptors(dirname, opts, `${alias}.env["${envName}"]`) : null;
+}
+
+function buildOverrideDescriptors({
+ dirname,
+ options
+}, alias, descriptors, index) {
+ const opts = options.overrides && options.overrides[index];
+ if (!opts) throw new Error("Assertion failure - missing override");
+ return descriptors(dirname, opts, `${alias}.overrides[${index}]`);
+}
+
+function buildOverrideEnvDescriptors({
+ dirname,
+ options
+}, alias, descriptors, index, envName) {
+ const override = options.overrides && options.overrides[index];
+ if (!override) throw new Error("Assertion failure - missing override");
+ const opts = override.env && override.env[envName];
+ return opts ? descriptors(dirname, opts, `${alias}.overrides[${index}].env["${envName}"]`) : null;
+}
+
+function makeChainWalker({
+ root,
+ env,
+ overrides,
+ overridesEnv,
+ createLogger
+}) {
+ return function* (input, context, files = new Set(), baseLogger) {
+ const {
+ dirname
+ } = input;
+ const flattenedConfigs = [];
+ const rootOpts = root(input);
+
+ if (configIsApplicable(rootOpts, dirname, context)) {
+ flattenedConfigs.push({
+ config: rootOpts,
+ envName: undefined,
+ index: undefined
+ });
+ const envOpts = env(input, context.envName);
+
+ if (envOpts && configIsApplicable(envOpts, dirname, context)) {
+ flattenedConfigs.push({
+ config: envOpts,
+ envName: context.envName,
+ index: undefined
+ });
+ }
+
+ (rootOpts.options.overrides || []).forEach((_, index) => {
+ const overrideOps = overrides(input, index);
+
+ if (configIsApplicable(overrideOps, dirname, context)) {
+ flattenedConfigs.push({
+ config: overrideOps,
+ index,
+ envName: undefined
+ });
+ const overrideEnvOpts = overridesEnv(input, index, context.envName);
+
+ if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context)) {
+ flattenedConfigs.push({
+ config: overrideEnvOpts,
+ index,
+ envName: context.envName
+ });
+ }
+ }
+ });
+ }
+
+ if (flattenedConfigs.some(({
+ config: {
+ options: {
+ ignore,
+ only
+ }
+ }
+ }) => shouldIgnore(context, ignore, only, dirname))) {
+ return null;
+ }
+
+ const chain = emptyChain();
+ const logger = createLogger(input, context, baseLogger);
+
+ for (const {
+ config,
+ index,
+ envName
+ } of flattenedConfigs) {
+ if (!(yield* mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger))) {
+ return null;
+ }
+
+ logger(config, index, envName);
+ yield* mergeChainOpts(chain, config);
+ }
+
+ return chain;
+ };
+}
+
+function* mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
+ if (opts.extends === undefined) return true;
+ const file = yield* (0, _files.loadConfig)(opts.extends, dirname, context.envName, context.caller);
+
+ if (files.has(file)) {
+ throw new Error(`Configuration cycle detected loading ${file.filepath}.\n` + `File already loaded following the config chain:\n` + Array.from(files, file => ` - ${file.filepath}`).join("\n"));
+ }
+
+ files.add(file);
+ const fileChain = yield* loadFileChain(validateExtendFile(file), context, files, baseLogger);
+ files.delete(file);
+ if (!fileChain) return false;
+ mergeChain(chain, fileChain);
+ return true;
+}
+
+function mergeChain(target, source) {
+ target.options.push(...source.options);
+ target.plugins.push(...source.plugins);
+ target.presets.push(...source.presets);
+
+ for (const file of source.files) {
+ target.files.add(file);
+ }
+
+ return target;
+}
+
+function* mergeChainOpts(target, {
+ options,
+ plugins,
+ presets
+}) {
+ target.options.push(options);
+ target.plugins.push(...(yield* plugins()));
+ target.presets.push(...(yield* presets()));
+ return target;
+}
+
+function emptyChain() {
+ return {
+ options: [],
+ presets: [],
+ plugins: [],
+ files: new Set()
+ };
+}
+
+function normalizeOptions(opts) {
+ const options = Object.assign({}, opts);
+ delete options.extends;
+ delete options.env;
+ delete options.overrides;
+ delete options.plugins;
+ delete options.presets;
+ delete options.passPerPreset;
+ delete options.ignore;
+ delete options.only;
+ delete options.test;
+ delete options.include;
+ delete options.exclude;
+
+ if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) {
+ options.sourceMaps = options.sourceMap;
+ delete options.sourceMap;
+ }
+
+ return options;
+}
+
+function dedupDescriptors(items) {
+ const map = new Map();
+ const descriptors = [];
+
+ for (const item of items) {
+ if (typeof item.value === "function") {
+ const fnKey = item.value;
+ let nameMap = map.get(fnKey);
+
+ if (!nameMap) {
+ nameMap = new Map();
+ map.set(fnKey, nameMap);
+ }
+
+ let desc = nameMap.get(item.name);
+
+ if (!desc) {
+ desc = {
+ value: item
+ };
+ descriptors.push(desc);
+ if (!item.ownPass) nameMap.set(item.name, desc);
+ } else {
+ desc.value = item;
+ }
+ } else {
+ descriptors.push({
+ value: item
+ });
+ }
+ }
+
+ return descriptors.reduce((acc, desc) => {
+ acc.push(desc.value);
+ return acc;
+ }, []);
+}
+
+function configIsApplicable({
+ options
+}, dirname, context) {
+ return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname));
+}
+
+function configFieldIsApplicable(context, test, dirname) {
+ const patterns = Array.isArray(test) ? test : [test];
+ return matchesPatterns(context, patterns, dirname);
+}
+
+function ignoreListReplacer(_key, value) {
+ if (value instanceof RegExp) {
+ return String(value);
+ }
+
+ return value;
+}
+
+function shouldIgnore(context, ignore, only, dirname) {
+ if (ignore && matchesPatterns(context, ignore, dirname)) {
+ var _context$filename;
+
+ const message = `No config is applied to "${(_context$filename = context.filename) != null ? _context$filename : "(unknown)"}" because it matches one of \`ignore: ${JSON.stringify(ignore, ignoreListReplacer)}\` from "${dirname}"`;
+ debug(message);
+
+ if (context.showConfig) {
+ console.log(message);
+ }
+
+ return true;
+ }
+
+ if (only && !matchesPatterns(context, only, dirname)) {
+ var _context$filename2;
+
+ const message = `No config is applied to "${(_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)"}" because it fails to match one of \`only: ${JSON.stringify(only, ignoreListReplacer)}\` from "${dirname}"`;
+ debug(message);
+
+ if (context.showConfig) {
+ console.log(message);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function matchesPatterns(context, patterns, dirname) {
+ return patterns.some(pattern => matchPattern(pattern, dirname, context.filename, context));
+}
+
+function matchPattern(pattern, dirname, pathToTest, context) {
+ if (typeof pattern === "function") {
+ return !!pattern(pathToTest, {
+ dirname,
+ envName: context.envName,
+ caller: context.caller
+ });
+ }
+
+ if (typeof pathToTest !== "string") {
+ throw new Error(`Configuration contains string/RegExp pattern, but no filename was passed to Babel`);
+ }
+
+ if (typeof pattern === "string") {
+ pattern = (0, _patternToRegex.default)(pattern, dirname);
+ }
+
+ return pattern.test(pathToTest);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js
new file mode 100644
index 0000000000..2f0a7a58ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/config-descriptors.js
@@ -0,0 +1,244 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createCachedDescriptors = createCachedDescriptors;
+exports.createDescriptor = createDescriptor;
+exports.createUncachedDescriptors = createUncachedDescriptors;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _files = require("./files");
+
+var _item = require("./item");
+
+var _caching = require("./caching");
+
+var _resolveTargets = require("./resolve-targets");
+
+function isEqualDescriptor(a, b) {
+ return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved);
+}
+
+function* handlerOf(value) {
+ return value;
+}
+
+function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
+ if (typeof options.browserslistConfigFile === "string") {
+ options.browserslistConfigFile = (0, _resolveTargets.resolveBrowserslistConfigFile)(options.browserslistConfigFile, dirname);
+ }
+
+ return options;
+}
+
+function createCachedDescriptors(dirname, options, alias) {
+ const {
+ plugins,
+ presets,
+ passPerPreset
+ } = options;
+ return {
+ options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
+ plugins: plugins ? () => createCachedPluginDescriptors(plugins, dirname)(alias) : () => handlerOf([]),
+ presets: presets ? () => createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset) : () => handlerOf([])
+ };
+}
+
+function createUncachedDescriptors(dirname, options, alias) {
+ let plugins;
+ let presets;
+ return {
+ options: optionsWithResolvedBrowserslistConfigFile(options, dirname),
+
+ *plugins() {
+ if (!plugins) {
+ plugins = yield* createPluginDescriptors(options.plugins || [], dirname, alias);
+ }
+
+ return plugins;
+ },
+
+ *presets() {
+ if (!presets) {
+ presets = yield* createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset);
+ }
+
+ return presets;
+ }
+
+ };
+}
+
+const PRESET_DESCRIPTOR_CACHE = new WeakMap();
+const createCachedPresetDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
+ const dirname = cache.using(dir => dir);
+ return (0, _caching.makeStrongCacheSync)(alias => (0, _caching.makeStrongCache)(function* (passPerPreset) {
+ const descriptors = yield* createPresetDescriptors(items, dirname, alias, passPerPreset);
+ return descriptors.map(desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc));
+ }));
+});
+const PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
+const createCachedPluginDescriptors = (0, _caching.makeWeakCacheSync)((items, cache) => {
+ const dirname = cache.using(dir => dir);
+ return (0, _caching.makeStrongCache)(function* (alias) {
+ const descriptors = yield* createPluginDescriptors(items, dirname, alias);
+ return descriptors.map(desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc));
+ });
+});
+const DEFAULT_OPTIONS = {};
+
+function loadCachedDescriptor(cache, desc) {
+ const {
+ value,
+ options = DEFAULT_OPTIONS
+ } = desc;
+ if (options === false) return desc;
+ let cacheByOptions = cache.get(value);
+
+ if (!cacheByOptions) {
+ cacheByOptions = new WeakMap();
+ cache.set(value, cacheByOptions);
+ }
+
+ let possibilities = cacheByOptions.get(options);
+
+ if (!possibilities) {
+ possibilities = [];
+ cacheByOptions.set(options, possibilities);
+ }
+
+ if (possibilities.indexOf(desc) === -1) {
+ const matches = possibilities.filter(possibility => isEqualDescriptor(possibility, desc));
+
+ if (matches.length > 0) {
+ return matches[0];
+ }
+
+ possibilities.push(desc);
+ }
+
+ return desc;
+}
+
+function* createPresetDescriptors(items, dirname, alias, passPerPreset) {
+ return yield* createDescriptors("preset", items, dirname, alias, passPerPreset);
+}
+
+function* createPluginDescriptors(items, dirname, alias) {
+ return yield* createDescriptors("plugin", items, dirname, alias);
+}
+
+function* createDescriptors(type, items, dirname, alias, ownPass) {
+ const descriptors = yield* _gensync().all(items.map((item, index) => createDescriptor(item, dirname, {
+ type,
+ alias: `${alias}$${index}`,
+ ownPass: !!ownPass
+ })));
+ assertNoDuplicates(descriptors);
+ return descriptors;
+}
+
+function* createDescriptor(pair, dirname, {
+ type,
+ alias,
+ ownPass
+}) {
+ const desc = (0, _item.getItemDescriptor)(pair);
+
+ if (desc) {
+ return desc;
+ }
+
+ let name;
+ let options;
+ let value = pair;
+
+ if (Array.isArray(value)) {
+ if (value.length === 3) {
+ [value, options, name] = value;
+ } else {
+ [value, options] = value;
+ }
+ }
+
+ let file = undefined;
+ let filepath = null;
+
+ if (typeof value === "string") {
+ if (typeof type !== "string") {
+ throw new Error("To resolve a string-based item, the type of item must be given");
+ }
+
+ const resolver = type === "plugin" ? _files.loadPlugin : _files.loadPreset;
+ const request = value;
+ ({
+ filepath,
+ value
+ } = yield* resolver(value, dirname));
+ file = {
+ request,
+ resolved: filepath
+ };
+ }
+
+ if (!value) {
+ throw new Error(`Unexpected falsy value: ${String(value)}`);
+ }
+
+ if (typeof value === "object" && value.__esModule) {
+ if (value.default) {
+ value = value.default;
+ } else {
+ throw new Error("Must export a default export when using ES6 modules.");
+ }
+ }
+
+ if (typeof value !== "object" && typeof value !== "function") {
+ throw new Error(`Unsupported format: ${typeof value}. Expected an object or a function.`);
+ }
+
+ if (filepath !== null && typeof value === "object" && value) {
+ throw new Error(`Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`);
+ }
+
+ return {
+ name,
+ alias: filepath || alias,
+ value,
+ options,
+ dirname,
+ ownPass,
+ file
+ };
+}
+
+function assertNoDuplicates(items) {
+ const map = new Map();
+
+ for (const item of items) {
+ if (typeof item.value !== "function") continue;
+ let nameMap = map.get(item.value);
+
+ if (!nameMap) {
+ nameMap = new Set();
+ map.set(item.value, nameMap);
+ }
+
+ if (nameMap.has(item.name)) {
+ const conflicts = items.filter(i => i.value === item.value);
+ throw new Error([`Duplicate plugin/preset detected.`, `If you'd like to use two separate instances of a plugin,`, `they need separate names, e.g.`, ``, ` plugins: [`, ` ['some-plugin', {}],`, ` ['some-plugin', {}, 'some unique name'],`, ` ]`, ``, `Duplicates detected are:`, `${JSON.stringify(conflicts, null, 2)}`].join("\n"));
+ }
+
+ nameMap.add(item.name);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js
new file mode 100644
index 0000000000..3834b38163
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js
@@ -0,0 +1,357 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ROOT_CONFIG_FILENAMES = void 0;
+exports.findConfigUpwards = findConfigUpwards;
+exports.findRelativeConfig = findRelativeConfig;
+exports.findRootConfig = findRootConfig;
+exports.loadConfig = loadConfig;
+exports.resolveShowConfigPath = resolveShowConfigPath;
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _fs() {
+ const data = require("fs");
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _json() {
+ const data = require("json5");
+
+ _json = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _caching = require("../caching");
+
+var _configApi = require("../helpers/config-api");
+
+var _utils = require("./utils");
+
+var _moduleTypes = require("./module-types");
+
+var _patternToRegex = require("../pattern-to-regex");
+
+var fs = require("../../gensync-utils/fs");
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const debug = _debug()("babel:config:loading:files:configuration");
+
+const ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json"];
+exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES;
+const RELATIVE_CONFIG_FILENAMES = [".babelrc", ".babelrc.js", ".babelrc.cjs", ".babelrc.mjs", ".babelrc.json"];
+const BABELIGNORE_FILENAME = ".babelignore";
+
+function findConfigUpwards(rootDir) {
+ let dirname = rootDir;
+
+ for (;;) {
+ for (const filename of ROOT_CONFIG_FILENAMES) {
+ if (_fs().existsSync(_path().join(dirname, filename))) {
+ return dirname;
+ }
+ }
+
+ const nextDir = _path().dirname(dirname);
+
+ if (dirname === nextDir) break;
+ dirname = nextDir;
+ }
+
+ return null;
+}
+
+function* findRelativeConfig(packageData, envName, caller) {
+ let config = null;
+ let ignore = null;
+
+ const dirname = _path().dirname(packageData.filepath);
+
+ for (const loc of packageData.directories) {
+ if (!config) {
+ var _packageData$pkg;
+
+ config = yield* loadOneConfig(RELATIVE_CONFIG_FILENAMES, loc, envName, caller, ((_packageData$pkg = packageData.pkg) == null ? void 0 : _packageData$pkg.dirname) === loc ? packageToBabelConfig(packageData.pkg) : null);
+ }
+
+ if (!ignore) {
+ const ignoreLoc = _path().join(loc, BABELIGNORE_FILENAME);
+
+ ignore = yield* readIgnoreConfig(ignoreLoc);
+
+ if (ignore) {
+ debug("Found ignore %o from %o.", ignore.filepath, dirname);
+ }
+ }
+ }
+
+ return {
+ config,
+ ignore
+ };
+}
+
+function findRootConfig(dirname, envName, caller) {
+ return loadOneConfig(ROOT_CONFIG_FILENAMES, dirname, envName, caller);
+}
+
+function* loadOneConfig(names, dirname, envName, caller, previousConfig = null) {
+ const configs = yield* _gensync().all(names.map(filename => readConfig(_path().join(dirname, filename), envName, caller)));
+ const config = configs.reduce((previousConfig, config) => {
+ if (config && previousConfig) {
+ throw new Error(`Multiple configuration files found. Please remove one:\n` + ` - ${_path().basename(previousConfig.filepath)}\n` + ` - ${config.filepath}\n` + `from ${dirname}`);
+ }
+
+ return config || previousConfig;
+ }, previousConfig);
+
+ if (config) {
+ debug("Found configuration %o from %o.", config.filepath, dirname);
+ }
+
+ return config;
+}
+
+function* loadConfig(name, dirname, envName, caller) {
+ const filepath = (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(name, {
+ paths: [dirname]
+ });
+ const conf = yield* readConfig(filepath, envName, caller);
+
+ if (!conf) {
+ throw new Error(`Config file ${filepath} contains no configuration data`);
+ }
+
+ debug("Loaded config %o from %o.", name, dirname);
+ return conf;
+}
+
+function readConfig(filepath, envName, caller) {
+ const ext = _path().extname(filepath);
+
+ return ext === ".js" || ext === ".cjs" || ext === ".mjs" ? readConfigJS(filepath, {
+ envName,
+ caller
+ }) : readConfigJSON5(filepath);
+}
+
+const LOADING_CONFIGS = new Set();
+const readConfigJS = (0, _caching.makeStrongCache)(function* readConfigJS(filepath, cache) {
+ if (!_fs().existsSync(filepath)) {
+ cache.never();
+ return null;
+ }
+
+ if (LOADING_CONFIGS.has(filepath)) {
+ cache.never();
+ debug("Auto-ignoring usage of config %o.", filepath);
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options: {}
+ };
+ }
+
+ let options;
+
+ try {
+ LOADING_CONFIGS.add(filepath);
+ options = yield* (0, _moduleTypes.default)(filepath, "You appear to be using a native ECMAScript module configuration " + "file, which is only supported when running Babel asynchronously.");
+ } catch (err) {
+ err.message = `${filepath}: Error while loading config - ${err.message}`;
+ throw err;
+ } finally {
+ LOADING_CONFIGS.delete(filepath);
+ }
+
+ let assertCache = false;
+
+ if (typeof options === "function") {
+ yield* [];
+ options = options((0, _configApi.makeConfigAPI)(cache));
+ assertCache = true;
+ }
+
+ if (!options || typeof options !== "object" || Array.isArray(options)) {
+ throw new Error(`${filepath}: Configuration should be an exported JavaScript object.`);
+ }
+
+ if (typeof options.then === "function") {
+ throw new Error(`You appear to be using an async configuration, ` + `which your current version of Babel does not support. ` + `We may add support for this in the future, ` + `but if you're on the most recent version of @babel/core and still ` + `seeing this error, then you'll need to synchronously return your config.`);
+ }
+
+ if (assertCache && !cache.configured()) throwConfigError();
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options
+ };
+});
+const packageToBabelConfig = (0, _caching.makeWeakCacheSync)(file => {
+ const babel = file.options["babel"];
+ if (typeof babel === "undefined") return null;
+
+ if (typeof babel !== "object" || Array.isArray(babel) || babel === null) {
+ throw new Error(`${file.filepath}: .babel property must be an object`);
+ }
+
+ return {
+ filepath: file.filepath,
+ dirname: file.dirname,
+ options: babel
+ };
+});
+const readConfigJSON5 = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ let options;
+
+ try {
+ options = _json().parse(content);
+ } catch (err) {
+ err.message = `${filepath}: Error while parsing config - ${err.message}`;
+ throw err;
+ }
+
+ if (!options) throw new Error(`${filepath}: No config detected`);
+
+ if (typeof options !== "object") {
+ throw new Error(`${filepath}: Config returned typeof ${typeof options}`);
+ }
+
+ if (Array.isArray(options)) {
+ throw new Error(`${filepath}: Expected config object but found array`);
+ }
+
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options
+ };
+});
+const readIgnoreConfig = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ const ignoreDir = _path().dirname(filepath);
+
+ const ignorePatterns = content.split("\n").map(line => line.replace(/#(.*?)$/, "").trim()).filter(line => !!line);
+
+ for (const pattern of ignorePatterns) {
+ if (pattern[0] === "!") {
+ throw new Error(`Negation of file paths is not supported.`);
+ }
+ }
+
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ ignore: ignorePatterns.map(pattern => (0, _patternToRegex.default)(pattern, ignoreDir))
+ };
+});
+
+function* resolveShowConfigPath(dirname) {
+ const targetPath = process.env.BABEL_SHOW_CONFIG_FOR;
+
+ if (targetPath != null) {
+ const absolutePath = _path().resolve(dirname, targetPath);
+
+ const stats = yield* fs.stat(absolutePath);
+
+ if (!stats.isFile()) {
+ throw new Error(`${absolutePath}: BABEL_SHOW_CONFIG_FOR must refer to a regular file, directories are not supported.`);
+ }
+
+ return absolutePath;
+ }
+
+ return null;
+}
+
+function throwConfigError() {
+ throw new Error(`\
+Caching was left unconfigured. Babel's plugins, presets, and .babelrc.js files can be configured
+for various types of caching, using the first param of their handler functions:
+
+module.exports = function(api) {
+ // The API exposes the following:
+
+ // Cache the returned value forever and don't call this function again.
+ api.cache(true);
+
+ // Don't cache at all. Not recommended because it will be very slow.
+ api.cache(false);
+
+ // Cached based on the value of some function. If this function returns a value different from
+ // a previously-encountered value, the plugins will re-evaluate.
+ var env = api.cache(() => process.env.NODE_ENV);
+
+ // If testing for a specific env, we recommend specifics to avoid instantiating a plugin for
+ // any possible NODE_ENV value that might come up during plugin execution.
+ var isProd = api.cache(() => process.env.NODE_ENV === "production");
+
+ // .cache(fn) will perform a linear search though instances to find the matching plugin based
+ // based on previous instantiated plugins. If you want to recreate the plugin and discard the
+ // previous instance whenever something changes, you may use:
+ var isProd = api.cache.invalidate(() => process.env.NODE_ENV === "production");
+
+ // Note, we also expose the following more-verbose versions of the above examples:
+ api.cache.forever(); // api.cache(true)
+ api.cache.never(); // api.cache(false)
+ api.cache.using(fn); // api.cache(fn)
+
+ // Return the value that will be cached.
+ return { };
+};`);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js
new file mode 100644
index 0000000000..c0acc2b666
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import.js
@@ -0,0 +1,10 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = import_;
+
+function import_(filepath) {
+ return import(filepath);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js
new file mode 100644
index 0000000000..c73168bfbd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index-browser.js
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ROOT_CONFIG_FILENAMES = void 0;
+exports.findConfigUpwards = findConfigUpwards;
+exports.findPackageData = findPackageData;
+exports.findRelativeConfig = findRelativeConfig;
+exports.findRootConfig = findRootConfig;
+exports.loadConfig = loadConfig;
+exports.loadPlugin = loadPlugin;
+exports.loadPreset = loadPreset;
+exports.resolvePlugin = resolvePlugin;
+exports.resolvePreset = resolvePreset;
+exports.resolveShowConfigPath = resolveShowConfigPath;
+
+function findConfigUpwards(rootDir) {
+ return null;
+}
+
+function* findPackageData(filepath) {
+ return {
+ filepath,
+ directories: [],
+ pkg: null,
+ isPackage: false
+ };
+}
+
+function* findRelativeConfig(pkgData, envName, caller) {
+ return {
+ config: null,
+ ignore: null
+ };
+}
+
+function* findRootConfig(dirname, envName, caller) {
+ return null;
+}
+
+function* loadConfig(name, dirname, envName, caller) {
+ throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);
+}
+
+function* resolveShowConfigPath(dirname) {
+ return null;
+}
+
+const ROOT_CONFIG_FILENAMES = [];
+exports.ROOT_CONFIG_FILENAMES = ROOT_CONFIG_FILENAMES;
+
+function resolvePlugin(name, dirname) {
+ return null;
+}
+
+function resolvePreset(name, dirname) {
+ return null;
+}
+
+function loadPlugin(name, dirname) {
+ throw new Error(`Cannot load plugin ${name} relative to ${dirname} in a browser`);
+}
+
+function loadPreset(name, dirname) {
+ throw new Error(`Cannot load preset ${name} relative to ${dirname} in a browser`);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js
new file mode 100644
index 0000000000..a5d976b306
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/index.js
@@ -0,0 +1,79 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ROOT_CONFIG_FILENAMES", {
+ enumerable: true,
+ get: function () {
+ return _configuration.ROOT_CONFIG_FILENAMES;
+ }
+});
+Object.defineProperty(exports, "findConfigUpwards", {
+ enumerable: true,
+ get: function () {
+ return _configuration.findConfigUpwards;
+ }
+});
+Object.defineProperty(exports, "findPackageData", {
+ enumerable: true,
+ get: function () {
+ return _package.findPackageData;
+ }
+});
+Object.defineProperty(exports, "findRelativeConfig", {
+ enumerable: true,
+ get: function () {
+ return _configuration.findRelativeConfig;
+ }
+});
+Object.defineProperty(exports, "findRootConfig", {
+ enumerable: true,
+ get: function () {
+ return _configuration.findRootConfig;
+ }
+});
+Object.defineProperty(exports, "loadConfig", {
+ enumerable: true,
+ get: function () {
+ return _configuration.loadConfig;
+ }
+});
+Object.defineProperty(exports, "loadPlugin", {
+ enumerable: true,
+ get: function () {
+ return _plugins.loadPlugin;
+ }
+});
+Object.defineProperty(exports, "loadPreset", {
+ enumerable: true,
+ get: function () {
+ return _plugins.loadPreset;
+ }
+});
+Object.defineProperty(exports, "resolvePlugin", {
+ enumerable: true,
+ get: function () {
+ return _plugins.resolvePlugin;
+ }
+});
+Object.defineProperty(exports, "resolvePreset", {
+ enumerable: true,
+ get: function () {
+ return _plugins.resolvePreset;
+ }
+});
+Object.defineProperty(exports, "resolveShowConfigPath", {
+ enumerable: true,
+ get: function () {
+ return _configuration.resolveShowConfigPath;
+ }
+});
+
+var _package = require("./package");
+
+var _configuration = require("./configuration");
+
+var _plugins = require("./plugins");
+
+({}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js
new file mode 100644
index 0000000000..9a37973642
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js
@@ -0,0 +1,104 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loadCjsOrMjsDefault;
+
+var _async = require("../../gensync-utils/async");
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _url() {
+ const data = require("url");
+
+ _url = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+let import_;
+
+try {
+ import_ = require("./import").default;
+} catch (_unused) {}
+
+function* loadCjsOrMjsDefault(filepath, asyncError, fallbackToTranspiledModule = false) {
+ switch (guessJSModuleType(filepath)) {
+ case "cjs":
+ return loadCjsDefault(filepath, fallbackToTranspiledModule);
+
+ case "unknown":
+ try {
+ return loadCjsDefault(filepath, fallbackToTranspiledModule);
+ } catch (e) {
+ if (e.code !== "ERR_REQUIRE_ESM") throw e;
+ }
+
+ case "mjs":
+ if (yield* (0, _async.isAsync)()) {
+ return yield* (0, _async.waitFor)(loadMjsDefault(filepath));
+ }
+
+ throw new Error(asyncError);
+ }
+}
+
+function guessJSModuleType(filename) {
+ switch (_path().extname(filename)) {
+ case ".cjs":
+ return "cjs";
+
+ case ".mjs":
+ return "mjs";
+
+ default:
+ return "unknown";
+ }
+}
+
+function loadCjsDefault(filepath, fallbackToTranspiledModule) {
+ const module = require(filepath);
+
+ return module != null && module.__esModule ? module.default || (fallbackToTranspiledModule ? module : undefined) : module;
+}
+
+function loadMjsDefault(_x) {
+ return _loadMjsDefault.apply(this, arguments);
+}
+
+function _loadMjsDefault() {
+ _loadMjsDefault = _asyncToGenerator(function* (filepath) {
+ if (!import_) {
+ throw new Error("Internal error: Native ECMAScript modules aren't supported" + " by this platform.\n");
+ }
+
+ const module = yield import_((0, _url().pathToFileURL)(filepath));
+ return module.default;
+ });
+ return _loadMjsDefault.apply(this, arguments);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js
new file mode 100644
index 0000000000..0e08bfe331
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/package.js
@@ -0,0 +1,76 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findPackageData = findPackageData;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _utils = require("./utils");
+
+const PACKAGE_FILENAME = "package.json";
+
+function* findPackageData(filepath) {
+ let pkg = null;
+ const directories = [];
+ let isPackage = true;
+
+ let dirname = _path().dirname(filepath);
+
+ while (!pkg && _path().basename(dirname) !== "node_modules") {
+ directories.push(dirname);
+ pkg = yield* readConfigPackage(_path().join(dirname, PACKAGE_FILENAME));
+
+ const nextLoc = _path().dirname(dirname);
+
+ if (dirname === nextLoc) {
+ isPackage = false;
+ break;
+ }
+
+ dirname = nextLoc;
+ }
+
+ return {
+ filepath,
+ directories,
+ pkg,
+ isPackage
+ };
+}
+
+const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => {
+ let options;
+
+ try {
+ options = JSON.parse(content);
+ } catch (err) {
+ err.message = `${filepath}: Error while parsing JSON - ${err.message}`;
+ throw err;
+ }
+
+ if (!options) throw new Error(`${filepath}: No config detected`);
+
+ if (typeof options !== "object") {
+ throw new Error(`${filepath}: Config returned typeof ${typeof options}`);
+ }
+
+ if (Array.isArray(options)) {
+ throw new Error(`${filepath}: Expected config object but found array`);
+ }
+
+ return {
+ filepath,
+ dirname: _path().dirname(filepath),
+ options
+ };
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js
new file mode 100644
index 0000000000..4c1a001fb1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js
@@ -0,0 +1,206 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.loadPlugin = loadPlugin;
+exports.loadPreset = loadPreset;
+exports.resolvePlugin = resolvePlugin;
+exports.resolvePreset = resolvePreset;
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _moduleTypes = require("./module-types");
+
+function _module() {
+ const data = require("module");
+
+ _module = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const debug = _debug()("babel:config:loading:files:plugins");
+
+const EXACT_RE = /^module:/;
+const BABEL_PLUGIN_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-plugin-)/;
+const BABEL_PRESET_PREFIX_RE = /^(?!@|module:|[^/]+\/|babel-preset-)/;
+const BABEL_PLUGIN_ORG_RE = /^(@babel\/)(?!plugin-|[^/]+\/)/;
+const BABEL_PRESET_ORG_RE = /^(@babel\/)(?!preset-|[^/]+\/)/;
+const OTHER_PLUGIN_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-plugin(?:-|\/|$)|[^/]+\/)/;
+const OTHER_PRESET_ORG_RE = /^(@(?!babel\/)[^/]+\/)(?![^/]*babel-preset(?:-|\/|$)|[^/]+\/)/;
+const OTHER_ORG_DEFAULT_RE = /^(@(?!babel$)[^/]+)$/;
+
+function resolvePlugin(name, dirname) {
+ return resolveStandardizedName("plugin", name, dirname);
+}
+
+function resolvePreset(name, dirname) {
+ return resolveStandardizedName("preset", name, dirname);
+}
+
+function* loadPlugin(name, dirname) {
+ const filepath = resolvePlugin(name, dirname);
+
+ if (!filepath) {
+ throw new Error(`Plugin ${name} not found relative to ${dirname}`);
+ }
+
+ const value = yield* requireModule("plugin", filepath);
+ debug("Loaded plugin %o from %o.", name, dirname);
+ return {
+ filepath,
+ value
+ };
+}
+
+function* loadPreset(name, dirname) {
+ const filepath = resolvePreset(name, dirname);
+
+ if (!filepath) {
+ throw new Error(`Preset ${name} not found relative to ${dirname}`);
+ }
+
+ const value = yield* requireModule("preset", filepath);
+ debug("Loaded preset %o from %o.", name, dirname);
+ return {
+ filepath,
+ value
+ };
+}
+
+function standardizeName(type, name) {
+ if (_path().isAbsolute(name)) return name;
+ const isPreset = type === "preset";
+ return name.replace(isPreset ? BABEL_PRESET_PREFIX_RE : BABEL_PLUGIN_PREFIX_RE, `babel-${type}-`).replace(isPreset ? BABEL_PRESET_ORG_RE : BABEL_PLUGIN_ORG_RE, `$1${type}-`).replace(isPreset ? OTHER_PRESET_ORG_RE : OTHER_PLUGIN_ORG_RE, `$1babel-${type}-`).replace(OTHER_ORG_DEFAULT_RE, `$1/babel-${type}`).replace(EXACT_RE, "");
+}
+
+function resolveStandardizedName(type, name, dirname = process.cwd()) {
+ const standardizedName = standardizeName(type, name);
+
+ try {
+ return (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(standardizedName, {
+ paths: [dirname]
+ });
+ } catch (e) {
+ if (e.code !== "MODULE_NOT_FOUND") throw e;
+
+ if (standardizedName !== name) {
+ let resolvedOriginal = false;
+
+ try {
+ (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(name, {
+ paths: [dirname]
+ });
+ resolvedOriginal = true;
+ } catch (_unused) {}
+
+ if (resolvedOriginal) {
+ e.message += `\n- If you want to resolve "${name}", use "module:${name}"`;
+ }
+ }
+
+ let resolvedBabel = false;
+
+ try {
+ (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(standardizeName(type, "@babel/" + name), {
+ paths: [dirname]
+ });
+ resolvedBabel = true;
+ } catch (_unused2) {}
+
+ if (resolvedBabel) {
+ e.message += `\n- Did you mean "@babel/${name}"?`;
+ }
+
+ let resolvedOppositeType = false;
+ const oppositeType = type === "preset" ? "plugin" : "preset";
+
+ try {
+ (((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+ }, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+ })(standardizeName(oppositeType, name), {
+ paths: [dirname]
+ });
+ resolvedOppositeType = true;
+ } catch (_unused3) {}
+
+ if (resolvedOppositeType) {
+ e.message += `\n- Did you accidentally pass a ${oppositeType} as a ${type}?`;
+ }
+
+ throw e;
+ }
+}
+
+const LOADING_MODULES = new Set();
+
+function* requireModule(type, name) {
+ if (LOADING_MODULES.has(name)) {
+ throw new Error(`Reentrant ${type} detected trying to load "${name}". This module is not ignored ` + "and is trying to load itself while compiling itself, leading to a dependency cycle. " + 'We recommend adding it to your "ignore" list in your babelrc, or to a .babelignore.');
+ }
+
+ try {
+ LOADING_MODULES.add(name);
+ return yield* (0, _moduleTypes.default)(name, `You appear to be using a native ECMAScript module ${type}, ` + "which is only supported when running Babel asynchronously.", true);
+ } catch (err) {
+ err.message = `[BABEL]: ${err.message} (While processing: ${name})`;
+ throw err;
+ } finally {
+ LOADING_MODULES.delete(name);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/types.js
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js
new file mode 100644
index 0000000000..6da68c0a73
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/utils.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.makeStaticFileCache = makeStaticFileCache;
+
+var _caching = require("../caching");
+
+var fs = require("../../gensync-utils/fs");
+
+function _fs2() {
+ const data = require("fs");
+
+ _fs2 = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function makeStaticFileCache(fn) {
+ return (0, _caching.makeStrongCache)(function* (filepath, cache) {
+ const cached = cache.invalidate(() => fileMtime(filepath));
+
+ if (cached === null) {
+ return null;
+ }
+
+ return fn(filepath, yield* fs.readFile(filepath, "utf8"));
+ });
+}
+
+function fileMtime(filepath) {
+ if (!_fs2().existsSync(filepath)) return null;
+
+ try {
+ return +_fs2().statSync(filepath).mtime;
+ } catch (e) {
+ if (e.code !== "ENOENT" && e.code !== "ENOTDIR") throw e;
+ }
+
+ return null;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js
new file mode 100644
index 0000000000..a583dd6908
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/full.js
@@ -0,0 +1,338 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _async = require("../gensync-utils/async");
+
+var _util = require("./util");
+
+var context = require("../index");
+
+var _plugin = require("./plugin");
+
+var _item = require("./item");
+
+var _configChain = require("./config-chain");
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _caching = require("./caching");
+
+var _options = require("./validation/options");
+
+var _plugins = require("./validation/plugins");
+
+var _configApi = require("./helpers/config-api");
+
+var _partial = require("./partial");
+
+var Context = require("./cache-contexts");
+
+var _default = _gensync()(function* loadFullConfig(inputOpts) {
+ var _opts$assumptions;
+
+ const result = yield* (0, _partial.default)(inputOpts);
+
+ if (!result) {
+ return null;
+ }
+
+ const {
+ options,
+ context,
+ fileHandling
+ } = result;
+
+ if (fileHandling === "ignored") {
+ return null;
+ }
+
+ const optionDefaults = {};
+ const {
+ plugins,
+ presets
+ } = options;
+
+ if (!plugins || !presets) {
+ throw new Error("Assertion failure - plugins and presets exist");
+ }
+
+ const presetContext = Object.assign({}, context, {
+ targets: options.targets
+ });
+
+ const toDescriptor = item => {
+ const desc = (0, _item.getItemDescriptor)(item);
+
+ if (!desc) {
+ throw new Error("Assertion failure - must be config item");
+ }
+
+ return desc;
+ };
+
+ const presetsDescriptors = presets.map(toDescriptor);
+ const initialPluginsDescriptors = plugins.map(toDescriptor);
+ const pluginDescriptorsByPass = [[]];
+ const passes = [];
+ const ignored = yield* enhanceError(context, function* recursePresetDescriptors(rawPresets, pluginDescriptorsPass) {
+ const presets = [];
+
+ for (let i = 0; i < rawPresets.length; i++) {
+ const descriptor = rawPresets[i];
+
+ if (descriptor.options !== false) {
+ try {
+ if (descriptor.ownPass) {
+ presets.push({
+ preset: yield* loadPresetDescriptor(descriptor, presetContext),
+ pass: []
+ });
+ } else {
+ presets.unshift({
+ preset: yield* loadPresetDescriptor(descriptor, presetContext),
+ pass: pluginDescriptorsPass
+ });
+ }
+ } catch (e) {
+ if (e.code === "BABEL_UNKNOWN_OPTION") {
+ (0, _options.checkNoUnwrappedItemOptionPairs)(rawPresets, i, "preset", e);
+ }
+
+ throw e;
+ }
+ }
+ }
+
+ if (presets.length > 0) {
+ pluginDescriptorsByPass.splice(1, 0, ...presets.map(o => o.pass).filter(p => p !== pluginDescriptorsPass));
+
+ for (const {
+ preset,
+ pass
+ } of presets) {
+ if (!preset) return true;
+ pass.push(...preset.plugins);
+ const ignored = yield* recursePresetDescriptors(preset.presets, pass);
+ if (ignored) return true;
+ preset.options.forEach(opts => {
+ (0, _util.mergeOptions)(optionDefaults, opts);
+ });
+ }
+ }
+ })(presetsDescriptors, pluginDescriptorsByPass[0]);
+ if (ignored) return null;
+ const opts = optionDefaults;
+ (0, _util.mergeOptions)(opts, options);
+ const pluginContext = Object.assign({}, presetContext, {
+ assumptions: (_opts$assumptions = opts.assumptions) != null ? _opts$assumptions : {}
+ });
+ yield* enhanceError(context, function* loadPluginDescriptors() {
+ pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors);
+
+ for (const descs of pluginDescriptorsByPass) {
+ const pass = [];
+ passes.push(pass);
+
+ for (let i = 0; i < descs.length; i++) {
+ const descriptor = descs[i];
+
+ if (descriptor.options !== false) {
+ try {
+ pass.push(yield* loadPluginDescriptor(descriptor, pluginContext));
+ } catch (e) {
+ if (e.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") {
+ (0, _options.checkNoUnwrappedItemOptionPairs)(descs, i, "plugin", e);
+ }
+
+ throw e;
+ }
+ }
+ }
+ }
+ })();
+ opts.plugins = passes[0];
+ opts.presets = passes.slice(1).filter(plugins => plugins.length > 0).map(plugins => ({
+ plugins
+ }));
+ opts.passPerPreset = opts.presets.length > 0;
+ return {
+ options: opts,
+ passes: passes
+ };
+});
+
+exports.default = _default;
+
+function enhanceError(context, fn) {
+ return function* (arg1, arg2) {
+ try {
+ return yield* fn(arg1, arg2);
+ } catch (e) {
+ if (!/^\[BABEL\]/.test(e.message)) {
+ e.message = `[BABEL] ${context.filename || "unknown"}: ${e.message}`;
+ }
+
+ throw e;
+ }
+ };
+}
+
+const makeDescriptorLoader = apiFactory => (0, _caching.makeWeakCache)(function* ({
+ value,
+ options,
+ dirname,
+ alias
+}, cache) {
+ if (options === false) throw new Error("Assertion failure");
+ options = options || {};
+ let item = value;
+
+ if (typeof value === "function") {
+ const factory = (0, _async.maybeAsync)(value, `You appear to be using an async plugin/preset, but Babel has been called synchronously`);
+ const api = Object.assign({}, context, apiFactory(cache));
+
+ try {
+ item = yield* factory(api, options, dirname);
+ } catch (e) {
+ if (alias) {
+ e.message += ` (While processing: ${JSON.stringify(alias)})`;
+ }
+
+ throw e;
+ }
+ }
+
+ if (!item || typeof item !== "object") {
+ throw new Error("Plugin/Preset did not return an object.");
+ }
+
+ if ((0, _async.isThenable)(item)) {
+ yield* [];
+ throw new Error(`You appear to be using a promise as a plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version. ` + `As an alternative, you can prefix the promise with "await". ` + `(While processing: ${JSON.stringify(alias)})`);
+ }
+
+ return {
+ value: item,
+ options,
+ dirname,
+ alias
+ };
+});
+
+const pluginDescriptorLoader = makeDescriptorLoader(_configApi.makePluginAPI);
+const presetDescriptorLoader = makeDescriptorLoader(_configApi.makePresetAPI);
+
+function* loadPluginDescriptor(descriptor, context) {
+ if (descriptor.value instanceof _plugin.default) {
+ if (descriptor.options) {
+ throw new Error("Passed options to an existing Plugin instance will not work.");
+ }
+
+ return descriptor.value;
+ }
+
+ return yield* instantiatePlugin(yield* pluginDescriptorLoader(descriptor, context), context);
+}
+
+const instantiatePlugin = (0, _caching.makeWeakCache)(function* ({
+ value,
+ options,
+ dirname,
+ alias
+}, cache) {
+ const pluginObj = (0, _plugins.validatePluginObject)(value);
+ const plugin = Object.assign({}, pluginObj);
+
+ if (plugin.visitor) {
+ plugin.visitor = _traverse().default.explode(Object.assign({}, plugin.visitor));
+ }
+
+ if (plugin.inherits) {
+ const inheritsDescriptor = {
+ name: undefined,
+ alias: `${alias}$inherits`,
+ value: plugin.inherits,
+ options,
+ dirname
+ };
+ const inherits = yield* (0, _async.forwardAsync)(loadPluginDescriptor, run => {
+ return cache.invalidate(data => run(inheritsDescriptor, data));
+ });
+ plugin.pre = chain(inherits.pre, plugin.pre);
+ plugin.post = chain(inherits.post, plugin.post);
+ plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions);
+ plugin.visitor = _traverse().default.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]);
+ }
+
+ return new _plugin.default(plugin, options, alias);
+});
+
+const validateIfOptionNeedsFilename = (options, descriptor) => {
+ if (options.test || options.include || options.exclude) {
+ const formattedPresetName = descriptor.name ? `"${descriptor.name}"` : "/* your preset */";
+ throw new Error([`Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`, `\`\`\``, `babel.transform(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`, `\`\`\``, `See https://babeljs.io/docs/en/options#filename for more information.`].join("\n"));
+ }
+};
+
+const validatePreset = (preset, context, descriptor) => {
+ if (!context.filename) {
+ const {
+ options
+ } = preset;
+ validateIfOptionNeedsFilename(options, descriptor);
+
+ if (options.overrides) {
+ options.overrides.forEach(overrideOptions => validateIfOptionNeedsFilename(overrideOptions, descriptor));
+ }
+ }
+};
+
+function* loadPresetDescriptor(descriptor, context) {
+ const preset = instantiatePreset(yield* presetDescriptorLoader(descriptor, context));
+ validatePreset(preset, context, descriptor);
+ return yield* (0, _configChain.buildPresetChain)(preset, context);
+}
+
+const instantiatePreset = (0, _caching.makeWeakCacheSync)(({
+ value,
+ dirname,
+ alias
+}) => {
+ return {
+ options: (0, _options.validate)("preset", value),
+ alias,
+ dirname
+ };
+});
+
+function chain(a, b) {
+ const fns = [a, b].filter(Boolean);
+ if (fns.length <= 1) return fns[0];
+ return function (...args) {
+ for (const fn of fns) {
+ fn.apply(this, args);
+ }
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js
new file mode 100644
index 0000000000..f1a276291d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/config-api.js
@@ -0,0 +1,103 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.makeConfigAPI = makeConfigAPI;
+exports.makePluginAPI = makePluginAPI;
+exports.makePresetAPI = makePresetAPI;
+
+function _semver() {
+ const data = require("semver");
+
+ _semver = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _ = require("../../");
+
+var _caching = require("../caching");
+
+var Context = require("../cache-contexts");
+
+function makeConfigAPI(cache) {
+ const env = value => cache.using(data => {
+ if (typeof value === "undefined") return data.envName;
+
+ if (typeof value === "function") {
+ return (0, _caching.assertSimpleType)(value(data.envName));
+ }
+
+ if (!Array.isArray(value)) value = [value];
+ return value.some(entry => {
+ if (typeof entry !== "string") {
+ throw new Error("Unexpected non-string value");
+ }
+
+ return entry === data.envName;
+ });
+ });
+
+ const caller = cb => cache.using(data => (0, _caching.assertSimpleType)(cb(data.caller)));
+
+ return {
+ version: _.version,
+ cache: cache.simple(),
+ env,
+ async: () => false,
+ caller,
+ assertVersion
+ };
+}
+
+function makePresetAPI(cache) {
+ const targets = () => JSON.parse(cache.using(data => JSON.stringify(data.targets)));
+
+ return Object.assign({}, makeConfigAPI(cache), {
+ targets
+ });
+}
+
+function makePluginAPI(cache) {
+ const assumption = name => cache.using(data => data.assumptions[name]);
+
+ return Object.assign({}, makePresetAPI(cache), {
+ assumption
+ });
+}
+
+function assertVersion(range) {
+ if (typeof range === "number") {
+ if (!Number.isInteger(range)) {
+ throw new Error("Expected string or integer value.");
+ }
+
+ range = `^${range}.0.0-0`;
+ }
+
+ if (typeof range !== "string") {
+ throw new Error("Expected string or integer value.");
+ }
+
+ if (_semver().satisfies(_.version, range)) return;
+ const limit = Error.stackTraceLimit;
+
+ if (typeof limit === "number" && limit < 25) {
+ Error.stackTraceLimit = 25;
+ }
+
+ const err = new Error(`Requires Babel "${range}", but was loaded with "${_.version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`);
+
+ if (typeof limit === "number") {
+ Error.stackTraceLimit = limit;
+ }
+
+ throw Object.assign(err, {
+ code: "BABEL_VERSION_UNSUPPORTED",
+ version: _.version,
+ range
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js
new file mode 100644
index 0000000000..e4bfdbc7a7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/helpers/environment.js
@@ -0,0 +1,10 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getEnv = getEnv;
+
+function getEnv(defaultValue = "development") {
+ return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js
new file mode 100644
index 0000000000..696850dba2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createConfigItem = createConfigItem;
+exports.createConfigItemSync = exports.createConfigItemAsync = void 0;
+Object.defineProperty(exports, "default", {
+ enumerable: true,
+ get: function () {
+ return _full.default;
+ }
+});
+exports.loadPartialConfigSync = exports.loadPartialConfigAsync = exports.loadPartialConfig = exports.loadOptionsSync = exports.loadOptionsAsync = exports.loadOptions = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _full = require("./full");
+
+var _partial = require("./partial");
+
+var _item = require("./item");
+
+const loadOptionsRunner = _gensync()(function* (opts) {
+ var _config$options;
+
+ const config = yield* (0, _full.default)(opts);
+ return (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null;
+});
+
+const createConfigItemRunner = _gensync()(_item.createConfigItem);
+
+const maybeErrback = runner => (opts, callback) => {
+ if (callback === undefined && typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ return callback ? runner.errback(opts, callback) : runner.sync(opts);
+};
+
+const loadPartialConfig = maybeErrback(_partial.loadPartialConfig);
+exports.loadPartialConfig = loadPartialConfig;
+const loadPartialConfigSync = _partial.loadPartialConfig.sync;
+exports.loadPartialConfigSync = loadPartialConfigSync;
+const loadPartialConfigAsync = _partial.loadPartialConfig.async;
+exports.loadPartialConfigAsync = loadPartialConfigAsync;
+const loadOptions = maybeErrback(loadOptionsRunner);
+exports.loadOptions = loadOptions;
+const loadOptionsSync = loadOptionsRunner.sync;
+exports.loadOptionsSync = loadOptionsSync;
+const loadOptionsAsync = loadOptionsRunner.async;
+exports.loadOptionsAsync = loadOptionsAsync;
+const createConfigItemSync = createConfigItemRunner.sync;
+exports.createConfigItemSync = createConfigItemSync;
+const createConfigItemAsync = createConfigItemRunner.async;
+exports.createConfigItemAsync = createConfigItemAsync;
+
+function createConfigItem(target, options, callback) {
+ if (callback !== undefined) {
+ return createConfigItemRunner.errback(target, options, callback);
+ } else if (typeof options === "function") {
+ return createConfigItemRunner.errback(target, undefined, callback);
+ } else {
+ return createConfigItemRunner.sync(target, options);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js
new file mode 100644
index 0000000000..2380354619
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/item.js
@@ -0,0 +1,76 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.createConfigItem = createConfigItem;
+exports.createItemFromDescriptor = createItemFromDescriptor;
+exports.getItemDescriptor = getItemDescriptor;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _configDescriptors = require("./config-descriptors");
+
+function createItemFromDescriptor(desc) {
+ return new ConfigItem(desc);
+}
+
+function* createConfigItem(value, {
+ dirname = ".",
+ type
+} = {}) {
+ const descriptor = yield* (0, _configDescriptors.createDescriptor)(value, _path().resolve(dirname), {
+ type,
+ alias: "programmatic item"
+ });
+ return createItemFromDescriptor(descriptor);
+}
+
+function getItemDescriptor(item) {
+ if (item != null && item[CONFIG_ITEM_BRAND]) {
+ return item._descriptor;
+ }
+
+ return undefined;
+}
+
+const CONFIG_ITEM_BRAND = Symbol.for("@babel/core@7 - ConfigItem");
+
+class ConfigItem {
+ constructor(descriptor) {
+ this._descriptor = void 0;
+ this[CONFIG_ITEM_BRAND] = true;
+ this.value = void 0;
+ this.options = void 0;
+ this.dirname = void 0;
+ this.name = void 0;
+ this.file = void 0;
+ this._descriptor = descriptor;
+ Object.defineProperty(this, "_descriptor", {
+ enumerable: false
+ });
+ Object.defineProperty(this, CONFIG_ITEM_BRAND, {
+ enumerable: false
+ });
+ this.value = this._descriptor.value;
+ this.options = this._descriptor.options;
+ this.dirname = this._descriptor.dirname;
+ this.name = this._descriptor.name;
+ this.file = this._descriptor.file ? {
+ request: this._descriptor.file.request,
+ resolved: this._descriptor.file.resolved
+ } : undefined;
+ Object.freeze(this);
+ }
+
+}
+
+Object.freeze(ConfigItem.prototype); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js
new file mode 100644
index 0000000000..e8c52e103b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/partial.js
@@ -0,0 +1,197 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loadPrivatePartialConfig;
+exports.loadPartialConfig = void 0;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _plugin = require("./plugin");
+
+var _util = require("./util");
+
+var _item = require("./item");
+
+var _configChain = require("./config-chain");
+
+var _environment = require("./helpers/environment");
+
+var _options = require("./validation/options");
+
+var _files = require("./files");
+
+var _resolveTargets = require("./resolve-targets");
+
+const _excluded = ["showIgnoredFiles"];
+
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+
+function resolveRootMode(rootDir, rootMode) {
+ switch (rootMode) {
+ case "root":
+ return rootDir;
+
+ case "upward-optional":
+ {
+ const upwardRootDir = (0, _files.findConfigUpwards)(rootDir);
+ return upwardRootDir === null ? rootDir : upwardRootDir;
+ }
+
+ case "upward":
+ {
+ const upwardRootDir = (0, _files.findConfigUpwards)(rootDir);
+ if (upwardRootDir !== null) return upwardRootDir;
+ throw Object.assign(new Error(`Babel was run with rootMode:"upward" but a root could not ` + `be found when searching upward from "${rootDir}".\n` + `One of the following config files must be in the directory tree: ` + `"${_files.ROOT_CONFIG_FILENAMES.join(", ")}".`), {
+ code: "BABEL_ROOT_NOT_FOUND",
+ dirname: rootDir
+ });
+ }
+
+ default:
+ throw new Error(`Assertion failure - unknown rootMode value.`);
+ }
+}
+
+function* loadPrivatePartialConfig(inputOpts) {
+ if (inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts))) {
+ throw new Error("Babel options must be an object, null, or undefined");
+ }
+
+ const args = inputOpts ? (0, _options.validate)("arguments", inputOpts) : {};
+ const {
+ envName = (0, _environment.getEnv)(),
+ cwd = ".",
+ root: rootDir = ".",
+ rootMode = "root",
+ caller,
+ cloneInputAst = true
+ } = args;
+
+ const absoluteCwd = _path().resolve(cwd);
+
+ const absoluteRootDir = resolveRootMode(_path().resolve(absoluteCwd, rootDir), rootMode);
+ const filename = typeof args.filename === "string" ? _path().resolve(cwd, args.filename) : undefined;
+ const showConfigPath = yield* (0, _files.resolveShowConfigPath)(absoluteCwd);
+ const context = {
+ filename,
+ cwd: absoluteCwd,
+ root: absoluteRootDir,
+ envName,
+ caller,
+ showConfig: showConfigPath === filename
+ };
+ const configChain = yield* (0, _configChain.buildRootChain)(args, context);
+ if (!configChain) return null;
+ const merged = {
+ assumptions: {}
+ };
+ configChain.options.forEach(opts => {
+ (0, _util.mergeOptions)(merged, opts);
+ });
+ const options = Object.assign({}, merged, {
+ targets: (0, _resolveTargets.resolveTargets)(merged, absoluteRootDir),
+ cloneInputAst,
+ babelrc: false,
+ configFile: false,
+ browserslistConfigFile: false,
+ passPerPreset: false,
+ envName: context.envName,
+ cwd: context.cwd,
+ root: context.root,
+ rootMode: "root",
+ filename: typeof context.filename === "string" ? context.filename : undefined,
+ plugins: configChain.plugins.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor)),
+ presets: configChain.presets.map(descriptor => (0, _item.createItemFromDescriptor)(descriptor))
+ });
+ return {
+ options,
+ context,
+ fileHandling: configChain.fileHandling,
+ ignore: configChain.ignore,
+ babelrc: configChain.babelrc,
+ config: configChain.config,
+ files: configChain.files
+ };
+}
+
+const loadPartialConfig = _gensync()(function* (opts) {
+ let showIgnoredFiles = false;
+
+ if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) {
+ var _opts = opts;
+ ({
+ showIgnoredFiles
+ } = _opts);
+ opts = _objectWithoutPropertiesLoose(_opts, _excluded);
+ _opts;
+ }
+
+ const result = yield* loadPrivatePartialConfig(opts);
+ if (!result) return null;
+ const {
+ options,
+ babelrc,
+ ignore,
+ config,
+ fileHandling,
+ files
+ } = result;
+
+ if (fileHandling === "ignored" && !showIgnoredFiles) {
+ return null;
+ }
+
+ (options.plugins || []).forEach(item => {
+ if (item.value instanceof _plugin.default) {
+ throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()");
+ }
+ });
+ return new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files);
+});
+
+exports.loadPartialConfig = loadPartialConfig;
+
+class PartialConfig {
+ constructor(options, babelrc, ignore, config, fileHandling, files) {
+ this.options = void 0;
+ this.babelrc = void 0;
+ this.babelignore = void 0;
+ this.config = void 0;
+ this.fileHandling = void 0;
+ this.files = void 0;
+ this.options = options;
+ this.babelignore = ignore;
+ this.babelrc = babelrc;
+ this.config = config;
+ this.fileHandling = fileHandling;
+ this.files = files;
+ Object.freeze(this);
+ }
+
+ hasFilesystemConfig() {
+ return this.babelrc !== undefined || this.config !== undefined;
+ }
+
+}
+
+Object.freeze(PartialConfig.prototype); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js
new file mode 100644
index 0000000000..ec5db8fd5d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/pattern-to-regex.js
@@ -0,0 +1,44 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = pathToPattern;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const sep = `\\${_path().sep}`;
+const endSep = `(?:${sep}|$)`;
+const substitution = `[^${sep}]+`;
+const starPat = `(?:${substitution}${sep})`;
+const starPatLast = `(?:${substitution}${endSep})`;
+const starStarPat = `${starPat}*?`;
+const starStarPatLast = `${starPat}*?${starPatLast}?`;
+
+function escapeRegExp(string) {
+ return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
+}
+
+function pathToPattern(pattern, dirname) {
+ const parts = _path().resolve(dirname, pattern).split(_path().sep);
+
+ return new RegExp(["^", ...parts.map((part, i) => {
+ const last = i === parts.length - 1;
+ if (part === "**") return last ? starStarPatLast : starStarPat;
+ if (part === "*") return last ? starPatLast : starPat;
+
+ if (part.indexOf("*.") === 0) {
+ return substitution + escapeRegExp(part.slice(1)) + (last ? endSep : sep);
+ }
+
+ return escapeRegExp(part) + (last ? endSep : sep);
+ })].join(""));
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js
new file mode 100644
index 0000000000..9cb1656be3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/plugin.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+class Plugin {
+ constructor(plugin, options, key) {
+ this.key = void 0;
+ this.manipulateOptions = void 0;
+ this.post = void 0;
+ this.pre = void 0;
+ this.visitor = void 0;
+ this.parserOverride = void 0;
+ this.generatorOverride = void 0;
+ this.options = void 0;
+ this.key = plugin.name || key;
+ this.manipulateOptions = plugin.manipulateOptions;
+ this.post = plugin.post;
+ this.pre = plugin.pre;
+ this.visitor = plugin.visitor || {};
+ this.parserOverride = plugin.parserOverride;
+ this.generatorOverride = plugin.generatorOverride;
+ this.options = options;
+ }
+
+}
+
+exports.default = Plugin; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js
new file mode 100644
index 0000000000..229fd9a3ce
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/printer.js
@@ -0,0 +1,139 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ConfigPrinter = exports.ChainFormatter = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const ChainFormatter = {
+ Programmatic: 0,
+ Config: 1
+};
+exports.ChainFormatter = ChainFormatter;
+const Formatter = {
+ title(type, callerName, filepath) {
+ let title = "";
+
+ if (type === ChainFormatter.Programmatic) {
+ title = "programmatic options";
+
+ if (callerName) {
+ title += " from " + callerName;
+ }
+ } else {
+ title = "config " + filepath;
+ }
+
+ return title;
+ },
+
+ loc(index, envName) {
+ let loc = "";
+
+ if (index != null) {
+ loc += `.overrides[${index}]`;
+ }
+
+ if (envName != null) {
+ loc += `.env["${envName}"]`;
+ }
+
+ return loc;
+ },
+
+ *optionsAndDescriptors(opt) {
+ const content = Object.assign({}, opt.options);
+ delete content.overrides;
+ delete content.env;
+ const pluginDescriptors = [...(yield* opt.plugins())];
+
+ if (pluginDescriptors.length) {
+ content.plugins = pluginDescriptors.map(d => descriptorToConfig(d));
+ }
+
+ const presetDescriptors = [...(yield* opt.presets())];
+
+ if (presetDescriptors.length) {
+ content.presets = [...presetDescriptors].map(d => descriptorToConfig(d));
+ }
+
+ return JSON.stringify(content, undefined, 2);
+ }
+
+};
+
+function descriptorToConfig(d) {
+ var _d$file;
+
+ let name = (_d$file = d.file) == null ? void 0 : _d$file.request;
+
+ if (name == null) {
+ if (typeof d.value === "object") {
+ name = d.value;
+ } else if (typeof d.value === "function") {
+ name = `[Function: ${d.value.toString().substr(0, 50)} ... ]`;
+ }
+ }
+
+ if (name == null) {
+ name = "[Unknown]";
+ }
+
+ if (d.options === undefined) {
+ return name;
+ } else if (d.name == null) {
+ return [name, d.options];
+ } else {
+ return [name, d.options, d.name];
+ }
+}
+
+class ConfigPrinter {
+ constructor() {
+ this._stack = [];
+ }
+
+ configure(enabled, type, {
+ callerName,
+ filepath
+ }) {
+ if (!enabled) return () => {};
+ return (content, index, envName) => {
+ this._stack.push({
+ type,
+ callerName,
+ filepath,
+ content,
+ index,
+ envName
+ });
+ };
+ }
+
+ static *format(config) {
+ let title = Formatter.title(config.type, config.callerName, config.filepath);
+ const loc = Formatter.loc(config.index, config.envName);
+ if (loc) title += ` ${loc}`;
+ const content = yield* Formatter.optionsAndDescriptors(config.content);
+ return `${title}\n${content}`;
+ }
+
+ *output() {
+ if (this._stack.length === 0) return "";
+ const configs = yield* _gensync().all(this._stack.map(s => ConfigPrinter.format(s)));
+ return configs.join("\n\n");
+ }
+
+}
+
+exports.ConfigPrinter = ConfigPrinter; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js
new file mode 100644
index 0000000000..cc4e518029
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets-browser.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resolveBrowserslistConfigFile = resolveBrowserslistConfigFile;
+exports.resolveTargets = resolveTargets;
+
+function _helperCompilationTargets() {
+ const data = require("@babel/helper-compilation-targets");
+
+ _helperCompilationTargets = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function resolveBrowserslistConfigFile(browserslistConfigFile, configFilePath) {
+ return undefined;
+}
+
+function resolveTargets(options, root) {
+ let targets = options.targets;
+
+ if (typeof targets === "string" || Array.isArray(targets)) {
+ targets = {
+ browsers: targets
+ };
+ }
+
+ if (targets && targets.esmodules) {
+ targets = Object.assign({}, targets, {
+ esmodules: "intersect"
+ });
+ }
+
+ return (0, _helperCompilationTargets().default)(targets, {
+ ignoreBrowserslistConfig: true,
+ browserslistEnv: options.browserslistEnv
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js
new file mode 100644
index 0000000000..973e3d5764
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/resolve-targets.js
@@ -0,0 +1,68 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resolveBrowserslistConfigFile = resolveBrowserslistConfigFile;
+exports.resolveTargets = resolveTargets;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _helperCompilationTargets() {
+ const data = require("@babel/helper-compilation-targets");
+
+ _helperCompilationTargets = function () {
+ return data;
+ };
+
+ return data;
+}
+
+({});
+
+function resolveBrowserslistConfigFile(browserslistConfigFile, configFileDir) {
+ return _path().resolve(configFileDir, browserslistConfigFile);
+}
+
+function resolveTargets(options, root) {
+ let targets = options.targets;
+
+ if (typeof targets === "string" || Array.isArray(targets)) {
+ targets = {
+ browsers: targets
+ };
+ }
+
+ if (targets && targets.esmodules) {
+ targets = Object.assign({}, targets, {
+ esmodules: "intersect"
+ });
+ }
+
+ const {
+ browserslistConfigFile
+ } = options;
+ let configFile;
+ let ignoreBrowserslistConfig = false;
+
+ if (typeof browserslistConfigFile === "string") {
+ configFile = browserslistConfigFile;
+ } else {
+ ignoreBrowserslistConfig = browserslistConfigFile === false;
+ }
+
+ return (0, _helperCompilationTargets().default)(targets, {
+ ignoreBrowserslistConfig,
+ configFile,
+ configPath: root,
+ browserslistEnv: options.browserslistEnv
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js
new file mode 100644
index 0000000000..1fc2d3d79c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/util.js
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIterableIterator = isIterableIterator;
+exports.mergeOptions = mergeOptions;
+
+function mergeOptions(target, source) {
+ for (const k of Object.keys(source)) {
+ if ((k === "parserOpts" || k === "generatorOpts" || k === "assumptions") && source[k]) {
+ const parserOpts = source[k];
+ const targetObj = target[k] || (target[k] = {});
+ mergeDefaultFields(targetObj, parserOpts);
+ } else {
+ const val = source[k];
+ if (val !== undefined) target[k] = val;
+ }
+ }
+}
+
+function mergeDefaultFields(target, source) {
+ for (const k of Object.keys(source)) {
+ const val = source[k];
+ if (val !== undefined) target[k] = val;
+ }
+}
+
+function isIterableIterator(value) {
+ return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function";
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js
new file mode 100644
index 0000000000..9a0b4a4799
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/option-assertions.js
@@ -0,0 +1,352 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.access = access;
+exports.assertArray = assertArray;
+exports.assertAssumptions = assertAssumptions;
+exports.assertBabelrcSearch = assertBabelrcSearch;
+exports.assertBoolean = assertBoolean;
+exports.assertCallerMetadata = assertCallerMetadata;
+exports.assertCompact = assertCompact;
+exports.assertConfigApplicableTest = assertConfigApplicableTest;
+exports.assertConfigFileSearch = assertConfigFileSearch;
+exports.assertFunction = assertFunction;
+exports.assertIgnoreList = assertIgnoreList;
+exports.assertInputSourceMap = assertInputSourceMap;
+exports.assertObject = assertObject;
+exports.assertPluginList = assertPluginList;
+exports.assertRootMode = assertRootMode;
+exports.assertSourceMaps = assertSourceMaps;
+exports.assertSourceType = assertSourceType;
+exports.assertString = assertString;
+exports.assertTargets = assertTargets;
+exports.msg = msg;
+
+function _helperCompilationTargets() {
+ const data = require("@babel/helper-compilation-targets");
+
+ _helperCompilationTargets = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _options = require("./options");
+
+function msg(loc) {
+ switch (loc.type) {
+ case "root":
+ return ``;
+
+ case "env":
+ return `${msg(loc.parent)}.env["${loc.name}"]`;
+
+ case "overrides":
+ return `${msg(loc.parent)}.overrides[${loc.index}]`;
+
+ case "option":
+ return `${msg(loc.parent)}.${loc.name}`;
+
+ case "access":
+ return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`;
+
+ default:
+ throw new Error(`Assertion failure: Unknown type ${loc.type}`);
+ }
+}
+
+function access(loc, name) {
+ return {
+ type: "access",
+ name,
+ parent: loc
+ };
+}
+
+function assertRootMode(loc, value) {
+ if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") {
+ throw new Error(`${msg(loc)} must be a "root", "upward", "upward-optional" or undefined`);
+ }
+
+ return value;
+}
+
+function assertSourceMaps(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") {
+ throw new Error(`${msg(loc)} must be a boolean, "inline", "both", or undefined`);
+ }
+
+ return value;
+}
+
+function assertCompact(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && value !== "auto") {
+ throw new Error(`${msg(loc)} must be a boolean, "auto", or undefined`);
+ }
+
+ return value;
+}
+
+function assertSourceType(loc, value) {
+ if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") {
+ throw new Error(`${msg(loc)} must be "module", "script", "unambiguous", or undefined`);
+ }
+
+ return value;
+}
+
+function assertCallerMetadata(loc, value) {
+ const obj = assertObject(loc, value);
+
+ if (obj) {
+ if (typeof obj.name !== "string") {
+ throw new Error(`${msg(loc)} set but does not contain "name" property string`);
+ }
+
+ for (const prop of Object.keys(obj)) {
+ const propLoc = access(loc, prop);
+ const value = obj[prop];
+
+ if (value != null && typeof value !== "boolean" && typeof value !== "string" && typeof value !== "number") {
+ throw new Error(`${msg(propLoc)} must be null, undefined, a boolean, a string, or a number.`);
+ }
+ }
+ }
+
+ return value;
+}
+
+function assertInputSourceMap(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) {
+ throw new Error(`${msg(loc)} must be a boolean, object, or undefined`);
+ }
+
+ return value;
+}
+
+function assertString(loc, value) {
+ if (value !== undefined && typeof value !== "string") {
+ throw new Error(`${msg(loc)} must be a string, or undefined`);
+ }
+
+ return value;
+}
+
+function assertFunction(loc, value) {
+ if (value !== undefined && typeof value !== "function") {
+ throw new Error(`${msg(loc)} must be a function, or undefined`);
+ }
+
+ return value;
+}
+
+function assertBoolean(loc, value) {
+ if (value !== undefined && typeof value !== "boolean") {
+ throw new Error(`${msg(loc)} must be a boolean, or undefined`);
+ }
+
+ return value;
+}
+
+function assertObject(loc, value) {
+ if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) {
+ throw new Error(`${msg(loc)} must be an object, or undefined`);
+ }
+
+ return value;
+}
+
+function assertArray(loc, value) {
+ if (value != null && !Array.isArray(value)) {
+ throw new Error(`${msg(loc)} must be an array, or undefined`);
+ }
+
+ return value;
+}
+
+function assertIgnoreList(loc, value) {
+ const arr = assertArray(loc, value);
+
+ if (arr) {
+ arr.forEach((item, i) => assertIgnoreItem(access(loc, i), item));
+ }
+
+ return arr;
+}
+
+function assertIgnoreItem(loc, value) {
+ if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) {
+ throw new Error(`${msg(loc)} must be an array of string/Function/RegExp values, or undefined`);
+ }
+
+ return value;
+}
+
+function assertConfigApplicableTest(loc, value) {
+ if (value === undefined) return value;
+
+ if (Array.isArray(value)) {
+ value.forEach((item, i) => {
+ if (!checkValidTest(item)) {
+ throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`);
+ }
+ });
+ } else if (!checkValidTest(value)) {
+ throw new Error(`${msg(loc)} must be a string/Function/RegExp, or an array of those`);
+ }
+
+ return value;
+}
+
+function checkValidTest(value) {
+ return typeof value === "string" || typeof value === "function" || value instanceof RegExp;
+}
+
+function assertConfigFileSearch(loc, value) {
+ if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") {
+ throw new Error(`${msg(loc)} must be a undefined, a boolean, a string, ` + `got ${JSON.stringify(value)}`);
+ }
+
+ return value;
+}
+
+function assertBabelrcSearch(loc, value) {
+ if (value === undefined || typeof value === "boolean") return value;
+
+ if (Array.isArray(value)) {
+ value.forEach((item, i) => {
+ if (!checkValidTest(item)) {
+ throw new Error(`${msg(access(loc, i))} must be a string/Function/RegExp.`);
+ }
+ });
+ } else if (!checkValidTest(value)) {
+ throw new Error(`${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` + `or an array of those, got ${JSON.stringify(value)}`);
+ }
+
+ return value;
+}
+
+function assertPluginList(loc, value) {
+ const arr = assertArray(loc, value);
+
+ if (arr) {
+ arr.forEach((item, i) => assertPluginItem(access(loc, i), item));
+ }
+
+ return arr;
+}
+
+function assertPluginItem(loc, value) {
+ if (Array.isArray(value)) {
+ if (value.length === 0) {
+ throw new Error(`${msg(loc)} must include an object`);
+ }
+
+ if (value.length > 3) {
+ throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`);
+ }
+
+ assertPluginTarget(access(loc, 0), value[0]);
+
+ if (value.length > 1) {
+ const opts = value[1];
+
+ if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) {
+ throw new Error(`${msg(access(loc, 1))} must be an object, false, or undefined`);
+ }
+ }
+
+ if (value.length === 3) {
+ const name = value[2];
+
+ if (name !== undefined && typeof name !== "string") {
+ throw new Error(`${msg(access(loc, 2))} must be a string, or undefined`);
+ }
+ }
+ } else {
+ assertPluginTarget(loc, value);
+ }
+
+ return value;
+}
+
+function assertPluginTarget(loc, value) {
+ if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") {
+ throw new Error(`${msg(loc)} must be a string, object, function`);
+ }
+
+ return value;
+}
+
+function assertTargets(loc, value) {
+ if ((0, _helperCompilationTargets().isBrowsersQueryValid)(value)) return value;
+
+ if (typeof value !== "object" || !value || Array.isArray(value)) {
+ throw new Error(`${msg(loc)} must be a string, an array of strings or an object`);
+ }
+
+ const browsersLoc = access(loc, "browsers");
+ const esmodulesLoc = access(loc, "esmodules");
+ assertBrowsersList(browsersLoc, value.browsers);
+ assertBoolean(esmodulesLoc, value.esmodules);
+
+ for (const key of Object.keys(value)) {
+ const val = value[key];
+ const subLoc = access(loc, key);
+ if (key === "esmodules") assertBoolean(subLoc, val);else if (key === "browsers") assertBrowsersList(subLoc, val);else if (!Object.hasOwnProperty.call(_helperCompilationTargets().TargetNames, key)) {
+ const validTargets = Object.keys(_helperCompilationTargets().TargetNames).join(", ");
+ throw new Error(`${msg(subLoc)} is not a valid target. Supported targets are ${validTargets}`);
+ } else assertBrowserVersion(subLoc, val);
+ }
+
+ return value;
+}
+
+function assertBrowsersList(loc, value) {
+ if (value !== undefined && !(0, _helperCompilationTargets().isBrowsersQueryValid)(value)) {
+ throw new Error(`${msg(loc)} must be undefined, a string or an array of strings`);
+ }
+}
+
+function assertBrowserVersion(loc, value) {
+ if (typeof value === "number" && Math.round(value) === value) return;
+ if (typeof value === "string") return;
+ throw new Error(`${msg(loc)} must be a string or an integer number`);
+}
+
+function assertAssumptions(loc, value) {
+ if (value === undefined) return;
+
+ if (typeof value !== "object" || value === null) {
+ throw new Error(`${msg(loc)} must be an object or undefined.`);
+ }
+
+ let root = loc;
+
+ do {
+ root = root.parent;
+ } while (root.type !== "root");
+
+ const inPreset = root.source === "preset";
+
+ for (const name of Object.keys(value)) {
+ const subLoc = access(loc, name);
+
+ if (!_options.assumptionsNames.has(name)) {
+ throw new Error(`${msg(subLoc)} is not a supported assumption.`);
+ }
+
+ if (typeof value[name] !== "boolean") {
+ throw new Error(`${msg(subLoc)} must be a boolean.`);
+ }
+
+ if (inPreset && value[name] === false) {
+ throw new Error(`${msg(subLoc)} cannot be set to 'false' inside presets.`);
+ }
+ }
+
+ return value;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js
new file mode 100644
index 0000000000..930278cfb9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/options.js
@@ -0,0 +1,210 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assumptionsNames = void 0;
+exports.checkNoUnwrappedItemOptionPairs = checkNoUnwrappedItemOptionPairs;
+exports.validate = validate;
+
+var _plugin = require("../plugin");
+
+var _removed = require("./removed");
+
+var _optionAssertions = require("./option-assertions");
+
+const ROOT_VALIDATORS = {
+ cwd: _optionAssertions.assertString,
+ root: _optionAssertions.assertString,
+ rootMode: _optionAssertions.assertRootMode,
+ configFile: _optionAssertions.assertConfigFileSearch,
+ caller: _optionAssertions.assertCallerMetadata,
+ filename: _optionAssertions.assertString,
+ filenameRelative: _optionAssertions.assertString,
+ code: _optionAssertions.assertBoolean,
+ ast: _optionAssertions.assertBoolean,
+ cloneInputAst: _optionAssertions.assertBoolean,
+ envName: _optionAssertions.assertString
+};
+const BABELRC_VALIDATORS = {
+ babelrc: _optionAssertions.assertBoolean,
+ babelrcRoots: _optionAssertions.assertBabelrcSearch
+};
+const NONPRESET_VALIDATORS = {
+ extends: _optionAssertions.assertString,
+ ignore: _optionAssertions.assertIgnoreList,
+ only: _optionAssertions.assertIgnoreList,
+ targets: _optionAssertions.assertTargets,
+ browserslistConfigFile: _optionAssertions.assertConfigFileSearch,
+ browserslistEnv: _optionAssertions.assertString
+};
+const COMMON_VALIDATORS = {
+ inputSourceMap: _optionAssertions.assertInputSourceMap,
+ presets: _optionAssertions.assertPluginList,
+ plugins: _optionAssertions.assertPluginList,
+ passPerPreset: _optionAssertions.assertBoolean,
+ assumptions: _optionAssertions.assertAssumptions,
+ env: assertEnvSet,
+ overrides: assertOverridesList,
+ test: _optionAssertions.assertConfigApplicableTest,
+ include: _optionAssertions.assertConfigApplicableTest,
+ exclude: _optionAssertions.assertConfigApplicableTest,
+ retainLines: _optionAssertions.assertBoolean,
+ comments: _optionAssertions.assertBoolean,
+ shouldPrintComment: _optionAssertions.assertFunction,
+ compact: _optionAssertions.assertCompact,
+ minified: _optionAssertions.assertBoolean,
+ auxiliaryCommentBefore: _optionAssertions.assertString,
+ auxiliaryCommentAfter: _optionAssertions.assertString,
+ sourceType: _optionAssertions.assertSourceType,
+ wrapPluginVisitorMethod: _optionAssertions.assertFunction,
+ highlightCode: _optionAssertions.assertBoolean,
+ sourceMaps: _optionAssertions.assertSourceMaps,
+ sourceMap: _optionAssertions.assertSourceMaps,
+ sourceFileName: _optionAssertions.assertString,
+ sourceRoot: _optionAssertions.assertString,
+ parserOpts: _optionAssertions.assertObject,
+ generatorOpts: _optionAssertions.assertObject
+};
+{
+ Object.assign(COMMON_VALIDATORS, {
+ getModuleId: _optionAssertions.assertFunction,
+ moduleRoot: _optionAssertions.assertString,
+ moduleIds: _optionAssertions.assertBoolean,
+ moduleId: _optionAssertions.assertString
+ });
+}
+const assumptionsNames = new Set(["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noIncompleteNsImportDetection", "noNewArrows", "objectRestNoSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"]);
+exports.assumptionsNames = assumptionsNames;
+
+function getSource(loc) {
+ return loc.type === "root" ? loc.source : getSource(loc.parent);
+}
+
+function validate(type, opts) {
+ return validateNested({
+ type: "root",
+ source: type
+ }, opts);
+}
+
+function validateNested(loc, opts) {
+ const type = getSource(loc);
+ assertNoDuplicateSourcemap(opts);
+ Object.keys(opts).forEach(key => {
+ const optLoc = {
+ type: "option",
+ name: key,
+ parent: loc
+ };
+
+ if (type === "preset" && NONPRESET_VALIDATORS[key]) {
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in preset options`);
+ }
+
+ if (type !== "arguments" && ROOT_VALIDATORS[key]) {
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options`);
+ }
+
+ if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) {
+ if (type === "babelrcfile" || type === "extendsfile") {
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is not allowed in .babelrc or "extends"ed files, only in root programmatic options, ` + `or babel.config.js/config file options`);
+ }
+
+ throw new Error(`${(0, _optionAssertions.msg)(optLoc)} is only allowed in root programmatic options, or babel.config.js/config file options`);
+ }
+
+ const validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError;
+ validator(optLoc, opts[key]);
+ });
+ return opts;
+}
+
+function throwUnknownError(loc) {
+ const key = loc.name;
+
+ if (_removed.default[key]) {
+ const {
+ message,
+ version = 5
+ } = _removed.default[key];
+ throw new Error(`Using removed Babel ${version} option: ${(0, _optionAssertions.msg)(loc)} - ${message}`);
+ } else {
+ const unknownOptErr = new Error(`Unknown option: ${(0, _optionAssertions.msg)(loc)}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`);
+ unknownOptErr.code = "BABEL_UNKNOWN_OPTION";
+ throw unknownOptErr;
+ }
+}
+
+function has(obj, key) {
+ return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+function assertNoDuplicateSourcemap(opts) {
+ if (has(opts, "sourceMap") && has(opts, "sourceMaps")) {
+ throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both");
+ }
+}
+
+function assertEnvSet(loc, value) {
+ if (loc.parent.type === "env") {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside of another .env block`);
+ }
+
+ const parent = loc.parent;
+ const obj = (0, _optionAssertions.assertObject)(loc, value);
+
+ if (obj) {
+ for (const envName of Object.keys(obj)) {
+ const env = (0, _optionAssertions.assertObject)((0, _optionAssertions.access)(loc, envName), obj[envName]);
+ if (!env) continue;
+ const envLoc = {
+ type: "env",
+ name: envName,
+ parent
+ };
+ validateNested(envLoc, env);
+ }
+ }
+
+ return obj;
+}
+
+function assertOverridesList(loc, value) {
+ if (loc.parent.type === "env") {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .env block`);
+ }
+
+ if (loc.parent.type === "overrides") {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} is not allowed inside an .overrides block`);
+ }
+
+ const parent = loc.parent;
+ const arr = (0, _optionAssertions.assertArray)(loc, value);
+
+ if (arr) {
+ for (const [index, item] of arr.entries()) {
+ const objLoc = (0, _optionAssertions.access)(loc, index);
+ const env = (0, _optionAssertions.assertObject)(objLoc, item);
+ if (!env) throw new Error(`${(0, _optionAssertions.msg)(objLoc)} must be an object`);
+ const overridesLoc = {
+ type: "overrides",
+ index,
+ parent
+ };
+ validateNested(overridesLoc, env);
+ }
+ }
+
+ return arr;
+}
+
+function checkNoUnwrappedItemOptionPairs(items, index, type, e) {
+ if (index === 0) return;
+ const lastItem = items[index - 1];
+ const thisItem = items[index];
+
+ if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") {
+ e.message += `\n- Maybe you meant to use\n` + `"${type}s": [\n ["${lastItem.file.request}", ${JSON.stringify(thisItem.value, undefined, 2)}]\n]\n` + `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js
new file mode 100644
index 0000000000..a70cc676fa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/plugins.js
@@ -0,0 +1,71 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.validatePluginObject = validatePluginObject;
+
+var _optionAssertions = require("./option-assertions");
+
+const VALIDATORS = {
+ name: _optionAssertions.assertString,
+ manipulateOptions: _optionAssertions.assertFunction,
+ pre: _optionAssertions.assertFunction,
+ post: _optionAssertions.assertFunction,
+ inherits: _optionAssertions.assertFunction,
+ visitor: assertVisitorMap,
+ parserOverride: _optionAssertions.assertFunction,
+ generatorOverride: _optionAssertions.assertFunction
+};
+
+function assertVisitorMap(loc, value) {
+ const obj = (0, _optionAssertions.assertObject)(loc, value);
+
+ if (obj) {
+ Object.keys(obj).forEach(prop => assertVisitorHandler(prop, obj[prop]));
+
+ if (obj.enter || obj.exit) {
+ throw new Error(`${(0, _optionAssertions.msg)(loc)} cannot contain catch-all "enter" or "exit" handlers. Please target individual nodes.`);
+ }
+ }
+
+ return obj;
+}
+
+function assertVisitorHandler(key, value) {
+ if (value && typeof value === "object") {
+ Object.keys(value).forEach(handler => {
+ if (handler !== "enter" && handler !== "exit") {
+ throw new Error(`.visitor["${key}"] may only have .enter and/or .exit handlers.`);
+ }
+ });
+ } else if (typeof value !== "function") {
+ throw new Error(`.visitor["${key}"] must be a function`);
+ }
+
+ return value;
+}
+
+function validatePluginObject(obj) {
+ const rootPath = {
+ type: "root",
+ source: "plugin"
+ };
+ Object.keys(obj).forEach(key => {
+ const validator = VALIDATORS[key];
+
+ if (validator) {
+ const optLoc = {
+ type: "option",
+ name: key,
+ parent: rootPath
+ };
+ validator(optLoc, obj[key]);
+ } else {
+ const invalidPluginPropertyError = new Error(`.${key} is not a valid Plugin property`);
+ invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY";
+ throw invalidPluginPropertyError;
+ }
+ });
+ return obj;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js
new file mode 100644
index 0000000000..f0fcd7de39
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/validation/removed.js
@@ -0,0 +1,66 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+var _default = {
+ auxiliaryComment: {
+ message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"
+ },
+ blacklist: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ breakConfig: {
+ message: "This is not a necessary option in Babel 6"
+ },
+ experimental: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ externalHelpers: {
+ message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/"
+ },
+ extra: {
+ message: ""
+ },
+ jsxPragma: {
+ message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/"
+ },
+ loose: {
+ message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option."
+ },
+ metadataUsedHelpers: {
+ message: "Not required anymore as this is enabled by default"
+ },
+ modules: {
+ message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules"
+ },
+ nonStandard: {
+ message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"
+ },
+ optional: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ sourceMapName: {
+ message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves."
+ },
+ stage: {
+ message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"
+ },
+ whitelist: {
+ message: "Put the specific transforms you want in the `plugins` option"
+ },
+ resolveModuleSource: {
+ version: 6,
+ message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options"
+ },
+ metadata: {
+ version: 6,
+ message: "Generated plugin metadata is always included in the output result"
+ },
+ sourceMapTarget: {
+ version: 6,
+ message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves."
+ }
+};
+exports.default = _default; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js
new file mode 100644
index 0000000000..7deb1863a1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/async.js
@@ -0,0 +1,94 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.forwardAsync = forwardAsync;
+exports.isAsync = void 0;
+exports.isThenable = isThenable;
+exports.maybeAsync = maybeAsync;
+exports.waitFor = exports.onFirstPause = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const id = x => x;
+
+const runGenerator = _gensync()(function* (item) {
+ return yield* item;
+});
+
+const isAsync = _gensync()({
+ sync: () => false,
+ errback: cb => cb(null, true)
+});
+
+exports.isAsync = isAsync;
+
+function maybeAsync(fn, message) {
+ return _gensync()({
+ sync(...args) {
+ const result = fn.apply(this, args);
+ if (isThenable(result)) throw new Error(message);
+ return result;
+ },
+
+ async(...args) {
+ return Promise.resolve(fn.apply(this, args));
+ }
+
+ });
+}
+
+const withKind = _gensync()({
+ sync: cb => cb("sync"),
+ async: cb => cb("async")
+});
+
+function forwardAsync(action, cb) {
+ const g = _gensync()(action);
+
+ return withKind(kind => {
+ const adapted = g[kind];
+ return cb(adapted);
+ });
+}
+
+const onFirstPause = _gensync()({
+ name: "onFirstPause",
+ arity: 2,
+ sync: function (item) {
+ return runGenerator.sync(item);
+ },
+ errback: function (item, firstPause, cb) {
+ let completed = false;
+ runGenerator.errback(item, (err, value) => {
+ completed = true;
+ cb(err, value);
+ });
+
+ if (!completed) {
+ firstPause();
+ }
+ }
+});
+
+exports.onFirstPause = onFirstPause;
+
+const waitFor = _gensync()({
+ sync: id,
+ async: id
+});
+
+exports.waitFor = waitFor;
+
+function isThenable(val) {
+ return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js
new file mode 100644
index 0000000000..056ae34da1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/gensync-utils/fs.js
@@ -0,0 +1,40 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.stat = exports.readFile = void 0;
+
+function _fs() {
+ const data = require("fs");
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const readFile = _gensync()({
+ sync: _fs().readFileSync,
+ errback: _fs().readFile
+});
+
+exports.readFile = readFile;
+
+const stat = _gensync()({
+ sync: _fs().statSync,
+ errback: _fs().stat
+});
+
+exports.stat = stat; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js
new file mode 100644
index 0000000000..ffb4dead22
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js
@@ -0,0 +1,266 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.DEFAULT_EXTENSIONS = void 0;
+Object.defineProperty(exports, "File", {
+ enumerable: true,
+ get: function () {
+ return _file.default;
+ }
+});
+exports.OptionManager = void 0;
+exports.Plugin = Plugin;
+Object.defineProperty(exports, "buildExternalHelpers", {
+ enumerable: true,
+ get: function () {
+ return _buildExternalHelpers.default;
+ }
+});
+Object.defineProperty(exports, "createConfigItem", {
+ enumerable: true,
+ get: function () {
+ return _config.createConfigItem;
+ }
+});
+Object.defineProperty(exports, "createConfigItemAsync", {
+ enumerable: true,
+ get: function () {
+ return _config.createConfigItemAsync;
+ }
+});
+Object.defineProperty(exports, "createConfigItemSync", {
+ enumerable: true,
+ get: function () {
+ return _config.createConfigItemSync;
+ }
+});
+Object.defineProperty(exports, "getEnv", {
+ enumerable: true,
+ get: function () {
+ return _environment.getEnv;
+ }
+});
+Object.defineProperty(exports, "loadOptions", {
+ enumerable: true,
+ get: function () {
+ return _config.loadOptions;
+ }
+});
+Object.defineProperty(exports, "loadOptionsAsync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadOptionsAsync;
+ }
+});
+Object.defineProperty(exports, "loadOptionsSync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadOptionsSync;
+ }
+});
+Object.defineProperty(exports, "loadPartialConfig", {
+ enumerable: true,
+ get: function () {
+ return _config.loadPartialConfig;
+ }
+});
+Object.defineProperty(exports, "loadPartialConfigAsync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadPartialConfigAsync;
+ }
+});
+Object.defineProperty(exports, "loadPartialConfigSync", {
+ enumerable: true,
+ get: function () {
+ return _config.loadPartialConfigSync;
+ }
+});
+Object.defineProperty(exports, "parse", {
+ enumerable: true,
+ get: function () {
+ return _parse.parse;
+ }
+});
+Object.defineProperty(exports, "parseAsync", {
+ enumerable: true,
+ get: function () {
+ return _parse.parseAsync;
+ }
+});
+Object.defineProperty(exports, "parseSync", {
+ enumerable: true,
+ get: function () {
+ return _parse.parseSync;
+ }
+});
+Object.defineProperty(exports, "resolvePlugin", {
+ enumerable: true,
+ get: function () {
+ return _files.resolvePlugin;
+ }
+});
+Object.defineProperty(exports, "resolvePreset", {
+ enumerable: true,
+ get: function () {
+ return _files.resolvePreset;
+ }
+});
+Object.defineProperty(exports, "template", {
+ enumerable: true,
+ get: function () {
+ return _template().default;
+ }
+});
+Object.defineProperty(exports, "tokTypes", {
+ enumerable: true,
+ get: function () {
+ return _parser().tokTypes;
+ }
+});
+Object.defineProperty(exports, "transform", {
+ enumerable: true,
+ get: function () {
+ return _transform.transform;
+ }
+});
+Object.defineProperty(exports, "transformAsync", {
+ enumerable: true,
+ get: function () {
+ return _transform.transformAsync;
+ }
+});
+Object.defineProperty(exports, "transformFile", {
+ enumerable: true,
+ get: function () {
+ return _transformFile.transformFile;
+ }
+});
+Object.defineProperty(exports, "transformFileAsync", {
+ enumerable: true,
+ get: function () {
+ return _transformFile.transformFileAsync;
+ }
+});
+Object.defineProperty(exports, "transformFileSync", {
+ enumerable: true,
+ get: function () {
+ return _transformFile.transformFileSync;
+ }
+});
+Object.defineProperty(exports, "transformFromAst", {
+ enumerable: true,
+ get: function () {
+ return _transformAst.transformFromAst;
+ }
+});
+Object.defineProperty(exports, "transformFromAstAsync", {
+ enumerable: true,
+ get: function () {
+ return _transformAst.transformFromAstAsync;
+ }
+});
+Object.defineProperty(exports, "transformFromAstSync", {
+ enumerable: true,
+ get: function () {
+ return _transformAst.transformFromAstSync;
+ }
+});
+Object.defineProperty(exports, "transformSync", {
+ enumerable: true,
+ get: function () {
+ return _transform.transformSync;
+ }
+});
+Object.defineProperty(exports, "traverse", {
+ enumerable: true,
+ get: function () {
+ return _traverse().default;
+ }
+});
+exports.version = exports.types = void 0;
+
+var _file = require("./transformation/file/file");
+
+var _buildExternalHelpers = require("./tools/build-external-helpers");
+
+var _files = require("./config/files");
+
+var _environment = require("./config/helpers/environment");
+
+function _types() {
+ const data = require("@babel/types");
+
+ _types = function () {
+ return data;
+ };
+
+ return data;
+}
+
+Object.defineProperty(exports, "types", {
+ enumerable: true,
+ get: function () {
+ return _types();
+ }
+});
+
+function _parser() {
+ const data = require("@babel/parser");
+
+ _parser = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _template() {
+ const data = require("@babel/template");
+
+ _template = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transform = require("./transform");
+
+var _transformFile = require("./transform-file");
+
+var _transformAst = require("./transform-ast");
+
+var _parse = require("./parse");
+
+const version = "7.16.0";
+exports.version = version;
+const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"]);
+exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS;
+
+class OptionManager {
+ init(opts) {
+ return (0, _config.loadOptions)(opts);
+ }
+
+}
+
+exports.OptionManager = OptionManager;
+
+function Plugin(alias) {
+ throw new Error(`The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js
new file mode 100644
index 0000000000..783032ab93
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/parse.js
@@ -0,0 +1,48 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.parseSync = exports.parseAsync = exports.parse = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _parser = require("./parser");
+
+var _normalizeOpts = require("./transformation/normalize-opts");
+
+const parseRunner = _gensync()(function* parse(code, opts) {
+ const config = yield* (0, _config.default)(opts);
+
+ if (config === null) {
+ return null;
+ }
+
+ return yield* (0, _parser.default)(config.passes, (0, _normalizeOpts.default)(config), code);
+});
+
+const parse = function parse(code, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ if (callback === undefined) return parseRunner.sync(code, opts);
+ parseRunner.errback(code, opts, callback);
+};
+
+exports.parse = parse;
+const parseSync = parseRunner.sync;
+exports.parseSync = parseSync;
+const parseAsync = parseRunner.async;
+exports.parseAsync = parseAsync; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js
new file mode 100644
index 0000000000..254122a14c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/index.js
@@ -0,0 +1,95 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = parser;
+
+function _parser() {
+ const data = require("@babel/parser");
+
+ _parser = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _codeFrame() {
+ const data = require("@babel/code-frame");
+
+ _codeFrame = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _missingPluginHelper = require("./util/missing-plugin-helper");
+
+function* parser(pluginPasses, {
+ parserOpts,
+ highlightCode = true,
+ filename = "unknown"
+}, code) {
+ try {
+ const results = [];
+
+ for (const plugins of pluginPasses) {
+ for (const plugin of plugins) {
+ const {
+ parserOverride
+ } = plugin;
+
+ if (parserOverride) {
+ const ast = parserOverride(code, parserOpts, _parser().parse);
+ if (ast !== undefined) results.push(ast);
+ }
+ }
+ }
+
+ if (results.length === 0) {
+ return (0, _parser().parse)(code, parserOpts);
+ } else if (results.length === 1) {
+ yield* [];
+
+ if (typeof results[0].then === "function") {
+ throw new Error(`You appear to be using an async parser plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+
+ return results[0];
+ }
+
+ throw new Error("More than one plugin attempted to override parsing.");
+ } catch (err) {
+ if (err.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") {
+ err.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file.";
+ }
+
+ const {
+ loc,
+ missingPlugin
+ } = err;
+
+ if (loc) {
+ const codeFrame = (0, _codeFrame().codeFrameColumns)(code, {
+ start: {
+ line: loc.line,
+ column: loc.column + 1
+ }
+ }, {
+ highlightCode
+ });
+
+ if (missingPlugin) {
+ err.message = `${filename}: ` + (0, _missingPluginHelper.default)(missingPlugin[0], loc, codeFrame);
+ } else {
+ err.message = `${filename}: ${err.message}\n\n` + codeFrame;
+ }
+
+ err.code = "BABEL_PARSE_ERROR";
+ }
+
+ throw err;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
new file mode 100644
index 0000000000..96d7577799
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/parser/util/missing-plugin-helper.js
@@ -0,0 +1,313 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = generateMissingPluginMessage;
+const pluginNameMap = {
+ asyncDoExpressions: {
+ syntax: {
+ name: "@babel/plugin-syntax-async-do-expressions",
+ url: "https://git.io/JYer8"
+ }
+ },
+ classProperties: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-properties",
+ url: "https://git.io/vb4yQ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-class-properties",
+ url: "https://git.io/vb4SL"
+ }
+ },
+ classPrivateProperties: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-properties",
+ url: "https://git.io/vb4yQ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-class-properties",
+ url: "https://git.io/vb4SL"
+ }
+ },
+ classPrivateMethods: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-properties",
+ url: "https://git.io/vb4yQ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-private-methods",
+ url: "https://git.io/JvpRG"
+ }
+ },
+ classStaticBlock: {
+ syntax: {
+ name: "@babel/plugin-syntax-class-static-block",
+ url: "https://git.io/JTLB6"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-class-static-block",
+ url: "https://git.io/JTLBP"
+ }
+ },
+ decimal: {
+ syntax: {
+ name: "@babel/plugin-syntax-decimal",
+ url: "https://git.io/JfKOH"
+ }
+ },
+ decorators: {
+ syntax: {
+ name: "@babel/plugin-syntax-decorators",
+ url: "https://git.io/vb4y9"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-decorators",
+ url: "https://git.io/vb4ST"
+ }
+ },
+ doExpressions: {
+ syntax: {
+ name: "@babel/plugin-syntax-do-expressions",
+ url: "https://git.io/vb4yh"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-do-expressions",
+ url: "https://git.io/vb4S3"
+ }
+ },
+ dynamicImport: {
+ syntax: {
+ name: "@babel/plugin-syntax-dynamic-import",
+ url: "https://git.io/vb4Sv"
+ }
+ },
+ exportDefaultFrom: {
+ syntax: {
+ name: "@babel/plugin-syntax-export-default-from",
+ url: "https://git.io/vb4SO"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-export-default-from",
+ url: "https://git.io/vb4yH"
+ }
+ },
+ exportNamespaceFrom: {
+ syntax: {
+ name: "@babel/plugin-syntax-export-namespace-from",
+ url: "https://git.io/vb4Sf"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-export-namespace-from",
+ url: "https://git.io/vb4SG"
+ }
+ },
+ flow: {
+ syntax: {
+ name: "@babel/plugin-syntax-flow",
+ url: "https://git.io/vb4yb"
+ },
+ transform: {
+ name: "@babel/preset-flow",
+ url: "https://git.io/JfeDn"
+ }
+ },
+ functionBind: {
+ syntax: {
+ name: "@babel/plugin-syntax-function-bind",
+ url: "https://git.io/vb4y7"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-function-bind",
+ url: "https://git.io/vb4St"
+ }
+ },
+ functionSent: {
+ syntax: {
+ name: "@babel/plugin-syntax-function-sent",
+ url: "https://git.io/vb4yN"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-function-sent",
+ url: "https://git.io/vb4SZ"
+ }
+ },
+ importMeta: {
+ syntax: {
+ name: "@babel/plugin-syntax-import-meta",
+ url: "https://git.io/vbKK6"
+ }
+ },
+ jsx: {
+ syntax: {
+ name: "@babel/plugin-syntax-jsx",
+ url: "https://git.io/vb4yA"
+ },
+ transform: {
+ name: "@babel/preset-react",
+ url: "https://git.io/JfeDR"
+ }
+ },
+ importAssertions: {
+ syntax: {
+ name: "@babel/plugin-syntax-import-assertions",
+ url: "https://git.io/JUbkv"
+ }
+ },
+ moduleStringNames: {
+ syntax: {
+ name: "@babel/plugin-syntax-module-string-names",
+ url: "https://git.io/JTL8G"
+ }
+ },
+ numericSeparator: {
+ syntax: {
+ name: "@babel/plugin-syntax-numeric-separator",
+ url: "https://git.io/vb4Sq"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-numeric-separator",
+ url: "https://git.io/vb4yS"
+ }
+ },
+ optionalChaining: {
+ syntax: {
+ name: "@babel/plugin-syntax-optional-chaining",
+ url: "https://git.io/vb4Sc"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-optional-chaining",
+ url: "https://git.io/vb4Sk"
+ }
+ },
+ pipelineOperator: {
+ syntax: {
+ name: "@babel/plugin-syntax-pipeline-operator",
+ url: "https://git.io/vb4yj"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-pipeline-operator",
+ url: "https://git.io/vb4SU"
+ }
+ },
+ privateIn: {
+ syntax: {
+ name: "@babel/plugin-syntax-private-property-in-object",
+ url: "https://git.io/JfK3q"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-private-property-in-object",
+ url: "https://git.io/JfK3O"
+ }
+ },
+ recordAndTuple: {
+ syntax: {
+ name: "@babel/plugin-syntax-record-and-tuple",
+ url: "https://git.io/JvKp3"
+ }
+ },
+ throwExpressions: {
+ syntax: {
+ name: "@babel/plugin-syntax-throw-expressions",
+ url: "https://git.io/vb4SJ"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-throw-expressions",
+ url: "https://git.io/vb4yF"
+ }
+ },
+ typescript: {
+ syntax: {
+ name: "@babel/plugin-syntax-typescript",
+ url: "https://git.io/vb4SC"
+ },
+ transform: {
+ name: "@babel/preset-typescript",
+ url: "https://git.io/JfeDz"
+ }
+ },
+ asyncGenerators: {
+ syntax: {
+ name: "@babel/plugin-syntax-async-generators",
+ url: "https://git.io/vb4SY"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-async-generator-functions",
+ url: "https://git.io/vb4yp"
+ }
+ },
+ logicalAssignment: {
+ syntax: {
+ name: "@babel/plugin-syntax-logical-assignment-operators",
+ url: "https://git.io/vAlBp"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-logical-assignment-operators",
+ url: "https://git.io/vAlRe"
+ }
+ },
+ nullishCoalescingOperator: {
+ syntax: {
+ name: "@babel/plugin-syntax-nullish-coalescing-operator",
+ url: "https://git.io/vb4yx"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-nullish-coalescing-operator",
+ url: "https://git.io/vb4Se"
+ }
+ },
+ objectRestSpread: {
+ syntax: {
+ name: "@babel/plugin-syntax-object-rest-spread",
+ url: "https://git.io/vb4y5"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-object-rest-spread",
+ url: "https://git.io/vb4Ss"
+ }
+ },
+ optionalCatchBinding: {
+ syntax: {
+ name: "@babel/plugin-syntax-optional-catch-binding",
+ url: "https://git.io/vb4Sn"
+ },
+ transform: {
+ name: "@babel/plugin-proposal-optional-catch-binding",
+ url: "https://git.io/vb4SI"
+ }
+ }
+};
+pluginNameMap.privateIn.syntax = pluginNameMap.privateIn.transform;
+
+const getNameURLCombination = ({
+ name,
+ url
+}) => `${name} (${url})`;
+
+function generateMissingPluginMessage(missingPluginName, loc, codeFrame) {
+ let helpMessage = `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` + `(${loc.line}:${loc.column + 1}):\n\n` + codeFrame;
+ const pluginInfo = pluginNameMap[missingPluginName];
+
+ if (pluginInfo) {
+ const {
+ syntax: syntaxPlugin,
+ transform: transformPlugin
+ } = pluginInfo;
+
+ if (syntaxPlugin) {
+ const syntaxPluginInfo = getNameURLCombination(syntaxPlugin);
+
+ if (transformPlugin) {
+ const transformPluginInfo = getNameURLCombination(transformPlugin);
+ const sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets";
+ helpMessage += `\n\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation.
+If you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`;
+ } else {
+ helpMessage += `\n\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` + `to enable parsing.`;
+ }
+ }
+ }
+
+ return helpMessage;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js
new file mode 100644
index 0000000000..94d85e7e65
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/tools/build-external-helpers.js
@@ -0,0 +1,164 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+function helpers() {
+ const data = require("@babel/helpers");
+
+ helpers = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _generator() {
+ const data = require("@babel/generator");
+
+ _generator = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _template() {
+ const data = require("@babel/template");
+
+ _template = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _t() {
+ const data = require("@babel/types");
+
+ _t = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _file = require("../transformation/file/file");
+
+const {
+ arrayExpression,
+ assignmentExpression,
+ binaryExpression,
+ blockStatement,
+ callExpression,
+ cloneNode,
+ conditionalExpression,
+ exportNamedDeclaration,
+ exportSpecifier,
+ expressionStatement,
+ functionExpression,
+ identifier,
+ memberExpression,
+ objectExpression,
+ program,
+ stringLiteral,
+ unaryExpression,
+ variableDeclaration,
+ variableDeclarator
+} = _t();
+
+const buildUmdWrapper = replacements => _template().default.statement`
+ (function (root, factory) {
+ if (typeof define === "function" && define.amd) {
+ define(AMD_ARGUMENTS, factory);
+ } else if (typeof exports === "object") {
+ factory(COMMON_ARGUMENTS);
+ } else {
+ factory(BROWSER_ARGUMENTS);
+ }
+ })(UMD_ROOT, function (FACTORY_PARAMETERS) {
+ FACTORY_BODY
+ });
+ `(replacements);
+
+function buildGlobal(allowlist) {
+ const namespace = identifier("babelHelpers");
+ const body = [];
+ const container = functionExpression(null, [identifier("global")], blockStatement(body));
+ const tree = program([expressionStatement(callExpression(container, [conditionalExpression(binaryExpression("===", unaryExpression("typeof", identifier("global")), stringLiteral("undefined")), identifier("self"), identifier("global"))]))]);
+ body.push(variableDeclaration("var", [variableDeclarator(namespace, assignmentExpression("=", memberExpression(identifier("global"), namespace), objectExpression([])))]));
+ buildHelpers(body, namespace, allowlist);
+ return tree;
+}
+
+function buildModule(allowlist) {
+ const body = [];
+ const refs = buildHelpers(body, null, allowlist);
+ body.unshift(exportNamedDeclaration(null, Object.keys(refs).map(name => {
+ return exportSpecifier(cloneNode(refs[name]), identifier(name));
+ })));
+ return program(body, [], "module");
+}
+
+function buildUmd(allowlist) {
+ const namespace = identifier("babelHelpers");
+ const body = [];
+ body.push(variableDeclaration("var", [variableDeclarator(namespace, identifier("global"))]));
+ buildHelpers(body, namespace, allowlist);
+ return program([buildUmdWrapper({
+ FACTORY_PARAMETERS: identifier("global"),
+ BROWSER_ARGUMENTS: assignmentExpression("=", memberExpression(identifier("root"), namespace), objectExpression([])),
+ COMMON_ARGUMENTS: identifier("exports"),
+ AMD_ARGUMENTS: arrayExpression([stringLiteral("exports")]),
+ FACTORY_BODY: body,
+ UMD_ROOT: identifier("this")
+ })]);
+}
+
+function buildVar(allowlist) {
+ const namespace = identifier("babelHelpers");
+ const body = [];
+ body.push(variableDeclaration("var", [variableDeclarator(namespace, objectExpression([]))]));
+ const tree = program(body);
+ buildHelpers(body, namespace, allowlist);
+ body.push(expressionStatement(namespace));
+ return tree;
+}
+
+function buildHelpers(body, namespace, allowlist) {
+ const getHelperReference = name => {
+ return namespace ? memberExpression(namespace, identifier(name)) : identifier(`_${name}`);
+ };
+
+ const refs = {};
+ helpers().list.forEach(function (name) {
+ if (allowlist && allowlist.indexOf(name) < 0) return;
+ const ref = refs[name] = getHelperReference(name);
+ helpers().ensure(name, _file.default);
+ const {
+ nodes
+ } = helpers().get(name, getHelperReference, ref);
+ body.push(...nodes);
+ });
+ return refs;
+}
+
+function _default(allowlist, outputType = "global") {
+ let tree;
+ const build = {
+ global: buildGlobal,
+ module: buildModule,
+ umd: buildUmd,
+ var: buildVar
+ }[outputType];
+
+ if (build) {
+ tree = build(allowlist);
+ } else {
+ throw new Error(`Unsupported output type ${outputType}`);
+ }
+
+ return (0, _generator().default)(tree).code;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js
new file mode 100644
index 0000000000..61fb2224a6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-ast.js
@@ -0,0 +1,46 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformFromAstSync = exports.transformFromAstAsync = exports.transformFromAst = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transformation = require("./transformation");
+
+const transformFromAstRunner = _gensync()(function* (ast, code, opts) {
+ const config = yield* (0, _config.default)(opts);
+ if (config === null) return null;
+ if (!ast) throw new Error("No AST given");
+ return yield* (0, _transformation.run)(config, code, ast);
+});
+
+const transformFromAst = function transformFromAst(ast, code, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ if (callback === undefined) {
+ return transformFromAstRunner.sync(ast, code, opts);
+ }
+
+ transformFromAstRunner.errback(ast, code, opts, callback);
+};
+
+exports.transformFromAst = transformFromAst;
+const transformFromAstSync = transformFromAstRunner.sync;
+exports.transformFromAstSync = transformFromAstSync;
+const transformFromAstAsync = transformFromAstRunner.async;
+exports.transformFromAstAsync = transformFromAstAsync; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js
new file mode 100644
index 0000000000..3371a1e792
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file-browser.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformFile = void 0;
+exports.transformFileAsync = transformFileAsync;
+exports.transformFileSync = transformFileSync;
+
+const transformFile = function transformFile(filename, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ }
+
+ callback(new Error("Transforming files is not supported in browsers"), null);
+};
+
+exports.transformFile = transformFile;
+
+function transformFileSync() {
+ throw new Error("Transforming files is not supported in browsers");
+}
+
+function transformFileAsync() {
+ return Promise.reject(new Error("Transforming files is not supported in browsers"));
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js
new file mode 100644
index 0000000000..18075fffa7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformFileSync = exports.transformFileAsync = exports.transformFile = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transformation = require("./transformation");
+
+var fs = require("./gensync-utils/fs");
+
+({});
+
+const transformFileRunner = _gensync()(function* (filename, opts) {
+ const options = Object.assign({}, opts, {
+ filename
+ });
+ const config = yield* (0, _config.default)(options);
+ if (config === null) return null;
+ const code = yield* fs.readFile(filename, "utf8");
+ return yield* (0, _transformation.run)(config, code);
+});
+
+const transformFile = transformFileRunner.errback;
+exports.transformFile = transformFile;
+const transformFileSync = transformFileRunner.sync;
+exports.transformFileSync = transformFileSync;
+const transformFileAsync = transformFileRunner.async;
+exports.transformFileAsync = transformFileAsync; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js
new file mode 100644
index 0000000000..538c3edfe6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.transformSync = exports.transformAsync = exports.transform = void 0;
+
+function _gensync() {
+ const data = require("gensync");
+
+ _gensync = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _config = require("./config");
+
+var _transformation = require("./transformation");
+
+const transformRunner = _gensync()(function* transform(code, opts) {
+ const config = yield* (0, _config.default)(opts);
+ if (config === null) return null;
+ return yield* (0, _transformation.run)(config, code);
+});
+
+const transform = function transform(code, opts, callback) {
+ if (typeof opts === "function") {
+ callback = opts;
+ opts = undefined;
+ }
+
+ if (callback === undefined) return transformRunner.sync(code, opts);
+ transformRunner.errback(code, opts, callback);
+};
+
+exports.transform = transform;
+const transformSync = transformRunner.sync;
+exports.transformSync = transformSync;
+const transformAsync = transformRunner.async;
+exports.transformAsync = transformAsync; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
new file mode 100644
index 0000000000..a3b0b411ae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/block-hoist-plugin.js
@@ -0,0 +1,94 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = loadBlockHoistPlugin;
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _plugin = require("../config/plugin");
+
+let LOADED_PLUGIN;
+
+function loadBlockHoistPlugin() {
+ if (!LOADED_PLUGIN) {
+ LOADED_PLUGIN = new _plugin.default(Object.assign({}, blockHoistPlugin, {
+ visitor: _traverse().default.explode(blockHoistPlugin.visitor)
+ }), {});
+ }
+
+ return LOADED_PLUGIN;
+}
+
+function priority(bodyNode) {
+ const priority = bodyNode == null ? void 0 : bodyNode._blockHoist;
+ if (priority == null) return 1;
+ if (priority === true) return 2;
+ return priority;
+}
+
+function stableSort(body) {
+ const buckets = Object.create(null);
+
+ for (let i = 0; i < body.length; i++) {
+ const n = body[i];
+ const p = priority(n);
+ const bucket = buckets[p] || (buckets[p] = []);
+ bucket.push(n);
+ }
+
+ const keys = Object.keys(buckets).map(k => +k).sort((a, b) => b - a);
+ let index = 0;
+
+ for (const key of keys) {
+ const bucket = buckets[key];
+
+ for (const n of bucket) {
+ body[index++] = n;
+ }
+ }
+
+ return body;
+}
+
+const blockHoistPlugin = {
+ name: "internal.blockHoist",
+ visitor: {
+ Block: {
+ exit({
+ node
+ }) {
+ const {
+ body
+ } = node;
+ let max = Math.pow(2, 30) - 1;
+ let hasChange = false;
+
+ for (let i = 0; i < body.length; i++) {
+ const n = body[i];
+ const p = priority(n);
+
+ if (p > max) {
+ hasChange = true;
+ break;
+ }
+
+ max = p;
+ }
+
+ if (!hasChange) return;
+ node.body = stableSort(body.slice());
+ }
+
+ }
+ }
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js
new file mode 100644
index 0000000000..3728ec56c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/file.js
@@ -0,0 +1,254 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+function helpers() {
+ const data = require("@babel/helpers");
+
+ helpers = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _codeFrame() {
+ const data = require("@babel/code-frame");
+
+ _codeFrame = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _t() {
+ const data = require("@babel/types");
+
+ _t = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _helperModuleTransforms() {
+ const data = require("@babel/helper-module-transforms");
+
+ _helperModuleTransforms = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _semver() {
+ const data = require("semver");
+
+ _semver = function () {
+ return data;
+ };
+
+ return data;
+}
+
+const {
+ cloneNode,
+ interpreterDirective
+} = _t();
+
+const errorVisitor = {
+ enter(path, state) {
+ const loc = path.node.loc;
+
+ if (loc) {
+ state.loc = loc;
+ path.stop();
+ }
+ }
+
+};
+
+class File {
+ constructor(options, {
+ code,
+ ast,
+ inputMap
+ }) {
+ this._map = new Map();
+ this.opts = void 0;
+ this.declarations = {};
+ this.path = null;
+ this.ast = {};
+ this.scope = void 0;
+ this.metadata = {};
+ this.code = "";
+ this.inputMap = null;
+ this.hub = {
+ file: this,
+ getCode: () => this.code,
+ getScope: () => this.scope,
+ addHelper: this.addHelper.bind(this),
+ buildError: this.buildCodeFrameError.bind(this)
+ };
+ this.opts = options;
+ this.code = code;
+ this.ast = ast;
+ this.inputMap = inputMap;
+ this.path = _traverse().NodePath.get({
+ hub: this.hub,
+ parentPath: null,
+ parent: this.ast,
+ container: this.ast,
+ key: "program"
+ }).setContext();
+ this.scope = this.path.scope;
+ }
+
+ get shebang() {
+ const {
+ interpreter
+ } = this.path.node;
+ return interpreter ? interpreter.value : "";
+ }
+
+ set shebang(value) {
+ if (value) {
+ this.path.get("interpreter").replaceWith(interpreterDirective(value));
+ } else {
+ this.path.get("interpreter").remove();
+ }
+ }
+
+ set(key, val) {
+ if (key === "helpersNamespace") {
+ throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'.");
+ }
+
+ this._map.set(key, val);
+ }
+
+ get(key) {
+ return this._map.get(key);
+ }
+
+ has(key) {
+ return this._map.has(key);
+ }
+
+ getModuleName() {
+ return (0, _helperModuleTransforms().getModuleName)(this.opts, this.opts);
+ }
+
+ addImport() {
+ throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'.");
+ }
+
+ availableHelper(name, versionRange) {
+ let minVersion;
+
+ try {
+ minVersion = helpers().minVersion(name);
+ } catch (err) {
+ if (err.code !== "BABEL_HELPER_UNKNOWN") throw err;
+ return false;
+ }
+
+ if (typeof versionRange !== "string") return true;
+ if (_semver().valid(versionRange)) versionRange = `^${versionRange}`;
+ return !_semver().intersects(`<${minVersion}`, versionRange) && !_semver().intersects(`>=8.0.0`, versionRange);
+ }
+
+ addHelper(name) {
+ const declar = this.declarations[name];
+ if (declar) return cloneNode(declar);
+ const generator = this.get("helperGenerator");
+
+ if (generator) {
+ const res = generator(name);
+ if (res) return res;
+ }
+
+ helpers().ensure(name, File);
+ const uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
+ const dependencies = {};
+
+ for (const dep of helpers().getDependencies(name)) {
+ dependencies[dep] = this.addHelper(dep);
+ }
+
+ const {
+ nodes,
+ globals
+ } = helpers().get(name, dep => dependencies[dep], uid, Object.keys(this.scope.getAllBindings()));
+ globals.forEach(name => {
+ if (this.path.scope.hasBinding(name, true)) {
+ this.path.scope.rename(name);
+ }
+ });
+ nodes.forEach(node => {
+ node._compact = true;
+ });
+ this.path.unshiftContainer("body", nodes);
+ this.path.get("body").forEach(path => {
+ if (nodes.indexOf(path.node) === -1) return;
+ if (path.isVariableDeclaration()) this.scope.registerDeclaration(path);
+ });
+ return uid;
+ }
+
+ addTemplateObject() {
+ throw new Error("This function has been moved into the template literal transform itself.");
+ }
+
+ buildCodeFrameError(node, msg, _Error = SyntaxError) {
+ let loc = node && (node.loc || node._loc);
+
+ if (!loc && node) {
+ const state = {
+ loc: null
+ };
+ (0, _traverse().default)(node, errorVisitor, this.scope, state);
+ loc = state.loc;
+ let txt = "This is an error on an internal node. Probably an internal error.";
+ if (loc) txt += " Location has been estimated.";
+ msg += ` (${txt})`;
+ }
+
+ if (loc) {
+ const {
+ highlightCode = true
+ } = this.opts;
+ msg += "\n" + (0, _codeFrame().codeFrameColumns)(this.code, {
+ start: {
+ line: loc.start.line,
+ column: loc.start.column + 1
+ },
+ end: loc.end && loc.start.line === loc.end.line ? {
+ line: loc.end.line,
+ column: loc.end.column + 1
+ } : undefined
+ }, {
+ highlightCode
+ });
+ }
+
+ return new _Error(msg);
+ }
+
+}
+
+exports.default = File; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js
new file mode 100644
index 0000000000..50250d80d7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/generate.js
@@ -0,0 +1,87 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = generateCode;
+
+function _convertSourceMap() {
+ const data = require("convert-source-map");
+
+ _convertSourceMap = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _generator() {
+ const data = require("@babel/generator");
+
+ _generator = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _mergeMap = require("./merge-map");
+
+function generateCode(pluginPasses, file) {
+ const {
+ opts,
+ ast,
+ code,
+ inputMap
+ } = file;
+ const results = [];
+
+ for (const plugins of pluginPasses) {
+ for (const plugin of plugins) {
+ const {
+ generatorOverride
+ } = plugin;
+
+ if (generatorOverride) {
+ const result = generatorOverride(ast, opts.generatorOpts, code, _generator().default);
+ if (result !== undefined) results.push(result);
+ }
+ }
+ }
+
+ let result;
+
+ if (results.length === 0) {
+ result = (0, _generator().default)(ast, opts.generatorOpts, code);
+ } else if (results.length === 1) {
+ result = results[0];
+
+ if (typeof result.then === "function") {
+ throw new Error(`You appear to be using an async codegen plugin, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, ` + `you may need to upgrade your @babel/core version.`);
+ }
+ } else {
+ throw new Error("More than one plugin attempted to override codegen.");
+ }
+
+ let {
+ code: outputCode,
+ map: outputMap
+ } = result;
+
+ if (outputMap && inputMap) {
+ outputMap = (0, _mergeMap.default)(inputMap.toObject(), outputMap);
+ }
+
+ if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") {
+ outputCode += "\n" + _convertSourceMap().fromObject(outputMap).toComment();
+ }
+
+ if (opts.sourceMaps === "inline") {
+ outputMap = null;
+ }
+
+ return {
+ outputCode,
+ outputMap
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js
new file mode 100644
index 0000000000..5cc789f8fd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/file/merge-map.js
@@ -0,0 +1,245 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = mergeSourceMap;
+
+function _sourceMap() {
+ const data = require("source-map");
+
+ _sourceMap = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function mergeSourceMap(inputMap, map) {
+ const input = buildMappingData(inputMap);
+ const output = buildMappingData(map);
+ const mergedGenerator = new (_sourceMap().SourceMapGenerator)();
+
+ for (const {
+ source
+ } of input.sources) {
+ if (typeof source.content === "string") {
+ mergedGenerator.setSourceContent(source.path, source.content);
+ }
+ }
+
+ if (output.sources.length === 1) {
+ const defaultSource = output.sources[0];
+ const insertedMappings = new Map();
+ eachInputGeneratedRange(input, (generated, original, source) => {
+ eachOverlappingGeneratedOutputRange(defaultSource, generated, item => {
+ const key = makeMappingKey(item);
+ if (insertedMappings.has(key)) return;
+ insertedMappings.set(key, item);
+ mergedGenerator.addMapping({
+ source: source.path,
+ original: {
+ line: original.line,
+ column: original.columnStart
+ },
+ generated: {
+ line: item.line,
+ column: item.columnStart
+ },
+ name: original.name
+ });
+ });
+ });
+
+ for (const item of insertedMappings.values()) {
+ if (item.columnEnd === Infinity) {
+ continue;
+ }
+
+ const clearItem = {
+ line: item.line,
+ columnStart: item.columnEnd
+ };
+ const key = makeMappingKey(clearItem);
+
+ if (insertedMappings.has(key)) {
+ continue;
+ }
+
+ mergedGenerator.addMapping({
+ generated: {
+ line: clearItem.line,
+ column: clearItem.columnStart
+ }
+ });
+ }
+ }
+
+ const result = mergedGenerator.toJSON();
+
+ if (typeof input.sourceRoot === "string") {
+ result.sourceRoot = input.sourceRoot;
+ }
+
+ return result;
+}
+
+function makeMappingKey(item) {
+ return `${item.line}/${item.columnStart}`;
+}
+
+function eachOverlappingGeneratedOutputRange(outputFile, inputGeneratedRange, callback) {
+ const overlappingOriginal = filterApplicableOriginalRanges(outputFile, inputGeneratedRange);
+
+ for (const {
+ generated
+ } of overlappingOriginal) {
+ for (const item of generated) {
+ callback(item);
+ }
+ }
+}
+
+function filterApplicableOriginalRanges({
+ mappings
+}, {
+ line,
+ columnStart,
+ columnEnd
+}) {
+ return filterSortedArray(mappings, ({
+ original: outOriginal
+ }) => {
+ if (line > outOriginal.line) return -1;
+ if (line < outOriginal.line) return 1;
+ if (columnStart >= outOriginal.columnEnd) return -1;
+ if (columnEnd <= outOriginal.columnStart) return 1;
+ return 0;
+ });
+}
+
+function eachInputGeneratedRange(map, callback) {
+ for (const {
+ source,
+ mappings
+ } of map.sources) {
+ for (const {
+ original,
+ generated
+ } of mappings) {
+ for (const item of generated) {
+ callback(item, original, source);
+ }
+ }
+ }
+}
+
+function buildMappingData(map) {
+ const consumer = new (_sourceMap().SourceMapConsumer)(Object.assign({}, map, {
+ sourceRoot: null
+ }));
+ const sources = new Map();
+ const mappings = new Map();
+ let last = null;
+ consumer.computeColumnSpans();
+ consumer.eachMapping(m => {
+ if (m.originalLine === null) return;
+ let source = sources.get(m.source);
+
+ if (!source) {
+ source = {
+ path: m.source,
+ content: consumer.sourceContentFor(m.source, true)
+ };
+ sources.set(m.source, source);
+ }
+
+ let sourceData = mappings.get(source);
+
+ if (!sourceData) {
+ sourceData = {
+ source,
+ mappings: []
+ };
+ mappings.set(source, sourceData);
+ }
+
+ const obj = {
+ line: m.originalLine,
+ columnStart: m.originalColumn,
+ columnEnd: Infinity,
+ name: m.name
+ };
+
+ if (last && last.source === source && last.mapping.line === m.originalLine) {
+ last.mapping.columnEnd = m.originalColumn;
+ }
+
+ last = {
+ source,
+ mapping: obj
+ };
+ sourceData.mappings.push({
+ original: obj,
+ generated: consumer.allGeneratedPositionsFor({
+ source: m.source,
+ line: m.originalLine,
+ column: m.originalColumn
+ }).map(item => ({
+ line: item.line,
+ columnStart: item.column,
+ columnEnd: item.lastColumn + 1
+ }))
+ });
+ }, null, _sourceMap().SourceMapConsumer.ORIGINAL_ORDER);
+ return {
+ file: map.file,
+ sourceRoot: map.sourceRoot,
+ sources: Array.from(mappings.values())
+ };
+}
+
+function findInsertionLocation(array, callback) {
+ let left = 0;
+ let right = array.length;
+
+ while (left < right) {
+ const mid = Math.floor((left + right) / 2);
+ const item = array[mid];
+ const result = callback(item);
+
+ if (result === 0) {
+ left = mid;
+ break;
+ }
+
+ if (result >= 0) {
+ right = mid;
+ } else {
+ left = mid + 1;
+ }
+ }
+
+ let i = left;
+
+ if (i < array.length) {
+ while (i >= 0 && callback(array[i]) >= 0) {
+ i--;
+ }
+
+ return i + 1;
+ }
+
+ return i;
+}
+
+function filterSortedArray(array, callback) {
+ const start = findInsertionLocation(array, callback);
+ const results = [];
+
+ for (let i = start; i < array.length && callback(array[i]) === 0; i++) {
+ results.push(array[i]);
+ }
+
+ return results;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js
new file mode 100644
index 0000000000..0ac432289b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/index.js
@@ -0,0 +1,124 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.run = run;
+
+function _traverse() {
+ const data = require("@babel/traverse");
+
+ _traverse = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _pluginPass = require("./plugin-pass");
+
+var _blockHoistPlugin = require("./block-hoist-plugin");
+
+var _normalizeOpts = require("./normalize-opts");
+
+var _normalizeFile = require("./normalize-file");
+
+var _generate = require("./file/generate");
+
+function* run(config, code, ast) {
+ const file = yield* (0, _normalizeFile.default)(config.passes, (0, _normalizeOpts.default)(config), code, ast);
+ const opts = file.opts;
+
+ try {
+ yield* transformFile(file, config.passes);
+ } catch (e) {
+ var _opts$filename;
+
+ e.message = `${(_opts$filename = opts.filename) != null ? _opts$filename : "unknown"}: ${e.message}`;
+
+ if (!e.code) {
+ e.code = "BABEL_TRANSFORM_ERROR";
+ }
+
+ throw e;
+ }
+
+ let outputCode, outputMap;
+
+ try {
+ if (opts.code !== false) {
+ ({
+ outputCode,
+ outputMap
+ } = (0, _generate.default)(config.passes, file));
+ }
+ } catch (e) {
+ var _opts$filename2;
+
+ e.message = `${(_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown"}: ${e.message}`;
+
+ if (!e.code) {
+ e.code = "BABEL_GENERATE_ERROR";
+ }
+
+ throw e;
+ }
+
+ return {
+ metadata: file.metadata,
+ options: opts,
+ ast: opts.ast === true ? file.ast : null,
+ code: outputCode === undefined ? null : outputCode,
+ map: outputMap === undefined ? null : outputMap,
+ sourceType: file.ast.program.sourceType
+ };
+}
+
+function* transformFile(file, pluginPasses) {
+ for (const pluginPairs of pluginPasses) {
+ const passPairs = [];
+ const passes = [];
+ const visitors = [];
+
+ for (const plugin of pluginPairs.concat([(0, _blockHoistPlugin.default)()])) {
+ const pass = new _pluginPass.default(file, plugin.key, plugin.options);
+ passPairs.push([plugin, pass]);
+ passes.push(pass);
+ visitors.push(plugin.visitor);
+ }
+
+ for (const [plugin, pass] of passPairs) {
+ const fn = plugin.pre;
+
+ if (fn) {
+ const result = fn.call(pass, file);
+ yield* [];
+
+ if (isThenable(result)) {
+ throw new Error(`You appear to be using an plugin with an async .pre, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+ }
+ }
+
+ const visitor = _traverse().default.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod);
+
+ (0, _traverse().default)(file.ast, visitor, file.scope);
+
+ for (const [plugin, pass] of passPairs) {
+ const fn = plugin.post;
+
+ if (fn) {
+ const result = fn.call(pass, file);
+ yield* [];
+
+ if (isThenable(result)) {
+ throw new Error(`You appear to be using an plugin with an async .post, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+ }
+ }
+ }
+}
+
+function isThenable(val) {
+ return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js
new file mode 100644
index 0000000000..dc434ed8c7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-file.js
@@ -0,0 +1,167 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = normalizeFile;
+
+function _fs() {
+ const data = require("fs");
+
+ _fs = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _debug() {
+ const data = require("debug");
+
+ _debug = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _t() {
+ const data = require("@babel/types");
+
+ _t = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function _convertSourceMap() {
+ const data = require("convert-source-map");
+
+ _convertSourceMap = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _file = require("./file/file");
+
+var _parser = require("../parser");
+
+var _cloneDeep = require("./util/clone-deep");
+
+const {
+ file,
+ traverseFast
+} = _t();
+
+const debug = _debug()("babel:transform:file");
+
+const LARGE_INPUT_SOURCEMAP_THRESHOLD = 1000000;
+
+function* normalizeFile(pluginPasses, options, code, ast) {
+ code = `${code || ""}`;
+
+ if (ast) {
+ if (ast.type === "Program") {
+ ast = file(ast, [], []);
+ } else if (ast.type !== "File") {
+ throw new Error("AST root must be a Program or File node");
+ }
+
+ if (options.cloneInputAst) {
+ ast = (0, _cloneDeep.default)(ast);
+ }
+ } else {
+ ast = yield* (0, _parser.default)(pluginPasses, options, code);
+ }
+
+ let inputMap = null;
+
+ if (options.inputSourceMap !== false) {
+ if (typeof options.inputSourceMap === "object") {
+ inputMap = _convertSourceMap().fromObject(options.inputSourceMap);
+ }
+
+ if (!inputMap) {
+ const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);
+
+ if (lastComment) {
+ try {
+ inputMap = _convertSourceMap().fromComment(lastComment);
+ } catch (err) {
+ debug("discarding unknown inline input sourcemap", err);
+ }
+ }
+ }
+
+ if (!inputMap) {
+ const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);
+
+ if (typeof options.filename === "string" && lastComment) {
+ try {
+ const match = EXTERNAL_SOURCEMAP_REGEX.exec(lastComment);
+
+ const inputMapContent = _fs().readFileSync(_path().resolve(_path().dirname(options.filename), match[1]));
+
+ if (inputMapContent.length > LARGE_INPUT_SOURCEMAP_THRESHOLD) {
+ debug("skip merging input map > 1 MB");
+ } else {
+ inputMap = _convertSourceMap().fromJSON(inputMapContent);
+ }
+ } catch (err) {
+ debug("discarding unknown file input sourcemap", err);
+ }
+ } else if (lastComment) {
+ debug("discarding un-loadable file input sourcemap");
+ }
+ }
+ }
+
+ return new _file.default(options, {
+ code,
+ ast,
+ inputMap
+ });
+}
+
+const INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/;
+const EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/;
+
+function extractCommentsFromList(regex, comments, lastComment) {
+ if (comments) {
+ comments = comments.filter(({
+ value
+ }) => {
+ if (regex.test(value)) {
+ lastComment = value;
+ return false;
+ }
+
+ return true;
+ });
+ }
+
+ return [comments, lastComment];
+}
+
+function extractComments(regex, ast) {
+ let lastComment = null;
+ traverseFast(ast, node => {
+ [node.leadingComments, lastComment] = extractCommentsFromList(regex, node.leadingComments, lastComment);
+ [node.innerComments, lastComment] = extractCommentsFromList(regex, node.innerComments, lastComment);
+ [node.trailingComments, lastComment] = extractCommentsFromList(regex, node.trailingComments, lastComment);
+ });
+ return lastComment;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js
new file mode 100644
index 0000000000..6e2cb000ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/normalize-opts.js
@@ -0,0 +1,62 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = normalizeOptions;
+
+function _path() {
+ const data = require("path");
+
+ _path = function () {
+ return data;
+ };
+
+ return data;
+}
+
+function normalizeOptions(config) {
+ const {
+ filename,
+ cwd,
+ filenameRelative = typeof filename === "string" ? _path().relative(cwd, filename) : "unknown",
+ sourceType = "module",
+ inputSourceMap,
+ sourceMaps = !!inputSourceMap,
+ sourceRoot = config.options.moduleRoot,
+ sourceFileName = _path().basename(filenameRelative),
+ comments = true,
+ compact = "auto"
+ } = config.options;
+ const opts = config.options;
+ const options = Object.assign({}, opts, {
+ parserOpts: Object.assign({
+ sourceType: _path().extname(filenameRelative) === ".mjs" ? "module" : sourceType,
+ sourceFileName: filename,
+ plugins: []
+ }, opts.parserOpts),
+ generatorOpts: Object.assign({
+ filename,
+ auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
+ auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
+ retainLines: opts.retainLines,
+ comments,
+ shouldPrintComment: opts.shouldPrintComment,
+ compact,
+ minified: opts.minified,
+ sourceMaps,
+ sourceRoot,
+ sourceFileName
+ }, opts.generatorOpts)
+ });
+
+ for (const plugins of config.passes) {
+ for (const plugin of plugins) {
+ if (plugin.manipulateOptions) {
+ plugin.manipulateOptions(options, options.parserOpts);
+ }
+ }
+ }
+
+ return options;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js
new file mode 100644
index 0000000000..920558a051
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js
@@ -0,0 +1,54 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+class PluginPass {
+ constructor(file, key, options) {
+ this._map = new Map();
+ this.key = void 0;
+ this.file = void 0;
+ this.opts = void 0;
+ this.cwd = void 0;
+ this.filename = void 0;
+ this.key = key;
+ this.file = file;
+ this.opts = options || {};
+ this.cwd = file.opts.cwd;
+ this.filename = file.opts.filename;
+ }
+
+ set(key, val) {
+ this._map.set(key, val);
+ }
+
+ get(key) {
+ return this._map.get(key);
+ }
+
+ availableHelper(name, versionRange) {
+ return this.file.availableHelper(name, versionRange);
+ }
+
+ addHelper(name) {
+ return this.file.addHelper(name);
+ }
+
+ addImport() {
+ return this.file.addImport();
+ }
+
+ buildCodeFrameError(node, msg, _Error) {
+ return this.file.buildCodeFrameError(node, msg, _Error);
+ }
+
+}
+
+exports.default = PluginPass;
+{
+ PluginPass.prototype.getModuleName = function getModuleName() {
+ return this.file.getModuleName();
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js
new file mode 100644
index 0000000000..a42de824d8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep-browser.js
@@ -0,0 +1,25 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+const serialized = "$$ babel internal serialized type" + Math.random();
+
+function serialize(key, value) {
+ if (typeof value !== "bigint") return value;
+ return {
+ [serialized]: "BigInt",
+ value: value.toString()
+ };
+}
+
+function revive(key, value) {
+ if (!value || typeof value !== "object") return value;
+ if (value[serialized] !== "BigInt") return value;
+ return BigInt(value.value);
+}
+
+function _default(value) {
+ return JSON.parse(JSON.stringify(value, serialize), revive);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js
new file mode 100644
index 0000000000..35fbd093eb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/util/clone-deep.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+function _v() {
+ const data = require("v8");
+
+ _v = function () {
+ return data;
+ };
+
+ return data;
+}
+
+var _cloneDeepBrowser = require("./clone-deep-browser");
+
+function _default(value) {
+ if (_v().deserialize && _v().serialize) {
+ return _v().deserialize(_v().serialize(value));
+ }
+
+ return (0, _cloneDeepBrowser.default)(value);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/LICENSE b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/README.md b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/README.md
new file mode 100644
index 0000000000..2293a14fdc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/README.md
@@ -0,0 +1,443 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+ are equal. Sorts in ascending order if passed to `Array.sort()`.
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean(' =v2.1.5')`: `2.1.5`
+* `s.clean(' 2.1.5 ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/bin/semver.js b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000000..666034a75d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/bin/semver.js
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(a.slice(indexOfEqualSign + 1))
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+ versions = versions.map(function (v) {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter(function (v) {
+ return semver.valid(v)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+ for (var i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? 'rcompare' : 'compare'
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, options)
+ }).map(function (v) {
+ return semver.clean(v, options)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, options, identifier) : v
+ }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+ console.log(['SemVer ' + version,
+ '',
+ 'A JavaScript implementation of the https://semver.org/ specification',
+ 'Copyright Isaac Z. Schlueter',
+ '',
+ 'Usage: semver [options] <version> [<version> [...]]',
+ 'Prints valid versions sorted by SemVer precedence',
+ '',
+ 'Options:',
+ '-r --range <range>',
+ ' Print versions that match the specified range.',
+ '',
+ '-i --increment [<level>]',
+ ' Increment a version by the specified level. Level can',
+ ' be one of: major, minor, patch, premajor, preminor,',
+ " prepatch, or prerelease. Default level is 'patch'.",
+ ' Only one version may be specified.',
+ '',
+ '--preid <identifier>',
+ ' Identifier to be used to prefix premajor, preminor,',
+ ' prepatch or prerelease version increments.',
+ '',
+ '-l --loose',
+ ' Interpret versions and ranges loosely',
+ '',
+ '-p --include-prerelease',
+ ' Always include prerelease versions in range matching',
+ '',
+ '-c --coerce',
+ ' Coerce a string into SemVer if possible',
+ ' (does not imply --loose)',
+ '',
+ '--rtl',
+ ' Coerce version strings right to left',
+ '',
+ '--ltr',
+ ' Coerce version strings left to right (default)',
+ '',
+ 'Program exits successfully if any valid version satisfies',
+ 'all supplied ranges, and prints all satisfying versions.',
+ '',
+ 'If no satisfying versions are found, then exits failure.',
+ '',
+ 'Versions are printed in ascending order, so supplying',
+ 'multiple versions to the utility will just sort them.'
+ ].join('\n'))
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/package.json b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/package.json
new file mode 100644
index 0000000000..bdd442f500
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "semver",
+ "version": "6.3.0",
+ "description": "The semantic version parser used by npm.",
+ "main": "semver.js",
+ "scripts": {
+ "test": "tap",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --follow-tags"
+ },
+ "devDependencies": {
+ "tap": "^14.3.1"
+ },
+ "license": "ISC",
+ "repository": "https://github.com/npm/node-semver",
+ "bin": {
+ "semver": "./bin/semver.js"
+ },
+ "files": [
+ "bin",
+ "range.bnf",
+ "semver.js"
+ ],
+ "tap": {
+ "check-coverage": true
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/range.bnf b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/range.bnf
new file mode 100644
index 0000000000..d4c6ae0d76
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/semver.js b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/semver.js
new file mode 100644
index 0000000000..636fa4365a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/node_modules/semver/semver.js
@@ -0,0 +1,1596 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function () {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.unshift('SEMVER')
+ console.log.apply(console, args)
+ }
+} else {
+ debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+
+function tok (n) {
+ t[n] = R++
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')'
+
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+ '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+ src[t.PRERELEASE] + '?' +
+ src[t.BUILD] + '?'
+
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+ src[t.PRERELEASELOOSE] + '?' +
+ src[t.BUILD] + '?'
+
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[t.PRERELEASE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+ '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
+
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
+
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
+
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+ '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s*$'
+
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
+
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i])
+ if (!re[i]) {
+ re[i] = new RegExp(src[i])
+ }
+}
+
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
+
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL]
+ if (!r.test(version)) {
+ return null
+ }
+
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
+
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
+
+SemVer.prototype.toString = function () {
+ return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ var i = 0
+ do {
+ var a = this.build[i]
+ var b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version
+ } catch (er) {
+ return null
+ }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+ if (eq(version1, version2)) {
+ return null
+ } else {
+ var v1 = parse(version1)
+ var v2 = parse(version2)
+ var prefix = ''
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre'
+ var defaultResult = 'prerelease'
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
+ }
+ }
+ return defaultResult // may be undefined
+ }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
+
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+ var versionA = new SemVer(a, loose)
+ var versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose)
+ })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose)
+ })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError('Invalid operator: ' + op)
+ }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
+
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+}
+
+Comparator.prototype.toString = function () {
+ return this.value
+}
+
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ var rangeTmp
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ rangeTmp = new Range(comp.value, options)
+ return satisfies(this.value, rangeTmp, options)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ rangeTmp = new Range(this.value, options)
+ return satisfies(comp.semver, rangeTmp, options)
+ }
+
+ var sameDirectionIncreasing =
+ (this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '>=' || comp.operator === '>')
+ var sameDirectionDecreasing =
+ (this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '<=' || comp.operator === '<')
+ var sameSemVer = this.semver.version === comp.semver.version
+ var differentDirectionsInclusive =
+ (this.operator === '>=' || this.operator === '<=') &&
+ (comp.operator === '>=' || comp.operator === '<=')
+ var oppositeDirectionsLessThan =
+ cmp(this.semver, '<', comp.semver, options) &&
+ ((this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '<=' || comp.operator === '<'))
+ var oppositeDirectionsGreaterThan =
+ cmp(this.semver, '>', comp.semver, options) &&
+ ((this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '>=' || comp.operator === '>'))
+
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First, split based on boolean or ||
+ this.raw = range
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim())
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length
+ })
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range)
+ }
+
+ this.format()
+}
+
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
+
+Range.prototype.toString = function () {
+ return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose
+ range = range.trim()
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace)
+ debug('hyphen replace', range)
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range, re[t.COMPARATORTRIM])
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options)
+ }, this).join(' ').split(/\s+/)
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe)
+ })
+ }
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options)
+ }, this)
+
+ return set
+}
+
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some(function (thisComparators) {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some(function (rangeComparators) {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+}
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+ var result = true
+ var remainingComparators = comparators.slice()
+ var testComparator = remainingComparators.pop()
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options)
+ })
+
+ testComparator = remainingComparators.pop()
+ }
+
+ return result
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value
+ }).join(' ').trim().split(' ')
+ })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options)
+ }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options)
+ }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+ debug('caret', comp, options)
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+ comp = comp.trim()
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ var xM = isX(M)
+ var xm = xM || isX(m)
+ var xp = xm || isX(p)
+ var anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0' + pr
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(re[t.STAR], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0'
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0'
+ } else {
+ from = '>=' + from
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0'
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0'
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+ } else {
+ to = '<=' + to
+ }
+
+ return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
+
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+ var max = null
+ var maxSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+ var min = null
+ var minSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+ range = new Range(range, loose)
+
+ var minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator)
+ }
+ })
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+ return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+ return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ var gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version, options) {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ options = options || {}
+
+ var match = null
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next
+ while ((next = re[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ re[t.COERCERTL].lastIndex = -1
+ }
+
+ if (match === null) {
+ return null
+ }
+
+ return parse(match[2] +
+ '.' + (match[3] || '0') +
+ '.' + (match[4] || '0'), options)
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/core/package.json b/tools/node_modules/eslint/node_modules/@babel/core/package.json
new file mode 100644
index 0000000000..b18d56a304
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/core/package.json
@@ -0,0 +1,76 @@
+{
+ "name": "@babel/core",
+ "version": "7.16.0",
+ "description": "Babel compiler core.",
+ "main": "./lib/index.js",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-core"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-core",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20core%22+is%3Aopen",
+ "keywords": [
+ "6to5",
+ "babel",
+ "classes",
+ "const",
+ "es6",
+ "harmony",
+ "let",
+ "modules",
+ "transpile",
+ "transpiler",
+ "var",
+ "babel-core",
+ "compiler"
+ ],
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ },
+ "browser": {
+ "./lib/config/files/index.js": "./lib/config/files/index-browser.js",
+ "./lib/config/resolve-targets.js": "./lib/config/resolve-targets-browser.js",
+ "./lib/transform-file.js": "./lib/transform-file-browser.js",
+ "./lib/transformation/util/clone-deep.js": "./lib/transformation/util/clone-deep-browser.js",
+ "./src/config/files/index.ts": "./src/config/files/index-browser.ts",
+ "./src/config/resolve-targets.ts": "./src/config/resolve-targets-browser.ts",
+ "./src/transform-file.ts": "./src/transform-file-browser.ts",
+ "./src/transformation/util/clone-deep.ts": "./src/transformation/util/clone-deep-browser.ts"
+ },
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-compilation-targets": "^7.16.0",
+ "@babel/helper-module-transforms": "^7.16.0",
+ "@babel/helpers": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.1.2",
+ "semver": "^6.3.0",
+ "source-map": "^0.5.0"
+ },
+ "devDependencies": {
+ "@babel/helper-transform-fixture-test-runner": "^7.16.0",
+ "@babel/plugin-transform-modules-commonjs": "^7.16.0",
+ "@types/convert-source-map": "^1.5.1",
+ "@types/debug": "^4.1.0",
+ "@types/resolve": "^1.3.2",
+ "@types/semver": "^5.4.0",
+ "@types/source-map": "^0.5.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/LICENSE b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/README.md b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/README.md
new file mode 100644
index 0000000000..ca435373ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/README.md
@@ -0,0 +1,124 @@
+# @babel/eslint-parser [![npm](https://img.shields.io/npm/v/@babel/eslint-parser.svg)](https://www.npmjs.com/package/@babel/eslint-parser) [![travis](https://img.shields.io/travis/babel/@babel/eslint-parser/main.svg)](https://travis-ci.org/babel/@babel/eslint-parser) [![npm-downloads](https://img.shields.io/npm/dm/@babel/eslint-parser.svg)](https://www.npmjs.com/package/@babel/eslint-parser)
+
+**@babel/eslint-parser** allows you to lint **ALL** valid Babel code with the fantastic
+[ESLint](https://github.com/eslint/eslint).
+
+## When should I use @babel/eslint-parser?
+
+ESLint's default parser and core rules [only support the latest final ECMAScript standard](https://github.com/eslint/eslint/blob/a675c89573836adaf108a932696b061946abf1e6/README.md#what-about-experimental-features) and do not support experimental (such as new features) and non-standard (such as Flow or TypeScript types) syntax provided by Babel. @babel/eslint-parser is a parser that allows ESLint to run on source code that is transformed by Babel.
+
+**Note:** You only need to use @babel/eslint-parser if you are using Babel to transform your code. If this is not the case, please use the relevant parser for your chosen flavor of ECMAScript (note that the default parser supports all non-experimental syntax as well as JSX).
+
+## How does it work?
+
+ESLint allows for the use of [custom parsers](https://eslint.org/docs/developer-guide/working-with-custom-parsers). When using this plugin, your code is parsed by Babel's parser (using the configuration specified in your [Babel configuration file](https://babeljs.io/docs/en/configuration)) and the resulting AST is
+transformed into an [ESTree](https://github.com/estree/estree)-compliant structure that ESLint can understand. All location info such as line numbers,
+columns is also retained so you can track down errors with ease.
+
+**Note:** ESLint's core rules do not support experimental syntax and may therefore not work as expected when using `@babel/eslint-parser`. Please use the companion [`@babel/eslint-plugin`](https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin) plugin for core rules that you have issues with.
+
+## Usage
+
+### Installation
+
+```sh
+$ npm install eslint @babel/core @babel/eslint-parser --save-dev
+# or
+$ yarn add eslint @babel/core @babel/eslint-parser -D
+```
+
+**Note:** @babel/eslint-parser requires `@babel/core@>=7.2.0` and a valid Babel configuration file to run. If you do not have this already set up, please see the [Babel Usage Guide](https://babeljs.io/docs/en/usage).
+
+### Setup
+
+To use @babel/eslint-parser, `"@babel/eslint-parser"` must be specified as the `parser` in your ESLint configuration file (see [here](https://eslint.org/docs/user-guide/configuring/plugins#specifying-parser) for more detailed information).
+
+**.eslintrc.js**
+
+```js
+module.exports = {
+ parser: "@babel/eslint-parser",
+};
+```
+
+With the parser set, your configuration can be configured as described in the [Configuring ESLint](https://eslint.org/docs/user-guide/configuring) documentation.
+
+**Note:** The `parserOptions` described in the [official documentation](https://eslint.org/docs/user-guide/configuring/language-options#specifying-parser-options) are for the default parser and are not necessarily supported by @babel/eslint-parser. Please see the section directly below for supported `parserOptions`.
+
+### Additional parser configuration
+
+Additional configuration options can be set in your ESLint configuration under the `parserOptions` key. Please note that the `ecmaFeatures` config property may still be required for ESLint to work properly with features not in ECMAScript 5 by default.
+
+- `requireConfigFile` (default `true`) can be set to `false` to allow @babel/eslint-parser to run on files that do not have a Babel configuration associated with them. This can be useful for linting files that are not transformed by Babel (such as tooling configuration files), though we recommend using the default parser via [glob-based configuration](https://eslint.org/docs/user-guide/configuring/configuration-files#configuration-based-on-glob-patterns). Note: @babel/eslint-parser will not parse any experimental syntax when no configuration file is found.
+- `sourceType` can be set to `"module"`(default) or `"script"` if your code isn't using ECMAScript modules.
+<!-- TODO(Babel 8): Remove this -->
+- `allowImportExportEverywhere` (default `false`) can be set to `true` to allow import and export declarations to appear anywhere a statement is allowed if your build environment supports that. Otherwise import and export declarations can only appear at a program's top level.
+- `ecmaFeatures.globalReturn` (default `false`) allow return statements in the global scope when used with `sourceType: "script"`.
+- `babelOptions` is an object containing Babel configuration [options](https://babeljs.io/docs/en/options) that are passed to Babel's parser at runtime. For cases where users might not want to use a Babel configuration file or are running Babel through another tool (such as Webpack with `babel-loader`).
+
+**.eslintrc.js**
+
+```js
+module.exports = {
+ parser: "@babel/eslint-parser",
+ parserOptions: {
+ sourceType: "module",
+ allowImportExportEverywhere: false,
+ ecmaFeatures: {
+ globalReturn: false,
+ },
+ babelOptions: {
+ configFile: "path/to/config.js",
+ },
+ },
+};
+```
+
+**.eslintrc.js using glob-based configuration**
+
+This configuration would use the default parser for all files except for those found by the `"files/transformed/by/babel/*.js"` glob.
+
+```js
+module.exports = {
+ rules: {
+ indent: "error",
+ },
+ overrides: [
+ {
+ files: ["files/transformed/by/babel/*.js"],
+ parser: "@babel/eslint-parser",
+ },
+ ],
+};
+```
+
+**Monorepo configuration**
+
+This configuration is useful for monorepo, when you are running ESLint on every package and not from the monorepo root folder, as it avoids to repeat the Babel and ESLint configuration on every package.
+
+```js
+module.exports = {
+ parser: "@babel/eslint-parser",
+ parserOptions: {
+ babelOptions: {
+ rootMode: "upward",
+ },
+ },
+};
+```
+
+### Run
+
+```sh
+$ ./node_modules/.bin/eslint yourfile.js
+```
+
+## TypeScript
+
+While [`@babel/eslint-parser`](https://github.com/babel/babel/tree/main/eslint/babel-eslint-parser) can parse TypeScript, we don't currently support linting TypeScript using the rules in [`@babel/eslint-plugin`](https://github.com/babel/babel/tree/main/eslint/babel-eslint-plugin). This is because the TypeScript community has centered around [`@typescript-eslint`](https://github.com/typescript-eslint/typescript-eslint) and we want to avoid duplicate work. Additionally, since [`@typescript-eslint`](https://github.com/typescript-eslint/typescript-eslint) uses TypeScript under the hood, its rules can be made type-aware, which is something Babel doesn't have the ability to do.
+
+## Questions and support
+
+If you have an issue, please first check if it can be reproduced with the default parser and with the latest versions of `eslint` and `@babel/eslint-parser`. If it is not reproducible with the default parser, it is most likely an issue with `@babel/eslint-parser`.
+
+For questions and support please visit the [`#discussion`](https://babeljs.slack.com/messages/discussion/) Babel Slack channel (sign up [here](https://slack.babeljs.io/)) or the [ESLint Discord server](https://eslint.org/chat).
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs
new file mode 100644
index 0000000000..9cec7bc3dc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs
@@ -0,0 +1,386 @@
+function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
+
+function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
+
+function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
+
+function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
+
+function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
+
+const escope = require("eslint-scope");
+
+const {
+ Definition
+} = require("eslint-scope/lib/definition");
+
+const OriginalPatternVisitor = require("eslint-scope/lib/pattern-visitor");
+
+const OriginalReferencer = require("eslint-scope/lib/referencer");
+
+const {
+ getKeys: fallback
+} = require("eslint-visitor-keys");
+
+let visitorKeysMap;
+
+function getVisitorValues(nodeType, client) {
+ if (visitorKeysMap) return visitorKeysMap[nodeType];
+ const {
+ FLOW_FLIPPED_ALIAS_KEYS,
+ VISITOR_KEYS
+ } = client.getTypesInfo();
+ const flowFlippedAliasKeys = FLOW_FLIPPED_ALIAS_KEYS.concat(["ArrayPattern", "ClassDeclaration", "ClassExpression", "FunctionDeclaration", "FunctionExpression", "Identifier", "ObjectPattern", "RestElement"]);
+ visitorKeysMap = Object.entries(VISITOR_KEYS).reduce((acc, [key, value]) => {
+ if (!flowFlippedAliasKeys.includes(value)) {
+ acc[key] = value;
+ }
+
+ return acc;
+ }, {});
+ return visitorKeysMap[nodeType];
+}
+
+const propertyTypes = {
+ callProperties: {
+ type: "loop",
+ values: ["value"]
+ },
+ indexers: {
+ type: "loop",
+ values: ["key", "value"]
+ },
+ properties: {
+ type: "loop",
+ values: ["argument", "value"]
+ },
+ types: {
+ type: "loop"
+ },
+ params: {
+ type: "loop"
+ },
+ argument: {
+ type: "single"
+ },
+ elementType: {
+ type: "single"
+ },
+ qualification: {
+ type: "single"
+ },
+ rest: {
+ type: "single"
+ },
+ returnType: {
+ type: "single"
+ },
+ typeAnnotation: {
+ type: "typeAnnotation"
+ },
+ typeParameters: {
+ type: "typeParameters"
+ },
+ id: {
+ type: "id"
+ }
+};
+
+class PatternVisitor extends OriginalPatternVisitor {
+ ArrayPattern(node) {
+ node.elements.forEach(this.visit, this);
+ }
+
+ ObjectPattern(node) {
+ node.properties.forEach(this.visit, this);
+ }
+
+}
+
+var _client = new WeakMap();
+
+class Referencer extends OriginalReferencer {
+ constructor(options, scopeManager, client) {
+ super(options, scopeManager);
+
+ _client.set(this, {
+ writable: true,
+ value: void 0
+ });
+
+ _classPrivateFieldSet(this, _client, client);
+ }
+
+ visitPattern(node, options, callback) {
+ if (!node) {
+ return;
+ }
+
+ this._checkIdentifierOrVisit(node.typeAnnotation);
+
+ if (node.type === "AssignmentPattern") {
+ this._checkIdentifierOrVisit(node.left.typeAnnotation);
+ }
+
+ if (typeof options === "function") {
+ callback = options;
+ options = {
+ processRightHandNodes: false
+ };
+ }
+
+ const visitor = new PatternVisitor(this.options, node, callback);
+ visitor.visit(node);
+
+ if (options.processRightHandNodes) {
+ visitor.rightHandNodes.forEach(this.visit, this);
+ }
+ }
+
+ visitClass(node) {
+ this._visitArray(node.decorators);
+
+ const typeParamScope = this._nestTypeParamScope(node);
+
+ this._visitTypeAnnotation(node.implements);
+
+ this._visitTypeAnnotation(node.superTypeParameters && node.superTypeParameters.params);
+
+ super.visitClass(node);
+
+ if (typeParamScope) {
+ this.close(node);
+ }
+ }
+
+ visitFunction(node) {
+ const typeParamScope = this._nestTypeParamScope(node);
+
+ this._checkIdentifierOrVisit(node.returnType);
+
+ super.visitFunction(node);
+
+ if (typeParamScope) {
+ this.close(node);
+ }
+ }
+
+ visitProperty(node) {
+ var _node$value;
+
+ if (((_node$value = node.value) == null ? void 0 : _node$value.type) === "TypeCastExpression") {
+ this._visitTypeAnnotation(node.value);
+ }
+
+ this._visitArray(node.decorators);
+
+ super.visitProperty(node);
+ }
+
+ InterfaceDeclaration(node) {
+ this._createScopeVariable(node, node.id);
+
+ const typeParamScope = this._nestTypeParamScope(node);
+
+ this._visitArray(node.extends);
+
+ this.visit(node.body);
+
+ if (typeParamScope) {
+ this.close(node);
+ }
+ }
+
+ TypeAlias(node) {
+ this._createScopeVariable(node, node.id);
+
+ const typeParamScope = this._nestTypeParamScope(node);
+
+ this.visit(node.right);
+
+ if (typeParamScope) {
+ this.close(node);
+ }
+ }
+
+ ClassProperty(node) {
+ this._visitClassProperty(node);
+ }
+
+ ClassPrivateProperty(node) {
+ this._visitClassProperty(node);
+ }
+
+ PropertyDefinition(node) {
+ this._visitClassProperty(node);
+ }
+
+ ClassPrivateMethod(node) {
+ super.MethodDefinition(node);
+ }
+
+ DeclareModule(node) {
+ this._visitDeclareX(node);
+ }
+
+ DeclareFunction(node) {
+ this._visitDeclareX(node);
+ }
+
+ DeclareVariable(node) {
+ this._visitDeclareX(node);
+ }
+
+ DeclareClass(node) {
+ this._visitDeclareX(node);
+ }
+
+ OptionalMemberExpression(node) {
+ super.MemberExpression(node);
+ }
+
+ _visitClassProperty(node) {
+ this._visitTypeAnnotation(node.typeAnnotation);
+
+ this.visitProperty(node);
+ }
+
+ _visitDeclareX(node) {
+ if (node.id) {
+ this._createScopeVariable(node, node.id);
+ }
+
+ const typeParamScope = this._nestTypeParamScope(node);
+
+ if (typeParamScope) {
+ this.close(node);
+ }
+ }
+
+ _createScopeVariable(node, name) {
+ this.currentScope().variableScope.__define(name, new Definition("Variable", name, node, null, null, null));
+ }
+
+ _nestTypeParamScope(node) {
+ if (!node.typeParameters) {
+ return null;
+ }
+
+ const parentScope = this.scopeManager.__currentScope;
+ const scope = new escope.Scope(this.scopeManager, "type-parameters", parentScope, node, false);
+
+ this.scopeManager.__nestScope(scope);
+
+ for (let j = 0; j < node.typeParameters.params.length; j++) {
+ const name = node.typeParameters.params[j];
+
+ scope.__define(name, new Definition("TypeParameter", name, name));
+
+ if (name.typeAnnotation) {
+ this._checkIdentifierOrVisit(name);
+ }
+ }
+
+ scope.__define = function () {
+ return parentScope.__define.apply(parentScope, arguments);
+ };
+
+ return scope;
+ }
+
+ _visitTypeAnnotation(node) {
+ if (!node) {
+ return;
+ }
+
+ if (Array.isArray(node)) {
+ node.forEach(this._visitTypeAnnotation, this);
+ return;
+ }
+
+ const visitorValues = getVisitorValues(node.type, _classPrivateFieldGet(this, _client));
+
+ if (!visitorValues) {
+ return;
+ }
+
+ for (let i = 0; i < visitorValues.length; i++) {
+ const visitorValue = visitorValues[i];
+ const propertyType = propertyTypes[visitorValue];
+ const nodeProperty = node[visitorValue];
+
+ if (propertyType == null || nodeProperty == null) {
+ continue;
+ }
+
+ if (propertyType.type === "loop") {
+ for (let j = 0; j < nodeProperty.length; j++) {
+ if (Array.isArray(propertyType.values)) {
+ for (let k = 0; k < propertyType.values.length; k++) {
+ const loopPropertyNode = nodeProperty[j][propertyType.values[k]];
+
+ if (loopPropertyNode) {
+ this._checkIdentifierOrVisit(loopPropertyNode);
+ }
+ }
+ } else {
+ this._checkIdentifierOrVisit(nodeProperty[j]);
+ }
+ }
+ } else if (propertyType.type === "single") {
+ this._checkIdentifierOrVisit(nodeProperty);
+ } else if (propertyType.type === "typeAnnotation") {
+ this._visitTypeAnnotation(node.typeAnnotation);
+ } else if (propertyType.type === "typeParameters") {
+ for (let l = 0; l < node.typeParameters.params.length; l++) {
+ this._checkIdentifierOrVisit(node.typeParameters.params[l]);
+ }
+ } else if (propertyType.type === "id") {
+ if (node.id.type === "Identifier") {
+ this._checkIdentifierOrVisit(node.id);
+ } else {
+ this._visitTypeAnnotation(node.id);
+ }
+ }
+ }
+ }
+
+ _checkIdentifierOrVisit(node) {
+ if (node != null && node.typeAnnotation) {
+ this._visitTypeAnnotation(node.typeAnnotation);
+ } else if ((node == null ? void 0 : node.type) === "Identifier") {
+ this.visit(node);
+ } else {
+ this._visitTypeAnnotation(node);
+ }
+ }
+
+ _visitArray(nodeList) {
+ if (nodeList) {
+ for (const node of nodeList) {
+ this.visit(node);
+ }
+ }
+ }
+
+}
+
+module.exports = function analyzeScope(ast, parserOptions, client) {
+ var _parserOptions$ecmaFe;
+
+ const options = {
+ ignoreEval: true,
+ optimistic: false,
+ directive: false,
+ nodejsScope: ast.sourceType === "script" && ((_parserOptions$ecmaFe = parserOptions.ecmaFeatures) == null ? void 0 : _parserOptions$ecmaFe.globalReturn) === true,
+ impliedStrict: false,
+ sourceType: ast.sourceType,
+ ecmaVersion: parserOptions.ecmaVersion,
+ fallback
+ };
+ options.childVisitorKeys = client.getVisitorKeys();
+ const scopeManager = new escope.ScopeManager(options);
+ const referencer = new Referencer(options, scopeManager, client);
+ referencer.visit(ast);
+ return scopeManager;
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs
new file mode 100644
index 0000000000..7fc018753d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs
@@ -0,0 +1,173 @@
+var _class, _worker, _signal, _temp, _worker_threads, _worker_threads_cache;
+
+function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
+
+function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
+
+function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } }
+
+function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } }
+
+function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
+
+function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
+
+function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
+
+function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
+
+function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
+
+const path = require("path");
+
+const ACTIONS = {
+ GET_VERSION: "GET_VERSION",
+ GET_TYPES_INFO: "GET_TYPES_INFO",
+ GET_VISITOR_KEYS: "GET_VISITOR_KEYS",
+ GET_TOKEN_LABELS: "GET_TOKEN_LABELS",
+ MAYBE_PARSE: "MAYBE_PARSE",
+ MAYBE_PARSE_SYNC: "MAYBE_PARSE_SYNC"
+};
+
+var _send = new WeakMap();
+
+var _vCache = new WeakMap();
+
+var _tiCache = new WeakMap();
+
+var _vkCache = new WeakMap();
+
+var _tlCache = new WeakMap();
+
+class Client {
+ constructor(send) {
+ _send.set(this, {
+ writable: true,
+ value: void 0
+ });
+
+ _vCache.set(this, {
+ writable: true,
+ value: void 0
+ });
+
+ _tiCache.set(this, {
+ writable: true,
+ value: void 0
+ });
+
+ _vkCache.set(this, {
+ writable: true,
+ value: void 0
+ });
+
+ _tlCache.set(this, {
+ writable: true,
+ value: void 0
+ });
+
+ _classPrivateFieldSet(this, _send, send);
+ }
+
+ getVersion() {
+ var _classPrivateFieldGet2;
+
+ return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _vCache)) != null ? _classPrivateFieldGet2 : _classPrivateFieldSet(this, _vCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_VERSION, undefined));
+ }
+
+ getTypesInfo() {
+ var _classPrivateFieldGet3;
+
+ return (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _tiCache)) != null ? _classPrivateFieldGet3 : _classPrivateFieldSet(this, _tiCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_TYPES_INFO, undefined));
+ }
+
+ getVisitorKeys() {
+ var _classPrivateFieldGet4;
+
+ return (_classPrivateFieldGet4 = _classPrivateFieldGet(this, _vkCache)) != null ? _classPrivateFieldGet4 : _classPrivateFieldSet(this, _vkCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_VISITOR_KEYS, undefined));
+ }
+
+ getTokLabels() {
+ var _classPrivateFieldGet5;
+
+ return (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _tlCache)) != null ? _classPrivateFieldGet5 : _classPrivateFieldSet(this, _tlCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_TOKEN_LABELS, undefined));
+ }
+
+ maybeParse(code, options) {
+ return _classPrivateFieldGet(this, _send).call(this, ACTIONS.MAYBE_PARSE, {
+ code,
+ options
+ });
+ }
+
+}
+
+exports.WorkerClient = (_temp = (_worker = new WeakMap(), _signal = new WeakMap(), _class = class WorkerClient extends Client {
+ constructor() {
+ super((action, payload) => {
+ _classPrivateFieldGet(this, _signal)[0] = 0;
+ const subChannel = new (_classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).MessageChannel)();
+
+ _classPrivateFieldGet(this, _worker).postMessage({
+ signal: _classPrivateFieldGet(this, _signal),
+ port: subChannel.port1,
+ action,
+ payload
+ }, [subChannel.port1]);
+
+ Atomics.wait(_classPrivateFieldGet(this, _signal), 0, 0);
+
+ const {
+ message
+ } = _classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).receiveMessageOnPort(subChannel.port2);
+
+ if (message.error) throw Object.assign(message.error, message.errorData);else return message.result;
+ });
+
+ _worker.set(this, {
+ writable: true,
+ value: new (_classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).Worker)(path.resolve(__dirname, "../lib/worker/index.cjs"), {
+ env: _classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).SHARE_ENV
+ })
+ });
+
+ _signal.set(this, {
+ writable: true,
+ value: new Int32Array(new SharedArrayBuffer(4))
+ });
+
+ _classPrivateFieldGet(this, _worker).unref();
+ }
+
+}), _worker_threads = {
+ get: _get_worker_threads,
+ set: void 0
+}, _worker_threads_cache = {
+ writable: true,
+ value: void 0
+}, _temp);
+
+function _get_worker_threads() {
+ var _classStaticPrivateFi2;
+
+ return (_classStaticPrivateFi2 = _classStaticPrivateFieldSpecGet(_class, _class, _worker_threads_cache)) != null ? _classStaticPrivateFi2 : _classStaticPrivateFieldSpecSet(_class, _class, _worker_threads_cache, require("worker_threads"));
+}
+
+{
+ var _class2, _temp2, _handleMessage;
+
+ exports.LocalClient = (_temp2 = _class2 = class LocalClient extends Client {
+ constructor() {
+ var _classStaticPrivateFi;
+
+ (_classStaticPrivateFi = _classStaticPrivateFieldSpecGet(LocalClient, _class2, _handleMessage)) != null ? _classStaticPrivateFi : _classStaticPrivateFieldSpecSet(LocalClient, _class2, _handleMessage, require("./worker/handle-message.cjs"));
+ super((action, payload) => {
+ return _classStaticPrivateFieldSpecGet(LocalClient, _class2, _handleMessage).call(LocalClient, action === ACTIONS.MAYBE_PARSE ? ACTIONS.MAYBE_PARSE_SYNC : action, payload);
+ });
+ }
+
+ }, _handleMessage = {
+ writable: true,
+ value: void 0
+ }, _temp2);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs
new file mode 100644
index 0000000000..03a5f88454
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs
@@ -0,0 +1,22 @@
+const _excluded = ["babelOptions", "ecmaVersion", "sourceType", "requireConfigFile"];
+
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+
+exports.normalizeESLintConfig = function (options) {
+ const {
+ babelOptions = {},
+ ecmaVersion = 2020,
+ sourceType = "module",
+ requireConfigFile = true
+ } = options,
+ otherOptions = _objectWithoutPropertiesLoose(options, _excluded);
+
+ return Object.assign({
+ babelOptions: Object.assign({
+ cwd: process.cwd()
+ }, babelOptions),
+ ecmaVersion: ecmaVersion === "latest" ? 1e8 : ecmaVersion,
+ sourceType,
+ requireConfigFile
+ }, otherOptions);
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs
new file mode 100644
index 0000000000..20647938b5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs
@@ -0,0 +1,157 @@
+const ESLINT_VERSION = require("../utils/eslint-version.cjs");
+
+function* it(children) {
+ if (Array.isArray(children)) yield* children;else yield children;
+}
+
+function traverse(node, visitorKeys, visitor) {
+ const {
+ type
+ } = node;
+ if (!type) return;
+ const keys = visitorKeys[type];
+ if (!keys) return;
+
+ for (const key of keys) {
+ for (const child of it(node[key])) {
+ if (child && typeof child === "object") {
+ visitor.enter(child);
+ traverse(child, visitorKeys, visitor);
+ visitor.exit(child);
+ }
+ }
+ }
+}
+
+const convertNodesVisitor = {
+ enter(node) {
+ if (node.innerComments) {
+ delete node.innerComments;
+ }
+
+ if (node.trailingComments) {
+ delete node.trailingComments;
+ }
+
+ if (node.leadingComments) {
+ delete node.leadingComments;
+ }
+ },
+
+ exit(node) {
+ if (node.extra) {
+ delete node.extra;
+ }
+
+ if (node.loc.identifierName) {
+ delete node.loc.identifierName;
+ }
+
+ if (node.type === "TypeParameter") {
+ node.type = "Identifier";
+ node.typeAnnotation = node.bound;
+ delete node.bound;
+ }
+
+ if (node.type === "QualifiedTypeIdentifier") {
+ delete node.id;
+ }
+
+ if (node.type === "ObjectTypeProperty") {
+ delete node.key;
+ }
+
+ if (node.type === "ObjectTypeIndexer") {
+ delete node.id;
+ }
+
+ if (node.type === "FunctionTypeParam") {
+ delete node.name;
+ }
+
+ if (node.type === "ImportDeclaration") {
+ delete node.isType;
+ }
+
+ if (node.type === "TemplateLiteral") {
+ for (let i = 0; i < node.quasis.length; i++) {
+ const q = node.quasis[i];
+ q.range[0] -= 1;
+
+ if (q.tail) {
+ q.range[1] += 1;
+ } else {
+ q.range[1] += 2;
+ }
+
+ q.loc.start.column -= 1;
+
+ if (q.tail) {
+ q.loc.end.column += 1;
+ } else {
+ q.loc.end.column += 2;
+ }
+
+ if (ESLINT_VERSION >= 8) {
+ q.start -= 1;
+
+ if (q.tail) {
+ q.end += 1;
+ } else {
+ q.end += 2;
+ }
+ }
+ }
+ }
+ }
+
+};
+
+function convertNodes(ast, visitorKeys) {
+ traverse(ast, visitorKeys, convertNodesVisitor);
+}
+
+function convertProgramNode(ast) {
+ ast.type = "Program";
+ ast.sourceType = ast.program.sourceType;
+ ast.body = ast.program.body;
+ delete ast.program;
+ delete ast.errors;
+
+ if (ast.comments.length) {
+ const lastComment = ast.comments[ast.comments.length - 1];
+
+ if (ast.tokens.length) {
+ const lastToken = ast.tokens[ast.tokens.length - 1];
+
+ if (lastComment.end > lastToken.end) {
+ ast.range[1] = lastToken.end;
+ ast.loc.end.line = lastToken.loc.end.line;
+ ast.loc.end.column = lastToken.loc.end.column;
+
+ if (ESLINT_VERSION >= 8) {
+ ast.end = lastToken.end;
+ }
+ }
+ }
+ } else {
+ if (!ast.tokens.length) {
+ ast.loc.start.line = 1;
+ ast.loc.end.line = 1;
+ }
+ }
+
+ if (ast.body && ast.body.length > 0) {
+ ast.loc.start.line = ast.body[0].loc.start.line;
+ ast.range[0] = ast.body[0].start;
+
+ if (ESLINT_VERSION >= 8) {
+ ast.start = ast.body[0].start;
+ }
+ }
+}
+
+module.exports = function convertAST(ast, visitorKeys) {
+ convertNodes(ast, visitorKeys);
+ convertProgramNode(ast);
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs
new file mode 100644
index 0000000000..61c464233f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs
@@ -0,0 +1,13 @@
+module.exports = function convertComments(comments) {
+ for (const comment of comments) {
+ if (comment.type === "CommentBlock") {
+ comment.type = "Block";
+ } else if (comment.type === "CommentLine") {
+ comment.type = "Line";
+ }
+
+ if (!comment.range) {
+ comment.range = [comment.start, comment.end];
+ }
+ }
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs
new file mode 100644
index 0000000000..3c7b529512
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs
@@ -0,0 +1,180 @@
+const ESLINT_VERSION = require("../utils/eslint-version.cjs");
+
+function convertTemplateType(tokens, tl) {
+ let curlyBrace = null;
+ let templateTokens = [];
+ const result = [];
+
+ function addTemplateType() {
+ const start = templateTokens[0];
+ const end = templateTokens[templateTokens.length - 1];
+ const value = templateTokens.reduce((result, token) => {
+ if (token.value) {
+ result += token.value;
+ } else if (token.type.label !== tl.template) {
+ result += token.type.label;
+ }
+
+ return result;
+ }, "");
+ result.push({
+ type: "Template",
+ value: value,
+ start: start.start,
+ end: end.end,
+ loc: {
+ start: start.loc.start,
+ end: end.loc.end
+ }
+ });
+ templateTokens = [];
+ }
+
+ tokens.forEach(token => {
+ switch (token.type.label) {
+ case tl.backQuote:
+ if (curlyBrace) {
+ result.push(curlyBrace);
+ curlyBrace = null;
+ }
+
+ templateTokens.push(token);
+
+ if (templateTokens.length > 1) {
+ addTemplateType();
+ }
+
+ break;
+
+ case tl.dollarBraceL:
+ templateTokens.push(token);
+ addTemplateType();
+ break;
+
+ case tl.braceR:
+ if (curlyBrace) {
+ result.push(curlyBrace);
+ }
+
+ curlyBrace = token;
+ break;
+
+ case tl.template:
+ if (curlyBrace) {
+ templateTokens.push(curlyBrace);
+ curlyBrace = null;
+ }
+
+ templateTokens.push(token);
+ break;
+
+ case tl.eof:
+ if (curlyBrace) {
+ result.push(curlyBrace);
+ }
+
+ break;
+
+ default:
+ if (curlyBrace) {
+ result.push(curlyBrace);
+ curlyBrace = null;
+ }
+
+ result.push(token);
+ }
+ });
+ return result;
+}
+
+function convertToken(token, source, tl) {
+ const {
+ type
+ } = token;
+ const {
+ label
+ } = type;
+ token.range = [token.start, token.end];
+
+ if (label === tl.name) {
+ if (token.value === "static") {
+ token.type = "Keyword";
+ } else {
+ token.type = "Identifier";
+ }
+ } else if (label === tl.semi || label === tl.comma || label === tl.parenL || label === tl.parenR || label === tl.braceL || label === tl.braceR || label === tl.slash || label === tl.dot || label === tl.bracketL || label === tl.bracketR || label === tl.ellipsis || label === tl.arrow || label === tl.pipeline || label === tl.star || label === tl.incDec || label === tl.colon || label === tl.question || label === tl.template || label === tl.backQuote || label === tl.dollarBraceL || label === tl.at || label === tl.logicalOR || label === tl.logicalAND || label === tl.nullishCoalescing || label === tl.bitwiseOR || label === tl.bitwiseXOR || label === tl.bitwiseAND || label === tl.equality || label === tl.relational || label === tl.bitShift || label === tl.plusMin || label === tl.modulo || label === tl.exponent || label === tl.bang || label === tl.tilde || label === tl.doubleColon || label === tl.hash || label === tl.questionDot || label === tl.braceHashL || label === tl.braceBarL || label === tl.braceBarR || label === tl.bracketHashL || label === tl.bracketBarL || label === tl.bracketBarR || type.isAssign) {
+ var _token$value;
+
+ token.type = "Punctuator";
+ (_token$value = token.value) != null ? _token$value : token.value = label;
+ } else if (label === tl.jsxTagStart) {
+ token.type = "Punctuator";
+ token.value = "<";
+ } else if (label === tl.jsxTagEnd) {
+ token.type = "Punctuator";
+ token.value = ">";
+ } else if (label === tl.jsxName) {
+ token.type = "JSXIdentifier";
+ } else if (label === tl.jsxText) {
+ token.type = "JSXText";
+ } else if (type.keyword === "null") {
+ token.type = "Null";
+ } else if (type.keyword === "false" || type.keyword === "true") {
+ token.type = "Boolean";
+ } else if (type.keyword) {
+ token.type = "Keyword";
+ } else if (label === tl.num) {
+ token.type = "Numeric";
+ token.value = source.slice(token.start, token.end);
+ } else if (label === tl.string) {
+ token.type = "String";
+ token.value = source.slice(token.start, token.end);
+ } else if (label === tl.regexp) {
+ token.type = "RegularExpression";
+ const value = token.value;
+ token.regex = {
+ pattern: value.pattern,
+ flags: value.flags
+ };
+ token.value = `/${value.pattern}/${value.flags}`;
+ } else if (label === tl.bigint) {
+ token.type = "Numeric";
+ token.value = `${token.value}n`;
+ } else if (label === tl.privateName) {
+ token.type = "PrivateIdentifier";
+ }
+
+ if (typeof token.type !== "string") {
+ delete token.type.rightAssociative;
+ }
+}
+
+module.exports = function convertTokens(tokens, code, tl) {
+ const result = [];
+ const withoutComments = convertTemplateType(tokens, tl).filter(t => t.type !== "CommentLine" && t.type !== "CommentBlock");
+
+ for (let i = 0, {
+ length
+ } = withoutComments; i < length; i++) {
+ const token = withoutComments[i];
+ {
+ if (ESLINT_VERSION >= 8 && i + 1 < length && token.type.label === tl.hash) {
+ const nextToken = withoutComments[i + 1];
+
+ if (nextToken.type.label === tl.name && token.end === nextToken.start) {
+ i++;
+ nextToken.type = "PrivateIdentifier";
+ nextToken.start -= 1;
+ nextToken.loc.start.column -= 1;
+ nextToken.range = [nextToken.start, nextToken.end];
+ result.push(nextToken);
+ continue;
+ }
+ }
+ }
+ convertToken(token, code, tl);
+ result.push(token);
+ }
+
+ return result;
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs
new file mode 100644
index 0000000000..63d23290bb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs
@@ -0,0 +1,21 @@
+const convertTokens = require("./convertTokens.cjs");
+
+const convertComments = require("./convertComments.cjs");
+
+const convertAST = require("./convertAST.cjs");
+
+exports.ast = function convert(ast, code, tokLabels, visitorKeys) {
+ ast.tokens = convertTokens(ast.tokens, code, tokLabels);
+ convertComments(ast.comments);
+ convertAST(ast, visitorKeys);
+ return ast;
+};
+
+exports.error = function convertError(err) {
+ if (err instanceof SyntaxError) {
+ err.lineNumber = err.loc.line;
+ err.column = err.loc.column;
+ }
+
+ return err;
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs
new file mode 100644
index 0000000000..994e647187
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs
@@ -0,0 +1,30 @@
+const [major, minor] = process.versions.node.split(".").map(Number);
+
+if (major < 12 || major === 12 && minor < 3) {
+ throw new Error("@babel/eslint-parser/experimental-worker requires Node.js >= 12.3.0");
+}
+
+const {
+ normalizeESLintConfig
+} = require("./configuration.cjs");
+
+const analyzeScope = require("./analyze-scope.cjs");
+
+const baseParse = require("./parse.cjs");
+
+const {
+ WorkerClient
+} = require("./client.cjs");
+
+const client = new WorkerClient();
+
+exports.parseForESLint = function (code, options = {}) {
+ const normalizedOptions = normalizeESLintConfig(options);
+ const ast = baseParse(code, normalizedOptions, client);
+ const scopeManager = analyzeScope(ast, normalizedOptions, client);
+ return {
+ ast,
+ scopeManager,
+ visitorKeys: client.getVisitorKeys()
+ };
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs
new file mode 100644
index 0000000000..e9eb7ba652
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs
@@ -0,0 +1,29 @@
+const {
+ normalizeESLintConfig
+} = require("./configuration.cjs");
+
+const analyzeScope = require("./analyze-scope.cjs");
+
+const baseParse = require("./parse.cjs");
+
+const {
+ LocalClient,
+ WorkerClient
+} = require("./client.cjs");
+
+const client = new LocalClient();
+
+exports.parse = function (code, options = {}) {
+ return baseParse(code, normalizeESLintConfig(options), client);
+};
+
+exports.parseForESLint = function (code, options = {}) {
+ const normalizedOptions = normalizeESLintConfig(options);
+ const ast = baseParse(code, normalizedOptions, client);
+ const scopeManager = analyzeScope(ast, normalizedOptions, client);
+ return {
+ ast,
+ scopeManager,
+ visitorKeys: client.getVisitorKeys()
+ };
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs
new file mode 100644
index 0000000000..05f87b0142
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs
@@ -0,0 +1,44 @@
+"use strict";
+
+const semver = require("semver");
+
+const convert = require("./convert/index.cjs");
+
+const babelParser = require((((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
+ paths: [b]
+}, M = require("module")) => {
+ let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
+
+ if (f) return f;
+ f = new Error(`Cannot resolve module '${r}'`);
+ f.code = "MODULE_NOT_FOUND";
+ throw f;
+})("@babel/parser", {
+ paths: [require.resolve("@babel/core/package.json")]
+}));
+
+let isRunningMinSupportedCoreVersion = null;
+
+module.exports = function parse(code, options, client) {
+ const minSupportedCoreVersion = ">=7.2.0";
+
+ if (typeof isRunningMinSupportedCoreVersion !== "boolean") {
+ isRunningMinSupportedCoreVersion = semver.satisfies(client.getVersion(), minSupportedCoreVersion);
+ }
+
+ if (!isRunningMinSupportedCoreVersion) {
+ throw new Error(`@babel/eslint-parser@${"7.16.3"} does not support @babel/core@${client.getVersion()}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`);
+ }
+
+ const {
+ ast,
+ parserOptions
+ } = client.maybeParse(code, options);
+ if (ast) return ast;
+
+ try {
+ return convert.ast(babelParser.parse(code, parserOptions), code, client.getTokLabels(), client.getVisitorKeys());
+ } catch (err) {
+ throw convert.error(err);
+ }
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/utils/eslint-version.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/utils/eslint-version.cjs
new file mode 100644
index 0000000000..e0e48f9714
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/utils/eslint-version.cjs
@@ -0,0 +1 @@
+module.exports = parseInt(require("eslint/package.json").version, 10); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs
new file mode 100644
index 0000000000..1c613777a0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs
@@ -0,0 +1,33 @@
+const ESLINT_VISITOR_KEYS = require("eslint-visitor-keys").KEYS;
+
+const babel = require("./babel-core.cjs");
+
+let visitorKeys;
+
+exports.getVisitorKeys = function getVisitorKeys() {
+ if (!visitorKeys) {
+ const newTypes = {
+ ChainExpression: ESLINT_VISITOR_KEYS.ChainExpression,
+ ImportExpression: ESLINT_VISITOR_KEYS.ImportExpression,
+ Literal: ESLINT_VISITOR_KEYS.Literal,
+ MethodDefinition: ["decorators"].concat(ESLINT_VISITOR_KEYS.MethodDefinition),
+ Property: ["decorators"].concat(ESLINT_VISITOR_KEYS.Property),
+ PropertyDefinition: ["decorators", "typeAnnotation"].concat(ESLINT_VISITOR_KEYS.PropertyDefinition)
+ };
+ const conflictTypes = {
+ ClassPrivateMethod: ["decorators"].concat(ESLINT_VISITOR_KEYS.MethodDefinition),
+ ExportAllDeclaration: ESLINT_VISITOR_KEYS.ExportAllDeclaration
+ };
+ visitorKeys = Object.assign({}, newTypes, babel.types.VISITOR_KEYS, conflictTypes);
+ }
+
+ return visitorKeys;
+};
+
+let tokLabels;
+
+exports.getTokLabels = function getTokLabels() {
+ return tokLabels || (tokLabels = (p => p.reduce((o, [k, v]) => Object.assign({}, o, {
+ [k]: v
+ }), {}))(Object.entries(babel.tokTypes).map(([key, tok]) => [key, tok.label])));
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs
new file mode 100644
index 0000000000..5c71230b18
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs
@@ -0,0 +1,15 @@
+function initialize(babel) {
+ exports.init = null;
+ exports.version = babel.version;
+ exports.traverse = babel.traverse;
+ exports.types = babel.types;
+ exports.tokTypes = babel.tokTypes;
+ exports.parseSync = babel.parseSync;
+ exports.loadPartialConfigSync = babel.loadPartialConfigSync;
+ exports.loadPartialConfigAsync = babel.loadPartialConfigAsync;
+ exports.createConfigItem = babel.createConfigItem;
+}
+
+{
+ initialize(require("@babel/core"));
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs
new file mode 100644
index 0000000000..4118434a2d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs
@@ -0,0 +1,99 @@
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+const babel = require("./babel-core.cjs");
+
+const ESLINT_VERSION = require("../utils/eslint-version.cjs");
+
+function getParserPlugins(babelOptions) {
+ var _babelOptions$parserO, _babelOptions$parserO2;
+
+ const babelParserPlugins = (_babelOptions$parserO = (_babelOptions$parserO2 = babelOptions.parserOpts) == null ? void 0 : _babelOptions$parserO2.plugins) != null ? _babelOptions$parserO : [];
+ const estreeOptions = {
+ classFeatures: ESLINT_VERSION >= 8
+ };
+
+ for (const plugin of babelParserPlugins) {
+ if (Array.isArray(plugin) && plugin[0] === "estree") {
+ Object.assign(estreeOptions, plugin[1]);
+ break;
+ }
+ }
+
+ return [["estree", estreeOptions], ...babelParserPlugins];
+}
+
+function normalizeParserOptions(options) {
+ var _options$allowImportE, _options$ecmaFeatures, _options$ecmaFeatures2;
+
+ return Object.assign({
+ sourceType: options.sourceType,
+ filename: options.filePath
+ }, options.babelOptions, {
+ parserOpts: Object.assign({}, {
+ allowImportExportEverywhere: (_options$allowImportE = options.allowImportExportEverywhere) != null ? _options$allowImportE : false,
+ allowSuperOutsideMethod: true
+ }, {
+ allowReturnOutsideFunction: (_options$ecmaFeatures = (_options$ecmaFeatures2 = options.ecmaFeatures) == null ? void 0 : _options$ecmaFeatures2.globalReturn) != null ? _options$ecmaFeatures : true
+ }, options.babelOptions.parserOpts, {
+ plugins: getParserPlugins(options.babelOptions),
+ attachComment: false,
+ ranges: true,
+ tokens: true
+ }),
+ caller: Object.assign({
+ name: "@babel/eslint-parser"
+ }, options.babelOptions.caller)
+ });
+}
+
+function validateResolvedConfig(config, options, parseOptions) {
+ if (config !== null) {
+ if (options.requireConfigFile !== false) {
+ if (!config.hasFilesystemConfig()) {
+ let error = `No Babel config file detected for ${config.options.filename}. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files.`;
+
+ if (config.options.filename.includes("node_modules")) {
+ error += `\nIf you have a .babelrc.js file or use package.json#babel, keep in mind that it's not used when parsing dependencies. If you want your config to be applied to your whole app, consider using babel.config.js or babel.config.json instead.`;
+ }
+
+ throw new Error(error);
+ }
+ }
+
+ if (config.options) return config.options;
+ }
+
+ return getDefaultParserOptions(parseOptions);
+}
+
+function getDefaultParserOptions(options) {
+ return Object.assign({
+ plugins: []
+ }, options, {
+ babelrc: false,
+ configFile: false,
+ browserslistConfigFile: false,
+ ignore: null,
+ only: null
+ });
+}
+
+exports.normalizeBabelParseConfig = function () {
+ var _ref = _asyncToGenerator(function* (options) {
+ const parseOptions = normalizeParserOptions(options);
+ const config = yield babel.loadPartialConfigAsync(parseOptions);
+ return validateResolvedConfig(config, options, parseOptions);
+ });
+
+ return function (_x) {
+ return _ref.apply(this, arguments);
+ };
+}();
+
+exports.normalizeBabelParseConfigSync = function (options) {
+ const parseOptions = normalizeParserOptions(options);
+ const config = babel.loadPartialConfigSync(parseOptions);
+ return validateResolvedConfig(config, options, parseOptions);
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs
new file mode 100644
index 0000000000..25f9072d41
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs
@@ -0,0 +1,8 @@
+module.exports = function extractParserOptionsPlugin() {
+ return {
+ parserOverride(code, opts) {
+ return opts;
+ }
+
+ };
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs
new file mode 100644
index 0000000000..ff7dfb151e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs
@@ -0,0 +1,42 @@
+const babel = require("./babel-core.cjs");
+
+const maybeParse = require("./maybeParse.cjs");
+
+const {
+ getVisitorKeys,
+ getTokLabels
+} = require("./ast-info.cjs");
+
+const {
+ normalizeBabelParseConfig,
+ normalizeBabelParseConfigSync
+} = require("./configuration.cjs");
+
+module.exports = function handleMessage(action, payload) {
+ switch (action) {
+ case "GET_VERSION":
+ return babel.version;
+
+ case "GET_TYPES_INFO":
+ return {
+ FLOW_FLIPPED_ALIAS_KEYS: babel.types.FLIPPED_ALIAS_KEYS.Flow,
+ VISITOR_KEYS: babel.types.VISITOR_KEYS
+ };
+
+ case "GET_TOKEN_LABELS":
+ return getTokLabels();
+
+ case "GET_VISITOR_KEYS":
+ return getVisitorKeys();
+
+ case "MAYBE_PARSE":
+ return normalizeBabelParseConfig(payload.options).then(options => maybeParse(payload.code, options));
+
+ case "MAYBE_PARSE_SYNC":
+ {
+ return maybeParse(payload.code, normalizeBabelParseConfigSync(payload.options));
+ }
+ }
+
+ throw new Error(`Unknown internal parser worker action: ${action}`);
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs
new file mode 100644
index 0000000000..86ae5fee79
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs
@@ -0,0 +1,50 @@
+function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
+
+function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
+
+const babel = require("./babel-core.cjs");
+
+const handleMessage = require("./handle-message.cjs");
+
+const {
+ parentPort
+} = require("worker_threads");
+
+parentPort.addListener("message", function () {
+ var _ref = _asyncToGenerator(function* ({
+ signal,
+ port,
+ action,
+ payload
+ }) {
+ let response;
+
+ try {
+ if (babel.init) yield babel.init;
+ response = {
+ result: yield handleMessage(action, payload)
+ };
+ } catch (error) {
+ response = {
+ error,
+ errorData: Object.assign({}, error)
+ };
+ }
+
+ try {
+ port.postMessage(response);
+ } catch (_unused) {
+ port.postMessage({
+ error: new Error("Cannot serialize worker response")
+ });
+ } finally {
+ port.close();
+ Atomics.store(signal, 0, 1);
+ Atomics.notify(signal, 0);
+ }
+ });
+
+ return function (_x) {
+ return _ref.apply(this, arguments);
+ };
+}()); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs
new file mode 100644
index 0000000000..c8a34bc326
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs
@@ -0,0 +1,53 @@
+const babel = require("./babel-core.cjs");
+
+const convert = require("../convert/index.cjs");
+
+const {
+ getVisitorKeys,
+ getTokLabels
+} = require("./ast-info.cjs");
+
+const extractParserOptionsPlugin = require("./extract-parser-options-plugin.cjs");
+
+const ref = {};
+let extractParserOptionsConfigItem;
+const MULTIPLE_OVERRIDES = /More than one plugin attempted to override parsing/;
+
+module.exports = function maybeParse(code, options) {
+ if (!extractParserOptionsConfigItem) {
+ extractParserOptionsConfigItem = babel.createConfigItem([extractParserOptionsPlugin, ref], {
+ dirname: __dirname,
+ type: "plugin"
+ });
+ }
+
+ const {
+ plugins
+ } = options;
+ options.plugins = plugins.concat(extractParserOptionsConfigItem);
+
+ try {
+ return {
+ parserOptions: babel.parseSync(code, options),
+ ast: null
+ };
+ } catch (err) {
+ if (!MULTIPLE_OVERRIDES.test(err.message)) {
+ throw err;
+ }
+ }
+
+ options.plugins = plugins;
+ let ast;
+
+ try {
+ ast = babel.parseSync(code, options);
+ } catch (err) {
+ throw convert.error(err);
+ }
+
+ return {
+ ast: convert.ast(ast, code, getTokLabels(), getVisitorKeys()),
+ parserOptions: null
+ };
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/LICENSE b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/LICENSE
new file mode 100644
index 0000000000..d36a526f7e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/LICENSE
@@ -0,0 +1,22 @@
+Copyright JS Foundation and other contributors, https://js.foundation
+Copyright (C) 2012-2013 Yusuke Suzuki (twitter: @Constellation) and other contributors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/README.md b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/README.md
new file mode 100644
index 0000000000..7e7ce0d345
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/README.md
@@ -0,0 +1,54 @@
+# ESLint Scope
+
+ESLint Scope is the [ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm) scope analyzer used in ESLint. It is a fork of [escope](http://github.com/estools/escope).
+
+## Usage
+
+Install:
+
+```
+npm i eslint-scope --save
+```
+
+Example:
+
+```js
+var eslintScope = require('eslint-scope');
+var espree = require('espree');
+var estraverse = require('estraverse');
+
+var ast = espree.parse(code);
+var scopeManager = eslintScope.analyze(ast);
+
+var currentScope = scopeManager.acquire(ast); // global scope
+
+estraverse.traverse(ast, {
+ enter: function(node, parent) {
+ // do stuff
+
+ if (/Function/.test(node.type)) {
+ currentScope = scopeManager.acquire(node); // get current function scope
+ }
+ },
+ leave: function(node, parent) {
+ if (/Function/.test(node.type)) {
+ currentScope = currentScope.upper; // set to parent scope
+ }
+
+ // do stuff
+ }
+});
+```
+
+## Contributing
+
+Issues and pull requests will be triaged and responded to as quickly as possible. We operate under the [ESLint Contributor Guidelines](http://eslint.org/docs/developer-guide/contributing), so please be sure to read them before contributing. If you're not sure where to dig in, check out the [issues](https://github.com/eslint/eslint-scope/issues).
+
+## Build Commands
+
+* `npm test` - run all linting and tests
+* `npm run lint` - run all linting
+
+## License
+
+ESLint Scope is licensed under a permissive BSD 2-clause license.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/definition.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/definition.js
new file mode 100644
index 0000000000..172bfe23b5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/definition.js
@@ -0,0 +1,86 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+const Variable = require("./variable");
+
+/**
+ * @class Definition
+ */
+class Definition {
+ constructor(type, name, node, parent, index, kind) {
+
+ /**
+ * @member {String} Definition#type - type of the occurrence (e.g. "Parameter", "Variable", ...).
+ */
+ this.type = type;
+
+ /**
+ * @member {espree.Identifier} Definition#name - the identifier AST node of the occurrence.
+ */
+ this.name = name;
+
+ /**
+ * @member {espree.Node} Definition#node - the enclosing node of the identifier.
+ */
+ this.node = node;
+
+ /**
+ * @member {espree.Node?} Definition#parent - the enclosing statement node of the identifier.
+ */
+ this.parent = parent;
+
+ /**
+ * @member {Number?} Definition#index - the index in the declaration statement.
+ */
+ this.index = index;
+
+ /**
+ * @member {String?} Definition#kind - the kind of the declaration statement.
+ */
+ this.kind = kind;
+ }
+}
+
+/**
+ * @class ParameterDefinition
+ */
+class ParameterDefinition extends Definition {
+ constructor(name, node, index, rest) {
+ super(Variable.Parameter, name, node, null, index, null);
+
+ /**
+ * Whether the parameter definition is a part of a rest parameter.
+ * @member {boolean} ParameterDefinition#rest
+ */
+ this.rest = rest;
+ }
+}
+
+module.exports = {
+ ParameterDefinition,
+ Definition
+};
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/index.js
new file mode 100644
index 0000000000..0f16fa40f8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/index.js
@@ -0,0 +1,165 @@
+/*
+ Copyright (C) 2012-2014 Yusuke Suzuki <utatane.tea@gmail.com>
+ Copyright (C) 2013 Alex Seville <hi@alexanderseville.com>
+ Copyright (C) 2014 Thiago de Arruda <tpadilha84@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/**
+ * Escope (<a href="http://github.com/estools/escope">escope</a>) is an <a
+ * href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMAScript</a>
+ * scope analyzer extracted from the <a
+ * href="http://github.com/estools/esmangle">esmangle project</a/>.
+ * <p>
+ * <em>escope</em> finds lexical scopes in a source program, i.e. areas of that
+ * program where different occurrences of the same identifier refer to the same
+ * variable. With each scope the contained variables are collected, and each
+ * identifier reference in code is linked to its corresponding variable (if
+ * possible).
+ * <p>
+ * <em>escope</em> works on a syntax tree of the parsed source code which has
+ * to adhere to the <a
+ * href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API">
+ * Mozilla Parser API</a>. E.g. <a href="https://github.com/eslint/espree">espree</a> is a parser
+ * that produces such syntax trees.
+ * <p>
+ * The main interface is the {@link analyze} function.
+ * @module escope
+ */
+"use strict";
+
+/* eslint no-underscore-dangle: ["error", { "allow": ["__currentScope"] }] */
+
+const assert = require("assert");
+
+const ScopeManager = require("./scope-manager");
+const Referencer = require("./referencer");
+const Reference = require("./reference");
+const Variable = require("./variable");
+const Scope = require("./scope").Scope;
+const version = require("../package.json").version;
+
+/**
+ * Set the default options
+ * @returns {Object} options
+ */
+function defaultOptions() {
+ return {
+ optimistic: false,
+ directive: false,
+ nodejsScope: false,
+ impliedStrict: false,
+ sourceType: "script", // one of ['script', 'module']
+ ecmaVersion: 5,
+ childVisitorKeys: null,
+ fallback: "iteration"
+ };
+}
+
+/**
+ * Preform deep update on option object
+ * @param {Object} target - Options
+ * @param {Object} override - Updates
+ * @returns {Object} Updated options
+ */
+function updateDeeply(target, override) {
+
+ /**
+ * Is hash object
+ * @param {Object} value - Test value
+ * @returns {boolean} Result
+ */
+ function isHashObject(value) {
+ return typeof value === "object" && value instanceof Object && !(value instanceof Array) && !(value instanceof RegExp);
+ }
+
+ for (const key in override) {
+ if (Object.prototype.hasOwnProperty.call(override, key)) {
+ const val = override[key];
+
+ if (isHashObject(val)) {
+ if (isHashObject(target[key])) {
+ updateDeeply(target[key], val);
+ } else {
+ target[key] = updateDeeply({}, val);
+ }
+ } else {
+ target[key] = val;
+ }
+ }
+ }
+ return target;
+}
+
+/**
+ * Main interface function. Takes an Espree syntax tree and returns the
+ * analyzed scopes.
+ * @function analyze
+ * @param {espree.Tree} tree - Abstract Syntax Tree
+ * @param {Object} providedOptions - Options that tailor the scope analysis
+ * @param {boolean} [providedOptions.optimistic=false] - the optimistic flag
+ * @param {boolean} [providedOptions.directive=false]- the directive flag
+ * @param {boolean} [providedOptions.ignoreEval=false]- whether to check 'eval()' calls
+ * @param {boolean} [providedOptions.nodejsScope=false]- whether the whole
+ * script is executed under node.js environment. When enabled, escope adds
+ * a function scope immediately following the global scope.
+ * @param {boolean} [providedOptions.impliedStrict=false]- implied strict mode
+ * (if ecmaVersion >= 5).
+ * @param {string} [providedOptions.sourceType='script']- the source type of the script. one of 'script' and 'module'
+ * @param {number} [providedOptions.ecmaVersion=5]- which ECMAScript version is considered
+ * @param {Object} [providedOptions.childVisitorKeys=null] - Additional known visitor keys. See [esrecurse](https://github.com/estools/esrecurse)'s the `childVisitorKeys` option.
+ * @param {string} [providedOptions.fallback='iteration'] - A kind of the fallback in order to encounter with unknown node. See [esrecurse](https://github.com/estools/esrecurse)'s the `fallback` option.
+ * @returns {ScopeManager} ScopeManager
+ */
+function analyze(tree, providedOptions) {
+ const options = updateDeeply(defaultOptions(), providedOptions);
+ const scopeManager = new ScopeManager(options);
+ const referencer = new Referencer(options, scopeManager);
+
+ referencer.visit(tree);
+
+ assert(scopeManager.__currentScope === null, "currentScope should be null.");
+
+ return scopeManager;
+}
+
+module.exports = {
+
+ /** @name module:escope.version */
+ version,
+
+ /** @name module:escope.Reference */
+ Reference,
+
+ /** @name module:escope.Variable */
+ Variable,
+
+ /** @name module:escope.Scope */
+ Scope,
+
+ /** @name module:escope.ScopeManager */
+ ScopeManager,
+ analyze
+};
+
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/pattern-visitor.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/pattern-visitor.js
new file mode 100644
index 0000000000..afa629173b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/pattern-visitor.js
@@ -0,0 +1,152 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+/* eslint-disable no-undefined */
+
+const Syntax = require("estraverse").Syntax;
+const esrecurse = require("esrecurse");
+
+/**
+ * Get last array element
+ * @param {array} xs - array
+ * @returns {any} Last elment
+ */
+function getLast(xs) {
+ return xs[xs.length - 1] || null;
+}
+
+class PatternVisitor extends esrecurse.Visitor {
+ static isPattern(node) {
+ const nodeType = node.type;
+
+ return (
+ nodeType === Syntax.Identifier ||
+ nodeType === Syntax.ObjectPattern ||
+ nodeType === Syntax.ArrayPattern ||
+ nodeType === Syntax.SpreadElement ||
+ nodeType === Syntax.RestElement ||
+ nodeType === Syntax.AssignmentPattern
+ );
+ }
+
+ constructor(options, rootPattern, callback) {
+ super(null, options);
+ this.rootPattern = rootPattern;
+ this.callback = callback;
+ this.assignments = [];
+ this.rightHandNodes = [];
+ this.restElements = [];
+ }
+
+ Identifier(pattern) {
+ const lastRestElement = getLast(this.restElements);
+
+ this.callback(pattern, {
+ topLevel: pattern === this.rootPattern,
+ rest: lastRestElement !== null && lastRestElement !== undefined && lastRestElement.argument === pattern,
+ assignments: this.assignments
+ });
+ }
+
+ Property(property) {
+
+ // Computed property's key is a right hand node.
+ if (property.computed) {
+ this.rightHandNodes.push(property.key);
+ }
+
+ // If it's shorthand, its key is same as its value.
+ // If it's shorthand and has its default value, its key is same as its value.left (the value is AssignmentPattern).
+ // If it's not shorthand, the name of new variable is its value's.
+ this.visit(property.value);
+ }
+
+ ArrayPattern(pattern) {
+ for (let i = 0, iz = pattern.elements.length; i < iz; ++i) {
+ const element = pattern.elements[i];
+
+ this.visit(element);
+ }
+ }
+
+ AssignmentPattern(pattern) {
+ this.assignments.push(pattern);
+ this.visit(pattern.left);
+ this.rightHandNodes.push(pattern.right);
+ this.assignments.pop();
+ }
+
+ RestElement(pattern) {
+ this.restElements.push(pattern);
+ this.visit(pattern.argument);
+ this.restElements.pop();
+ }
+
+ MemberExpression(node) {
+
+ // Computed property's key is a right hand node.
+ if (node.computed) {
+ this.rightHandNodes.push(node.property);
+ }
+
+ // the object is only read, write to its property.
+ this.rightHandNodes.push(node.object);
+ }
+
+ //
+ // ForInStatement.left and AssignmentExpression.left are LeftHandSideExpression.
+ // By spec, LeftHandSideExpression is Pattern or MemberExpression.
+ // (see also: https://github.com/estree/estree/pull/20#issuecomment-74584758)
+ // But espree 2.0 parses to ArrayExpression, ObjectExpression, etc...
+ //
+
+ SpreadElement(node) {
+ this.visit(node.argument);
+ }
+
+ ArrayExpression(node) {
+ node.elements.forEach(this.visit, this);
+ }
+
+ AssignmentExpression(node) {
+ this.assignments.push(node);
+ this.visit(node.left);
+ this.rightHandNodes.push(node.right);
+ this.assignments.pop();
+ }
+
+ CallExpression(node) {
+
+ // arguments are right hand nodes.
+ node.arguments.forEach(a => {
+ this.rightHandNodes.push(a);
+ });
+ this.visit(node.callee);
+ }
+}
+
+module.exports = PatternVisitor;
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/reference.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/reference.js
new file mode 100644
index 0000000000..9529827fe7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/reference.js
@@ -0,0 +1,167 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+const READ = 0x1;
+const WRITE = 0x2;
+const RW = READ | WRITE;
+
+/**
+ * A Reference represents a single occurrence of an identifier in code.
+ * @class Reference
+ */
+class Reference {
+ constructor(ident, scope, flag, writeExpr, maybeImplicitGlobal, partial, init) {
+
+ /**
+ * Identifier syntax node.
+ * @member {espreeIdentifier} Reference#identifier
+ */
+ this.identifier = ident;
+
+ /**
+ * Reference to the enclosing Scope.
+ * @member {Scope} Reference#from
+ */
+ this.from = scope;
+
+ /**
+ * Whether the reference comes from a dynamic scope (such as 'eval',
+ * 'with', etc.), and may be trapped by dynamic scopes.
+ * @member {boolean} Reference#tainted
+ */
+ this.tainted = false;
+
+ /**
+ * The variable this reference is resolved with.
+ * @member {Variable} Reference#resolved
+ */
+ this.resolved = null;
+
+ /**
+ * The read-write mode of the reference. (Value is one of {@link
+ * Reference.READ}, {@link Reference.RW}, {@link Reference.WRITE}).
+ * @member {number} Reference#flag
+ * @private
+ */
+ this.flag = flag;
+ if (this.isWrite()) {
+
+ /**
+ * If reference is writeable, this is the tree being written to it.
+ * @member {espreeNode} Reference#writeExpr
+ */
+ this.writeExpr = writeExpr;
+
+ /**
+ * Whether the Reference might refer to a partial value of writeExpr.
+ * @member {boolean} Reference#partial
+ */
+ this.partial = partial;
+
+ /**
+ * Whether the Reference is to write of initialization.
+ * @member {boolean} Reference#init
+ */
+ this.init = init;
+ }
+ this.__maybeImplicitGlobal = maybeImplicitGlobal;
+ }
+
+ /**
+ * Whether the reference is static.
+ * @method Reference#isStatic
+ * @returns {boolean} static
+ */
+ isStatic() {
+ return !this.tainted && this.resolved && this.resolved.scope.isStatic();
+ }
+
+ /**
+ * Whether the reference is writeable.
+ * @method Reference#isWrite
+ * @returns {boolean} write
+ */
+ isWrite() {
+ return !!(this.flag & Reference.WRITE);
+ }
+
+ /**
+ * Whether the reference is readable.
+ * @method Reference#isRead
+ * @returns {boolean} read
+ */
+ isRead() {
+ return !!(this.flag & Reference.READ);
+ }
+
+ /**
+ * Whether the reference is read-only.
+ * @method Reference#isReadOnly
+ * @returns {boolean} read only
+ */
+ isReadOnly() {
+ return this.flag === Reference.READ;
+ }
+
+ /**
+ * Whether the reference is write-only.
+ * @method Reference#isWriteOnly
+ * @returns {boolean} write only
+ */
+ isWriteOnly() {
+ return this.flag === Reference.WRITE;
+ }
+
+ /**
+ * Whether the reference is read-write.
+ * @method Reference#isReadWrite
+ * @returns {boolean} read write
+ */
+ isReadWrite() {
+ return this.flag === Reference.RW;
+ }
+}
+
+/**
+ * @constant Reference.READ
+ * @private
+ */
+Reference.READ = READ;
+
+/**
+ * @constant Reference.WRITE
+ * @private
+ */
+Reference.WRITE = WRITE;
+
+/**
+ * @constant Reference.RW
+ * @private
+ */
+Reference.RW = RW;
+
+module.exports = Reference;
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/referencer.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/referencer.js
new file mode 100644
index 0000000000..63d1935b3a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/referencer.js
@@ -0,0 +1,629 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+/* eslint-disable no-underscore-dangle */
+/* eslint-disable no-undefined */
+
+const Syntax = require("estraverse").Syntax;
+const esrecurse = require("esrecurse");
+const Reference = require("./reference");
+const Variable = require("./variable");
+const PatternVisitor = require("./pattern-visitor");
+const definition = require("./definition");
+const assert = require("assert");
+
+const ParameterDefinition = definition.ParameterDefinition;
+const Definition = definition.Definition;
+
+/**
+ * Traverse identifier in pattern
+ * @param {Object} options - options
+ * @param {pattern} rootPattern - root pattern
+ * @param {Refencer} referencer - referencer
+ * @param {callback} callback - callback
+ * @returns {void}
+ */
+function traverseIdentifierInPattern(options, rootPattern, referencer, callback) {
+
+ // Call the callback at left hand identifier nodes, and Collect right hand nodes.
+ const visitor = new PatternVisitor(options, rootPattern, callback);
+
+ visitor.visit(rootPattern);
+
+ // Process the right hand nodes recursively.
+ if (referencer !== null && referencer !== undefined) {
+ visitor.rightHandNodes.forEach(referencer.visit, referencer);
+ }
+}
+
+// Importing ImportDeclaration.
+// http://people.mozilla.org/~jorendorff/es6-draft.html#sec-moduledeclarationinstantiation
+// https://github.com/estree/estree/blob/master/es6.md#importdeclaration
+// FIXME: Now, we don't create module environment, because the context is
+// implementation dependent.
+
+class Importer extends esrecurse.Visitor {
+ constructor(declaration, referencer) {
+ super(null, referencer.options);
+ this.declaration = declaration;
+ this.referencer = referencer;
+ }
+
+ visitImport(id, specifier) {
+ this.referencer.visitPattern(id, pattern => {
+ this.referencer.currentScope().__define(pattern,
+ new Definition(
+ Variable.ImportBinding,
+ pattern,
+ specifier,
+ this.declaration,
+ null,
+ null
+ ));
+ });
+ }
+
+ ImportNamespaceSpecifier(node) {
+ const local = (node.local || node.id);
+
+ if (local) {
+ this.visitImport(local, node);
+ }
+ }
+
+ ImportDefaultSpecifier(node) {
+ const local = (node.local || node.id);
+
+ this.visitImport(local, node);
+ }
+
+ ImportSpecifier(node) {
+ const local = (node.local || node.id);
+
+ if (node.name) {
+ this.visitImport(node.name, node);
+ } else {
+ this.visitImport(local, node);
+ }
+ }
+}
+
+// Referencing variables and creating bindings.
+class Referencer extends esrecurse.Visitor {
+ constructor(options, scopeManager) {
+ super(null, options);
+ this.options = options;
+ this.scopeManager = scopeManager;
+ this.parent = null;
+ this.isInnerMethodDefinition = false;
+ }
+
+ currentScope() {
+ return this.scopeManager.__currentScope;
+ }
+
+ close(node) {
+ while (this.currentScope() && node === this.currentScope().block) {
+ this.scopeManager.__currentScope = this.currentScope().__close(this.scopeManager);
+ }
+ }
+
+ pushInnerMethodDefinition(isInnerMethodDefinition) {
+ const previous = this.isInnerMethodDefinition;
+
+ this.isInnerMethodDefinition = isInnerMethodDefinition;
+ return previous;
+ }
+
+ popInnerMethodDefinition(isInnerMethodDefinition) {
+ this.isInnerMethodDefinition = isInnerMethodDefinition;
+ }
+
+ referencingDefaultValue(pattern, assignments, maybeImplicitGlobal, init) {
+ const scope = this.currentScope();
+
+ assignments.forEach(assignment => {
+ scope.__referencing(
+ pattern,
+ Reference.WRITE,
+ assignment.right,
+ maybeImplicitGlobal,
+ pattern !== assignment.left,
+ init
+ );
+ });
+ }
+
+ visitPattern(node, options, callback) {
+ let visitPatternOptions = options;
+ let visitPatternCallback = callback;
+
+ if (typeof options === "function") {
+ visitPatternCallback = options;
+ visitPatternOptions = { processRightHandNodes: false };
+ }
+
+ traverseIdentifierInPattern(
+ this.options,
+ node,
+ visitPatternOptions.processRightHandNodes ? this : null,
+ visitPatternCallback
+ );
+ }
+
+ visitFunction(node) {
+ let i, iz;
+
+ // FunctionDeclaration name is defined in upper scope
+ // NOTE: Not referring variableScope. It is intended.
+ // Since
+ // in ES5, FunctionDeclaration should be in FunctionBody.
+ // in ES6, FunctionDeclaration should be block scoped.
+
+ if (node.type === Syntax.FunctionDeclaration) {
+
+ // id is defined in upper scope
+ this.currentScope().__define(node.id,
+ new Definition(
+ Variable.FunctionName,
+ node.id,
+ node,
+ null,
+ null,
+ null
+ ));
+ }
+
+ // FunctionExpression with name creates its special scope;
+ // FunctionExpressionNameScope.
+ if (node.type === Syntax.FunctionExpression && node.id) {
+ this.scopeManager.__nestFunctionExpressionNameScope(node);
+ }
+
+ // Consider this function is in the MethodDefinition.
+ this.scopeManager.__nestFunctionScope(node, this.isInnerMethodDefinition);
+
+ const that = this;
+
+ /**
+ * Visit pattern callback
+ * @param {pattern} pattern - pattern
+ * @param {Object} info - info
+ * @returns {void}
+ */
+ function visitPatternCallback(pattern, info) {
+ that.currentScope().__define(pattern,
+ new ParameterDefinition(
+ pattern,
+ node,
+ i,
+ info.rest
+ ));
+
+ that.referencingDefaultValue(pattern, info.assignments, null, true);
+ }
+
+ // Process parameter declarations.
+ for (i = 0, iz = node.params.length; i < iz; ++i) {
+ this.visitPattern(node.params[i], { processRightHandNodes: true }, visitPatternCallback);
+ }
+
+ // if there's a rest argument, add that
+ if (node.rest) {
+ this.visitPattern({
+ type: "RestElement",
+ argument: node.rest
+ }, pattern => {
+ this.currentScope().__define(pattern,
+ new ParameterDefinition(
+ pattern,
+ node,
+ node.params.length,
+ true
+ ));
+ });
+ }
+
+ // In TypeScript there are a number of function-like constructs which have no body,
+ // so check it exists before traversing
+ if (node.body) {
+
+ // Skip BlockStatement to prevent creating BlockStatement scope.
+ if (node.body.type === Syntax.BlockStatement) {
+ this.visitChildren(node.body);
+ } else {
+ this.visit(node.body);
+ }
+ }
+
+ this.close(node);
+ }
+
+ visitClass(node) {
+ if (node.type === Syntax.ClassDeclaration) {
+ this.currentScope().__define(node.id,
+ new Definition(
+ Variable.ClassName,
+ node.id,
+ node,
+ null,
+ null,
+ null
+ ));
+ }
+
+ this.visit(node.superClass);
+
+ this.scopeManager.__nestClassScope(node);
+
+ if (node.id) {
+ this.currentScope().__define(node.id,
+ new Definition(
+ Variable.ClassName,
+ node.id,
+ node
+ ));
+ }
+ this.visit(node.body);
+
+ this.close(node);
+ }
+
+ visitProperty(node) {
+ let previous;
+
+ if (node.computed) {
+ this.visit(node.key);
+ }
+
+ const isMethodDefinition = node.type === Syntax.MethodDefinition;
+
+ if (isMethodDefinition) {
+ previous = this.pushInnerMethodDefinition(true);
+ }
+ this.visit(node.value);
+ if (isMethodDefinition) {
+ this.popInnerMethodDefinition(previous);
+ }
+ }
+
+ visitForIn(node) {
+ if (node.left.type === Syntax.VariableDeclaration && node.left.kind !== "var") {
+ this.scopeManager.__nestForScope(node);
+ }
+
+ if (node.left.type === Syntax.VariableDeclaration) {
+ this.visit(node.left);
+ this.visitPattern(node.left.declarations[0].id, pattern => {
+ this.currentScope().__referencing(pattern, Reference.WRITE, node.right, null, true, true);
+ });
+ } else {
+ this.visitPattern(node.left, { processRightHandNodes: true }, (pattern, info) => {
+ let maybeImplicitGlobal = null;
+
+ if (!this.currentScope().isStrict) {
+ maybeImplicitGlobal = {
+ pattern,
+ node
+ };
+ }
+ this.referencingDefaultValue(pattern, info.assignments, maybeImplicitGlobal, false);
+ this.currentScope().__referencing(pattern, Reference.WRITE, node.right, maybeImplicitGlobal, true, false);
+ });
+ }
+ this.visit(node.right);
+ this.visit(node.body);
+
+ this.close(node);
+ }
+
+ visitVariableDeclaration(variableTargetScope, type, node, index) {
+
+ const decl = node.declarations[index];
+ const init = decl.init;
+
+ this.visitPattern(decl.id, { processRightHandNodes: true }, (pattern, info) => {
+ variableTargetScope.__define(
+ pattern,
+ new Definition(
+ type,
+ pattern,
+ decl,
+ node,
+ index,
+ node.kind
+ )
+ );
+
+ this.referencingDefaultValue(pattern, info.assignments, null, true);
+ if (init) {
+ this.currentScope().__referencing(pattern, Reference.WRITE, init, null, !info.topLevel, true);
+ }
+ });
+ }
+
+ AssignmentExpression(node) {
+ if (PatternVisitor.isPattern(node.left)) {
+ if (node.operator === "=") {
+ this.visitPattern(node.left, { processRightHandNodes: true }, (pattern, info) => {
+ let maybeImplicitGlobal = null;
+
+ if (!this.currentScope().isStrict) {
+ maybeImplicitGlobal = {
+ pattern,
+ node
+ };
+ }
+ this.referencingDefaultValue(pattern, info.assignments, maybeImplicitGlobal, false);
+ this.currentScope().__referencing(pattern, Reference.WRITE, node.right, maybeImplicitGlobal, !info.topLevel, false);
+ });
+ } else {
+ this.currentScope().__referencing(node.left, Reference.RW, node.right);
+ }
+ } else {
+ this.visit(node.left);
+ }
+ this.visit(node.right);
+ }
+
+ CatchClause(node) {
+ this.scopeManager.__nestCatchScope(node);
+
+ this.visitPattern(node.param, { processRightHandNodes: true }, (pattern, info) => {
+ this.currentScope().__define(pattern,
+ new Definition(
+ Variable.CatchClause,
+ node.param,
+ node,
+ null,
+ null,
+ null
+ ));
+ this.referencingDefaultValue(pattern, info.assignments, null, true);
+ });
+ this.visit(node.body);
+
+ this.close(node);
+ }
+
+ Program(node) {
+ this.scopeManager.__nestGlobalScope(node);
+
+ if (this.scopeManager.__isNodejsScope()) {
+
+ // Force strictness of GlobalScope to false when using node.js scope.
+ this.currentScope().isStrict = false;
+ this.scopeManager.__nestFunctionScope(node, false);
+ }
+
+ if (this.scopeManager.__isES6() && this.scopeManager.isModule()) {
+ this.scopeManager.__nestModuleScope(node);
+ }
+
+ if (this.scopeManager.isStrictModeSupported() && this.scopeManager.isImpliedStrict()) {
+ this.currentScope().isStrict = true;
+ }
+
+ this.visitChildren(node);
+ this.close(node);
+ }
+
+ Identifier(node) {
+ this.currentScope().__referencing(node);
+ }
+
+ UpdateExpression(node) {
+ if (PatternVisitor.isPattern(node.argument)) {
+ this.currentScope().__referencing(node.argument, Reference.RW, null);
+ } else {
+ this.visitChildren(node);
+ }
+ }
+
+ MemberExpression(node) {
+ this.visit(node.object);
+ if (node.computed) {
+ this.visit(node.property);
+ }
+ }
+
+ Property(node) {
+ this.visitProperty(node);
+ }
+
+ MethodDefinition(node) {
+ this.visitProperty(node);
+ }
+
+ BreakStatement() {} // eslint-disable-line class-methods-use-this
+
+ ContinueStatement() {} // eslint-disable-line class-methods-use-this
+
+ LabeledStatement(node) {
+ this.visit(node.body);
+ }
+
+ ForStatement(node) {
+
+ // Create ForStatement declaration.
+ // NOTE: In ES6, ForStatement dynamically generates
+ // per iteration environment. However, escope is
+ // a static analyzer, we only generate one scope for ForStatement.
+ if (node.init && node.init.type === Syntax.VariableDeclaration && node.init.kind !== "var") {
+ this.scopeManager.__nestForScope(node);
+ }
+
+ this.visitChildren(node);
+
+ this.close(node);
+ }
+
+ ClassExpression(node) {
+ this.visitClass(node);
+ }
+
+ ClassDeclaration(node) {
+ this.visitClass(node);
+ }
+
+ CallExpression(node) {
+
+ // Check this is direct call to eval
+ if (!this.scopeManager.__ignoreEval() && node.callee.type === Syntax.Identifier && node.callee.name === "eval") {
+
+ // NOTE: This should be `variableScope`. Since direct eval call always creates Lexical environment and
+ // let / const should be enclosed into it. Only VariableDeclaration affects on the caller's environment.
+ this.currentScope().variableScope.__detectEval();
+ }
+ this.visitChildren(node);
+ }
+
+ BlockStatement(node) {
+ if (this.scopeManager.__isES6()) {
+ this.scopeManager.__nestBlockScope(node);
+ }
+
+ this.visitChildren(node);
+
+ this.close(node);
+ }
+
+ ThisExpression() {
+ this.currentScope().variableScope.__detectThis();
+ }
+
+ WithStatement(node) {
+ this.visit(node.object);
+
+ // Then nest scope for WithStatement.
+ this.scopeManager.__nestWithScope(node);
+
+ this.visit(node.body);
+
+ this.close(node);
+ }
+
+ VariableDeclaration(node) {
+ const variableTargetScope = (node.kind === "var") ? this.currentScope().variableScope : this.currentScope();
+
+ for (let i = 0, iz = node.declarations.length; i < iz; ++i) {
+ const decl = node.declarations[i];
+
+ this.visitVariableDeclaration(variableTargetScope, Variable.Variable, node, i);
+ if (decl.init) {
+ this.visit(decl.init);
+ }
+ }
+ }
+
+ // sec 13.11.8
+ SwitchStatement(node) {
+ this.visit(node.discriminant);
+
+ if (this.scopeManager.__isES6()) {
+ this.scopeManager.__nestSwitchScope(node);
+ }
+
+ for (let i = 0, iz = node.cases.length; i < iz; ++i) {
+ this.visit(node.cases[i]);
+ }
+
+ this.close(node);
+ }
+
+ FunctionDeclaration(node) {
+ this.visitFunction(node);
+ }
+
+ FunctionExpression(node) {
+ this.visitFunction(node);
+ }
+
+ ForOfStatement(node) {
+ this.visitForIn(node);
+ }
+
+ ForInStatement(node) {
+ this.visitForIn(node);
+ }
+
+ ArrowFunctionExpression(node) {
+ this.visitFunction(node);
+ }
+
+ ImportDeclaration(node) {
+ assert(this.scopeManager.__isES6() && this.scopeManager.isModule(), "ImportDeclaration should appear when the mode is ES6 and in the module context.");
+
+ const importer = new Importer(node, this);
+
+ importer.visit(node);
+ }
+
+ visitExportDeclaration(node) {
+ if (node.source) {
+ return;
+ }
+ if (node.declaration) {
+ this.visit(node.declaration);
+ return;
+ }
+
+ this.visitChildren(node);
+ }
+
+ // TODO: ExportDeclaration doesn't exist. for bc?
+ ExportDeclaration(node) {
+ this.visitExportDeclaration(node);
+ }
+
+ ExportAllDeclaration(node) {
+ this.visitExportDeclaration(node);
+ }
+
+ ExportDefaultDeclaration(node) {
+ this.visitExportDeclaration(node);
+ }
+
+ ExportNamedDeclaration(node) {
+ this.visitExportDeclaration(node);
+ }
+
+ ExportSpecifier(node) {
+
+ // TODO: `node.id` doesn't exist. for bc?
+ const local = (node.id || node.local);
+
+ this.visit(local);
+ }
+
+ MetaProperty() { // eslint-disable-line class-methods-use-this
+
+ // do nothing.
+ }
+}
+
+module.exports = Referencer;
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope-manager.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope-manager.js
new file mode 100644
index 0000000000..c1927994b1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope-manager.js
@@ -0,0 +1,247 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+/* eslint-disable no-underscore-dangle */
+
+const Scope = require("./scope");
+const assert = require("assert");
+
+const GlobalScope = Scope.GlobalScope;
+const CatchScope = Scope.CatchScope;
+const WithScope = Scope.WithScope;
+const ModuleScope = Scope.ModuleScope;
+const ClassScope = Scope.ClassScope;
+const SwitchScope = Scope.SwitchScope;
+const FunctionScope = Scope.FunctionScope;
+const ForScope = Scope.ForScope;
+const FunctionExpressionNameScope = Scope.FunctionExpressionNameScope;
+const BlockScope = Scope.BlockScope;
+
+/**
+ * @class ScopeManager
+ */
+class ScopeManager {
+ constructor(options) {
+ this.scopes = [];
+ this.globalScope = null;
+ this.__nodeToScope = new WeakMap();
+ this.__currentScope = null;
+ this.__options = options;
+ this.__declaredVariables = new WeakMap();
+ }
+
+ __useDirective() {
+ return this.__options.directive;
+ }
+
+ __isOptimistic() {
+ return this.__options.optimistic;
+ }
+
+ __ignoreEval() {
+ return this.__options.ignoreEval;
+ }
+
+ __isNodejsScope() {
+ return this.__options.nodejsScope;
+ }
+
+ isModule() {
+ return this.__options.sourceType === "module";
+ }
+
+ isImpliedStrict() {
+ return this.__options.impliedStrict;
+ }
+
+ isStrictModeSupported() {
+ return this.__options.ecmaVersion >= 5;
+ }
+
+ // Returns appropriate scope for this node.
+ __get(node) {
+ return this.__nodeToScope.get(node);
+ }
+
+ /**
+ * Get variables that are declared by the node.
+ *
+ * "are declared by the node" means the node is same as `Variable.defs[].node` or `Variable.defs[].parent`.
+ * If the node declares nothing, this method returns an empty array.
+ * CAUTION: This API is experimental. See https://github.com/estools/escope/pull/69 for more details.
+ *
+ * @param {Espree.Node} node - a node to get.
+ * @returns {Variable[]} variables that declared by the node.
+ */
+ getDeclaredVariables(node) {
+ return this.__declaredVariables.get(node) || [];
+ }
+
+ /**
+ * acquire scope from node.
+ * @method ScopeManager#acquire
+ * @param {Espree.Node} node - node for the acquired scope.
+ * @param {boolean=} inner - look up the most inner scope, default value is false.
+ * @returns {Scope?} Scope from node
+ */
+ acquire(node, inner) {
+
+ /**
+ * predicate
+ * @param {Scope} testScope - scope to test
+ * @returns {boolean} predicate
+ */
+ function predicate(testScope) {
+ if (testScope.type === "function" && testScope.functionExpressionScope) {
+ return false;
+ }
+ return true;
+ }
+
+ const scopes = this.__get(node);
+
+ if (!scopes || scopes.length === 0) {
+ return null;
+ }
+
+ // Heuristic selection from all scopes.
+ // If you would like to get all scopes, please use ScopeManager#acquireAll.
+ if (scopes.length === 1) {
+ return scopes[0];
+ }
+
+ if (inner) {
+ for (let i = scopes.length - 1; i >= 0; --i) {
+ const scope = scopes[i];
+
+ if (predicate(scope)) {
+ return scope;
+ }
+ }
+ } else {
+ for (let i = 0, iz = scopes.length; i < iz; ++i) {
+ const scope = scopes[i];
+
+ if (predicate(scope)) {
+ return scope;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * acquire all scopes from node.
+ * @method ScopeManager#acquireAll
+ * @param {Espree.Node} node - node for the acquired scope.
+ * @returns {Scopes?} Scope array
+ */
+ acquireAll(node) {
+ return this.__get(node);
+ }
+
+ /**
+ * release the node.
+ * @method ScopeManager#release
+ * @param {Espree.Node} node - releasing node.
+ * @param {boolean=} inner - look up the most inner scope, default value is false.
+ * @returns {Scope?} upper scope for the node.
+ */
+ release(node, inner) {
+ const scopes = this.__get(node);
+
+ if (scopes && scopes.length) {
+ const scope = scopes[0].upper;
+
+ if (!scope) {
+ return null;
+ }
+ return this.acquire(scope.block, inner);
+ }
+ return null;
+ }
+
+ attach() { } // eslint-disable-line class-methods-use-this
+
+ detach() { } // eslint-disable-line class-methods-use-this
+
+ __nestScope(scope) {
+ if (scope instanceof GlobalScope) {
+ assert(this.__currentScope === null);
+ this.globalScope = scope;
+ }
+ this.__currentScope = scope;
+ return scope;
+ }
+
+ __nestGlobalScope(node) {
+ return this.__nestScope(new GlobalScope(this, node));
+ }
+
+ __nestBlockScope(node) {
+ return this.__nestScope(new BlockScope(this, this.__currentScope, node));
+ }
+
+ __nestFunctionScope(node, isMethodDefinition) {
+ return this.__nestScope(new FunctionScope(this, this.__currentScope, node, isMethodDefinition));
+ }
+
+ __nestForScope(node) {
+ return this.__nestScope(new ForScope(this, this.__currentScope, node));
+ }
+
+ __nestCatchScope(node) {
+ return this.__nestScope(new CatchScope(this, this.__currentScope, node));
+ }
+
+ __nestWithScope(node) {
+ return this.__nestScope(new WithScope(this, this.__currentScope, node));
+ }
+
+ __nestClassScope(node) {
+ return this.__nestScope(new ClassScope(this, this.__currentScope, node));
+ }
+
+ __nestSwitchScope(node) {
+ return this.__nestScope(new SwitchScope(this, this.__currentScope, node));
+ }
+
+ __nestModuleScope(node) {
+ return this.__nestScope(new ModuleScope(this, this.__currentScope, node));
+ }
+
+ __nestFunctionExpressionNameScope(node) {
+ return this.__nestScope(new FunctionExpressionNameScope(this, this.__currentScope, node));
+ }
+
+ __isES6() {
+ return this.__options.ecmaVersion >= 6;
+ }
+}
+
+module.exports = ScopeManager;
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope.js
new file mode 100644
index 0000000000..bdb5f637f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/scope.js
@@ -0,0 +1,748 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+/* eslint-disable no-underscore-dangle */
+/* eslint-disable no-undefined */
+
+const Syntax = require("estraverse").Syntax;
+
+const Reference = require("./reference");
+const Variable = require("./variable");
+const Definition = require("./definition").Definition;
+const assert = require("assert");
+
+/**
+ * Test if scope is struct
+ * @param {Scope} scope - scope
+ * @param {Block} block - block
+ * @param {boolean} isMethodDefinition - is method definition
+ * @param {boolean} useDirective - use directive
+ * @returns {boolean} is strict scope
+ */
+function isStrictScope(scope, block, isMethodDefinition, useDirective) {
+ let body;
+
+ // When upper scope is exists and strict, inner scope is also strict.
+ if (scope.upper && scope.upper.isStrict) {
+ return true;
+ }
+
+ if (isMethodDefinition) {
+ return true;
+ }
+
+ if (scope.type === "class" || scope.type === "module") {
+ return true;
+ }
+
+ if (scope.type === "block" || scope.type === "switch") {
+ return false;
+ }
+
+ if (scope.type === "function") {
+ if (block.type === Syntax.ArrowFunctionExpression && block.body.type !== Syntax.BlockStatement) {
+ return false;
+ }
+
+ if (block.type === Syntax.Program) {
+ body = block;
+ } else {
+ body = block.body;
+ }
+
+ if (!body) {
+ return false;
+ }
+ } else if (scope.type === "global") {
+ body = block;
+ } else {
+ return false;
+ }
+
+ // Search 'use strict' directive.
+ if (useDirective) {
+ for (let i = 0, iz = body.body.length; i < iz; ++i) {
+ const stmt = body.body[i];
+
+ if (stmt.type !== Syntax.DirectiveStatement) {
+ break;
+ }
+ if (stmt.raw === "\"use strict\"" || stmt.raw === "'use strict'") {
+ return true;
+ }
+ }
+ } else {
+ for (let i = 0, iz = body.body.length; i < iz; ++i) {
+ const stmt = body.body[i];
+
+ if (stmt.type !== Syntax.ExpressionStatement) {
+ break;
+ }
+ const expr = stmt.expression;
+
+ if (expr.type !== Syntax.Literal || typeof expr.value !== "string") {
+ break;
+ }
+ if (expr.raw !== null && expr.raw !== undefined) {
+ if (expr.raw === "\"use strict\"" || expr.raw === "'use strict'") {
+ return true;
+ }
+ } else {
+ if (expr.value === "use strict") {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+/**
+ * Register scope
+ * @param {ScopeManager} scopeManager - scope manager
+ * @param {Scope} scope - scope
+ * @returns {void}
+ */
+function registerScope(scopeManager, scope) {
+ scopeManager.scopes.push(scope);
+
+ const scopes = scopeManager.__nodeToScope.get(scope.block);
+
+ if (scopes) {
+ scopes.push(scope);
+ } else {
+ scopeManager.__nodeToScope.set(scope.block, [scope]);
+ }
+}
+
+/**
+ * Should be statically
+ * @param {Object} def - def
+ * @returns {boolean} should be statically
+ */
+function shouldBeStatically(def) {
+ return (
+ (def.type === Variable.ClassName) ||
+ (def.type === Variable.Variable && def.parent.kind !== "var")
+ );
+}
+
+/**
+ * @class Scope
+ */
+class Scope {
+ constructor(scopeManager, type, upperScope, block, isMethodDefinition) {
+
+ /**
+ * One of 'module', 'block', 'switch', 'function', 'catch', 'with', 'function', 'class', 'global'.
+ * @member {String} Scope#type
+ */
+ this.type = type;
+
+ /**
+ * The scoped {@link Variable}s of this scope, as <code>{ Variable.name
+ * : Variable }</code>.
+ * @member {Map} Scope#set
+ */
+ this.set = new Map();
+
+ /**
+ * The tainted variables of this scope, as <code>{ Variable.name :
+ * boolean }</code>.
+ * @member {Map} Scope#taints */
+ this.taints = new Map();
+
+ /**
+ * Generally, through the lexical scoping of JS you can always know
+ * which variable an identifier in the source code refers to. There are
+ * a few exceptions to this rule. With 'global' and 'with' scopes you
+ * can only decide at runtime which variable a reference refers to.
+ * Moreover, if 'eval()' is used in a scope, it might introduce new
+ * bindings in this or its parent scopes.
+ * All those scopes are considered 'dynamic'.
+ * @member {boolean} Scope#dynamic
+ */
+ this.dynamic = this.type === "global" || this.type === "with";
+
+ /**
+ * A reference to the scope-defining syntax node.
+ * @member {espree.Node} Scope#block
+ */
+ this.block = block;
+
+ /**
+ * The {@link Reference|references} that are not resolved with this scope.
+ * @member {Reference[]} Scope#through
+ */
+ this.through = [];
+
+ /**
+ * The scoped {@link Variable}s of this scope. In the case of a
+ * 'function' scope this includes the automatic argument <em>arguments</em> as
+ * its first element, as well as all further formal arguments.
+ * @member {Variable[]} Scope#variables
+ */
+ this.variables = [];
+
+ /**
+ * Any variable {@link Reference|reference} found in this scope. This
+ * includes occurrences of local variables as well as variables from
+ * parent scopes (including the global scope). For local variables
+ * this also includes defining occurrences (like in a 'var' statement).
+ * In a 'function' scope this does not include the occurrences of the
+ * formal parameter in the parameter list.
+ * @member {Reference[]} Scope#references
+ */
+ this.references = [];
+
+ /**
+ * For 'global' and 'function' scopes, this is a self-reference. For
+ * other scope types this is the <em>variableScope</em> value of the
+ * parent scope.
+ * @member {Scope} Scope#variableScope
+ */
+ this.variableScope =
+ (this.type === "global" || this.type === "function" || this.type === "module") ? this : upperScope.variableScope;
+
+ /**
+ * Whether this scope is created by a FunctionExpression.
+ * @member {boolean} Scope#functionExpressionScope
+ */
+ this.functionExpressionScope = false;
+
+ /**
+ * Whether this is a scope that contains an 'eval()' invocation.
+ * @member {boolean} Scope#directCallToEvalScope
+ */
+ this.directCallToEvalScope = false;
+
+ /**
+ * @member {boolean} Scope#thisFound
+ */
+ this.thisFound = false;
+
+ this.__left = [];
+
+ /**
+ * Reference to the parent {@link Scope|scope}.
+ * @member {Scope} Scope#upper
+ */
+ this.upper = upperScope;
+
+ /**
+ * Whether 'use strict' is in effect in this scope.
+ * @member {boolean} Scope#isStrict
+ */
+ this.isStrict = isStrictScope(this, block, isMethodDefinition, scopeManager.__useDirective());
+
+ /**
+ * List of nested {@link Scope}s.
+ * @member {Scope[]} Scope#childScopes
+ */
+ this.childScopes = [];
+ if (this.upper) {
+ this.upper.childScopes.push(this);
+ }
+
+ this.__declaredVariables = scopeManager.__declaredVariables;
+
+ registerScope(scopeManager, this);
+ }
+
+ __shouldStaticallyClose(scopeManager) {
+ return (!this.dynamic || scopeManager.__isOptimistic());
+ }
+
+ __shouldStaticallyCloseForGlobal(ref) {
+
+ // On global scope, let/const/class declarations should be resolved statically.
+ const name = ref.identifier.name;
+
+ if (!this.set.has(name)) {
+ return false;
+ }
+
+ const variable = this.set.get(name);
+ const defs = variable.defs;
+
+ return defs.length > 0 && defs.every(shouldBeStatically);
+ }
+
+ __staticCloseRef(ref) {
+ if (!this.__resolve(ref)) {
+ this.__delegateToUpperScope(ref);
+ }
+ }
+
+ __dynamicCloseRef(ref) {
+
+ // notify all names are through to global
+ let current = this;
+
+ do {
+ current.through.push(ref);
+ current = current.upper;
+ } while (current);
+ }
+
+ __globalCloseRef(ref) {
+
+ // let/const/class declarations should be resolved statically.
+ // others should be resolved dynamically.
+ if (this.__shouldStaticallyCloseForGlobal(ref)) {
+ this.__staticCloseRef(ref);
+ } else {
+ this.__dynamicCloseRef(ref);
+ }
+ }
+
+ __close(scopeManager) {
+ let closeRef;
+
+ if (this.__shouldStaticallyClose(scopeManager)) {
+ closeRef = this.__staticCloseRef;
+ } else if (this.type !== "global") {
+ closeRef = this.__dynamicCloseRef;
+ } else {
+ closeRef = this.__globalCloseRef;
+ }
+
+ // Try Resolving all references in this scope.
+ for (let i = 0, iz = this.__left.length; i < iz; ++i) {
+ const ref = this.__left[i];
+
+ closeRef.call(this, ref);
+ }
+ this.__left = null;
+
+ return this.upper;
+ }
+
+ // To override by function scopes.
+ // References in default parameters isn't resolved to variables which are in their function body.
+ __isValidResolution(ref, variable) { // eslint-disable-line class-methods-use-this, no-unused-vars
+ return true;
+ }
+
+ __resolve(ref) {
+ const name = ref.identifier.name;
+
+ if (!this.set.has(name)) {
+ return false;
+ }
+ const variable = this.set.get(name);
+
+ if (!this.__isValidResolution(ref, variable)) {
+ return false;
+ }
+ variable.references.push(ref);
+ variable.stack = variable.stack && ref.from.variableScope === this.variableScope;
+ if (ref.tainted) {
+ variable.tainted = true;
+ this.taints.set(variable.name, true);
+ }
+ ref.resolved = variable;
+
+ return true;
+ }
+
+ __delegateToUpperScope(ref) {
+ if (this.upper) {
+ this.upper.__left.push(ref);
+ }
+ this.through.push(ref);
+ }
+
+ __addDeclaredVariablesOfNode(variable, node) {
+ if (node === null || node === undefined) {
+ return;
+ }
+
+ let variables = this.__declaredVariables.get(node);
+
+ if (variables === null || variables === undefined) {
+ variables = [];
+ this.__declaredVariables.set(node, variables);
+ }
+ if (variables.indexOf(variable) === -1) {
+ variables.push(variable);
+ }
+ }
+
+ __defineGeneric(name, set, variables, node, def) {
+ let variable;
+
+ variable = set.get(name);
+ if (!variable) {
+ variable = new Variable(name, this);
+ set.set(name, variable);
+ variables.push(variable);
+ }
+
+ if (def) {
+ variable.defs.push(def);
+ this.__addDeclaredVariablesOfNode(variable, def.node);
+ this.__addDeclaredVariablesOfNode(variable, def.parent);
+ }
+ if (node) {
+ variable.identifiers.push(node);
+ }
+ }
+
+ __define(node, def) {
+ if (node && node.type === Syntax.Identifier) {
+ this.__defineGeneric(
+ node.name,
+ this.set,
+ this.variables,
+ node,
+ def
+ );
+ }
+ }
+
+ __referencing(node, assign, writeExpr, maybeImplicitGlobal, partial, init) {
+
+ // because Array element may be null
+ if (!node || node.type !== Syntax.Identifier) {
+ return;
+ }
+
+ // Specially handle like `this`.
+ if (node.name === "super") {
+ return;
+ }
+
+ const ref = new Reference(node, this, assign || Reference.READ, writeExpr, maybeImplicitGlobal, !!partial, !!init);
+
+ this.references.push(ref);
+ this.__left.push(ref);
+ }
+
+ __detectEval() {
+ let current = this;
+
+ this.directCallToEvalScope = true;
+ do {
+ current.dynamic = true;
+ current = current.upper;
+ } while (current);
+ }
+
+ __detectThis() {
+ this.thisFound = true;
+ }
+
+ __isClosed() {
+ return this.__left === null;
+ }
+
+ /**
+ * returns resolved {Reference}
+ * @method Scope#resolve
+ * @param {Espree.Identifier} ident - identifier to be resolved.
+ * @returns {Reference} reference
+ */
+ resolve(ident) {
+ let ref, i, iz;
+
+ assert(this.__isClosed(), "Scope should be closed.");
+ assert(ident.type === Syntax.Identifier, "Target should be identifier.");
+ for (i = 0, iz = this.references.length; i < iz; ++i) {
+ ref = this.references[i];
+ if (ref.identifier === ident) {
+ return ref;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * returns this scope is static
+ * @method Scope#isStatic
+ * @returns {boolean} static
+ */
+ isStatic() {
+ return !this.dynamic;
+ }
+
+ /**
+ * returns this scope has materialized arguments
+ * @method Scope#isArgumentsMaterialized
+ * @returns {boolean} arguemnts materialized
+ */
+ isArgumentsMaterialized() { // eslint-disable-line class-methods-use-this
+ return true;
+ }
+
+ /**
+ * returns this scope has materialized `this` reference
+ * @method Scope#isThisMaterialized
+ * @returns {boolean} this materialized
+ */
+ isThisMaterialized() { // eslint-disable-line class-methods-use-this
+ return true;
+ }
+
+ isUsedName(name) {
+ if (this.set.has(name)) {
+ return true;
+ }
+ for (let i = 0, iz = this.through.length; i < iz; ++i) {
+ if (this.through[i].identifier.name === name) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
+
+class GlobalScope extends Scope {
+ constructor(scopeManager, block) {
+ super(scopeManager, "global", null, block, false);
+ this.implicit = {
+ set: new Map(),
+ variables: [],
+
+ /**
+ * List of {@link Reference}s that are left to be resolved (i.e. which
+ * need to be linked to the variable they refer to).
+ * @member {Reference[]} Scope#implicit#left
+ */
+ left: []
+ };
+ }
+
+ __close(scopeManager) {
+ const implicit = [];
+
+ for (let i = 0, iz = this.__left.length; i < iz; ++i) {
+ const ref = this.__left[i];
+
+ if (ref.__maybeImplicitGlobal && !this.set.has(ref.identifier.name)) {
+ implicit.push(ref.__maybeImplicitGlobal);
+ }
+ }
+
+ // create an implicit global variable from assignment expression
+ for (let i = 0, iz = implicit.length; i < iz; ++i) {
+ const info = implicit[i];
+
+ this.__defineImplicit(info.pattern,
+ new Definition(
+ Variable.ImplicitGlobalVariable,
+ info.pattern,
+ info.node,
+ null,
+ null,
+ null
+ ));
+
+ }
+
+ this.implicit.left = this.__left;
+
+ return super.__close(scopeManager);
+ }
+
+ __defineImplicit(node, def) {
+ if (node && node.type === Syntax.Identifier) {
+ this.__defineGeneric(
+ node.name,
+ this.implicit.set,
+ this.implicit.variables,
+ node,
+ def
+ );
+ }
+ }
+}
+
+class ModuleScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "module", upperScope, block, false);
+ }
+}
+
+class FunctionExpressionNameScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "function-expression-name", upperScope, block, false);
+ this.__define(block.id,
+ new Definition(
+ Variable.FunctionName,
+ block.id,
+ block,
+ null,
+ null,
+ null
+ ));
+ this.functionExpressionScope = true;
+ }
+}
+
+class CatchScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "catch", upperScope, block, false);
+ }
+}
+
+class WithScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "with", upperScope, block, false);
+ }
+
+ __close(scopeManager) {
+ if (this.__shouldStaticallyClose(scopeManager)) {
+ return super.__close(scopeManager);
+ }
+
+ for (let i = 0, iz = this.__left.length; i < iz; ++i) {
+ const ref = this.__left[i];
+
+ ref.tainted = true;
+ this.__delegateToUpperScope(ref);
+ }
+ this.__left = null;
+
+ return this.upper;
+ }
+}
+
+class BlockScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "block", upperScope, block, false);
+ }
+}
+
+class SwitchScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "switch", upperScope, block, false);
+ }
+}
+
+class FunctionScope extends Scope {
+ constructor(scopeManager, upperScope, block, isMethodDefinition) {
+ super(scopeManager, "function", upperScope, block, isMethodDefinition);
+
+ // section 9.2.13, FunctionDeclarationInstantiation.
+ // NOTE Arrow functions never have an arguments objects.
+ if (this.block.type !== Syntax.ArrowFunctionExpression) {
+ this.__defineArguments();
+ }
+ }
+
+ isArgumentsMaterialized() {
+
+ // TODO(Constellation)
+ // We can more aggressive on this condition like this.
+ //
+ // function t() {
+ // // arguments of t is always hidden.
+ // function arguments() {
+ // }
+ // }
+ if (this.block.type === Syntax.ArrowFunctionExpression) {
+ return false;
+ }
+
+ if (!this.isStatic()) {
+ return true;
+ }
+
+ const variable = this.set.get("arguments");
+
+ assert(variable, "Always have arguments variable.");
+ return variable.tainted || variable.references.length !== 0;
+ }
+
+ isThisMaterialized() {
+ if (!this.isStatic()) {
+ return true;
+ }
+ return this.thisFound;
+ }
+
+ __defineArguments() {
+ this.__defineGeneric(
+ "arguments",
+ this.set,
+ this.variables,
+ null,
+ null
+ );
+ this.taints.set("arguments", true);
+ }
+
+ // References in default parameters isn't resolved to variables which are in their function body.
+ // const x = 1
+ // function f(a = x) { // This `x` is resolved to the `x` in the outer scope.
+ // const x = 2
+ // console.log(a)
+ // }
+ __isValidResolution(ref, variable) {
+
+ // If `options.nodejsScope` is true, `this.block` becomes a Program node.
+ if (this.block.type === "Program") {
+ return true;
+ }
+
+ const bodyStart = this.block.body.range[0];
+
+ // It's invalid resolution in the following case:
+ return !(
+ variable.scope === this &&
+ ref.identifier.range[0] < bodyStart && // the reference is in the parameter part.
+ variable.defs.every(d => d.name.range[0] >= bodyStart) // the variable is in the body.
+ );
+ }
+}
+
+class ForScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "for", upperScope, block, false);
+ }
+}
+
+class ClassScope extends Scope {
+ constructor(scopeManager, upperScope, block) {
+ super(scopeManager, "class", upperScope, block, false);
+ }
+}
+
+module.exports = {
+ Scope,
+ GlobalScope,
+ ModuleScope,
+ FunctionExpressionNameScope,
+ CatchScope,
+ WithScope,
+ BlockScope,
+ SwitchScope,
+ FunctionScope,
+ ForScope,
+ ClassScope
+};
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/variable.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/variable.js
new file mode 100644
index 0000000000..702c4780a2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/lib/variable.js
@@ -0,0 +1,88 @@
+/*
+ Copyright (C) 2015 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+"use strict";
+
+/**
+ * A Variable represents a locally scoped identifier. These include arguments to
+ * functions.
+ * @class Variable
+ */
+class Variable {
+ constructor(name, scope) {
+
+ /**
+ * The variable name, as given in the source code.
+ * @member {String} Variable#name
+ */
+ this.name = name;
+
+ /**
+ * List of defining occurrences of this variable (like in 'var ...'
+ * statements or as parameter), as AST nodes.
+ * @member {espree.Identifier[]} Variable#identifiers
+ */
+ this.identifiers = [];
+
+ /**
+ * List of {@link Reference|references} of this variable (excluding parameter entries)
+ * in its defining scope and all nested scopes. For defining
+ * occurrences only see {@link Variable#defs}.
+ * @member {Reference[]} Variable#references
+ */
+ this.references = [];
+
+ /**
+ * List of defining occurrences of this variable (like in 'var ...'
+ * statements or as parameter), as custom objects.
+ * @member {Definition[]} Variable#defs
+ */
+ this.defs = [];
+
+ this.tainted = false;
+
+ /**
+ * Whether this is a stack variable.
+ * @member {boolean} Variable#stack
+ */
+ this.stack = true;
+
+ /**
+ * Reference to the enclosing Scope.
+ * @member {Scope} Variable#scope
+ */
+ this.scope = scope;
+ }
+}
+
+Variable.CatchClause = "CatchClause";
+Variable.Parameter = "Parameter";
+Variable.FunctionName = "FunctionName";
+Variable.ClassName = "ClassName";
+Variable.Variable = "Variable";
+Variable.ImportBinding = "ImportBinding";
+Variable.ImplicitGlobalVariable = "ImplicitGlobalVariable";
+
+module.exports = Variable;
+
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/package.json
new file mode 100644
index 0000000000..b700b92afb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-scope/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "eslint-scope",
+ "description": "ECMAScript scope analyzer for ESLint",
+ "homepage": "http://github.com/eslint/eslint-scope",
+ "main": "lib/index.js",
+ "version": "5.1.1",
+ "engines": {
+ "node": ">=8.0.0"
+ },
+ "repository": "eslint/eslint-scope",
+ "bugs": {
+ "url": "https://github.com/eslint/eslint-scope/issues"
+ },
+ "license": "BSD-2-Clause",
+ "scripts": {
+ "test": "node Makefile.js test",
+ "lint": "node Makefile.js lint",
+ "generate-release": "eslint-generate-release",
+ "generate-alpharelease": "eslint-generate-prerelease alpha",
+ "generate-betarelease": "eslint-generate-prerelease beta",
+ "generate-rcrelease": "eslint-generate-prerelease rc",
+ "publish-release": "eslint-publish-release"
+ },
+ "files": [
+ "LICENSE",
+ "README.md",
+ "lib"
+ ],
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "devDependencies": {
+ "@typescript-eslint/parser": "^1.11.0",
+ "chai": "^4.2.0",
+ "eslint": "^6.0.1",
+ "eslint-config-eslint": "^5.0.1",
+ "eslint-plugin-node": "^9.1.0",
+ "eslint-release": "^1.0.0",
+ "eslint-visitor-keys": "^1.2.0",
+ "espree": "^7.1.0",
+ "istanbul": "^0.4.5",
+ "mocha": "^6.1.4",
+ "npm-license": "^0.3.3",
+ "shelljs": "^0.8.3",
+ "typescript": "^3.5.2"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/LICENSE b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/LICENSE
new file mode 100644
index 0000000000..17a25538d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/LICENSE
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright contributors
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/README.md b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/README.md
new file mode 100644
index 0000000000..d7dbe65fa0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/README.md
@@ -0,0 +1,98 @@
+# eslint-visitor-keys
+
+[![npm version](https://img.shields.io/npm/v/eslint-visitor-keys.svg)](https://www.npmjs.com/package/eslint-visitor-keys)
+[![Downloads/month](https://img.shields.io/npm/dm/eslint-visitor-keys.svg)](http://www.npmtrends.com/eslint-visitor-keys)
+[![Build Status](https://travis-ci.org/eslint/eslint-visitor-keys.svg?branch=master)](https://travis-ci.org/eslint/eslint-visitor-keys)
+[![Dependency Status](https://david-dm.org/eslint/eslint-visitor-keys.svg)](https://david-dm.org/eslint/eslint-visitor-keys)
+
+Constants and utilities about visitor keys to traverse AST.
+
+## 💿 Installation
+
+Use [npm] to install.
+
+```bash
+$ npm install eslint-visitor-keys
+```
+
+### Requirements
+
+- [Node.js] 10.0.0 or later.
+
+## 📖 Usage
+
+```js
+const evk = require("eslint-visitor-keys")
+```
+
+### evk.KEYS
+
+> type: `{ [type: string]: string[] | undefined }`
+
+Visitor keys. This keys are frozen.
+
+This is an object. Keys are the type of [ESTree] nodes. Their values are an array of property names which have child nodes.
+
+For example:
+
+```
+console.log(evk.KEYS.AssignmentExpression) // → ["left", "right"]
+```
+
+### evk.getKeys(node)
+
+> type: `(node: object) => string[]`
+
+Get the visitor keys of a given AST node.
+
+This is similar to `Object.keys(node)` of ES Standard, but some keys are excluded: `parent`, `leadingComments`, `trailingComments`, and names which start with `_`.
+
+This will be used to traverse unknown nodes.
+
+For example:
+
+```
+const node = {
+ type: "AssignmentExpression",
+ left: { type: "Identifier", name: "foo" },
+ right: { type: "Literal", value: 0 }
+}
+console.log(evk.getKeys(node)) // → ["type", "left", "right"]
+```
+
+### evk.unionWith(additionalKeys)
+
+> type: `(additionalKeys: object) => { [type: string]: string[] | undefined }`
+
+Make the union set with `evk.KEYS` and the given keys.
+
+- The order of keys is, `additionalKeys` is at first, then `evk.KEYS` is concatenated after that.
+- It removes duplicated keys as keeping the first one.
+
+For example:
+
+```
+console.log(evk.unionWith({
+ MethodDefinition: ["decorators"]
+})) // → { ..., MethodDefinition: ["decorators", "key", "value"], ... }
+```
+
+## 📰 Change log
+
+See [GitHub releases](https://github.com/eslint/eslint-visitor-keys/releases).
+
+## 🍻 Contributing
+
+Welcome. See [ESLint contribution guidelines](https://eslint.org/docs/developer-guide/contributing/).
+
+### Development commands
+
+- `npm test` runs tests and measures code coverage.
+- `npm run lint` checks source codes with ESLint.
+- `npm run coverage` opens the code coverage report of the previous test with your default browser.
+- `npm run release` publishes this package to [npm] registory.
+
+
+[npm]: https://www.npmjs.com/
+[Node.js]: https://nodejs.org/en/
+[ESTree]: https://github.com/estree/estree
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/index.js
new file mode 100644
index 0000000000..cd8a326083
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/index.js
@@ -0,0 +1,81 @@
+/**
+ * @author Toru Nagashima <https://github.com/mysticatea>
+ * See LICENSE file in root directory for full license.
+ */
+"use strict";
+
+const KEYS = require("./visitor-keys.json");
+
+// Types.
+const NODE_TYPES = Object.freeze(Object.keys(KEYS));
+
+// Freeze the keys.
+for (const type of NODE_TYPES) {
+ Object.freeze(KEYS[type]);
+}
+Object.freeze(KEYS);
+
+// List to ignore keys.
+const KEY_BLACKLIST = new Set([
+ "parent",
+ "leadingComments",
+ "trailingComments"
+]);
+
+/**
+ * Check whether a given key should be used or not.
+ * @param {string} key The key to check.
+ * @returns {boolean} `true` if the key should be used.
+ */
+function filterKey(key) {
+ return !KEY_BLACKLIST.has(key) && key[0] !== "_";
+}
+
+//------------------------------------------------------------------------------
+// Public interfaces
+//------------------------------------------------------------------------------
+
+module.exports = Object.freeze({
+
+ /**
+ * Visitor keys.
+ * @type {{ [type: string]: string[] | undefined }}
+ */
+ KEYS,
+
+ /**
+ * Get visitor keys of a given node.
+ * @param {Object} node The AST node to get keys.
+ * @returns {string[]} Visitor keys of the node.
+ */
+ getKeys(node) {
+ return Object.keys(node).filter(filterKey);
+ },
+
+ // Disable valid-jsdoc rule because it reports syntax error on the type of @returns.
+ // eslint-disable-next-line valid-jsdoc
+ /**
+ * Make the union set with `KEYS` and given keys.
+ * @param {Object} additionalKeys The additional keys.
+ * @returns {{ [type: string]: string[] | undefined }} The union set.
+ */
+ unionWith(additionalKeys) {
+ const retv = Object.assign({}, KEYS);
+
+ for (const type of Object.keys(additionalKeys)) {
+ if (retv.hasOwnProperty(type)) {
+ const keys = new Set(additionalKeys[type]);
+
+ for (const key of retv[type]) {
+ keys.add(key);
+ }
+
+ retv[type] = Object.freeze(Array.from(keys));
+ } else {
+ retv[type] = Object.freeze(Array.from(additionalKeys[type]));
+ }
+ }
+
+ return Object.freeze(retv);
+ }
+});
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/visitor-keys.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/visitor-keys.json
new file mode 100644
index 0000000000..e648ee125a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/lib/visitor-keys.json
@@ -0,0 +1,289 @@
+{
+ "AssignmentExpression": [
+ "left",
+ "right"
+ ],
+ "AssignmentPattern": [
+ "left",
+ "right"
+ ],
+ "ArrayExpression": [
+ "elements"
+ ],
+ "ArrayPattern": [
+ "elements"
+ ],
+ "ArrowFunctionExpression": [
+ "params",
+ "body"
+ ],
+ "AwaitExpression": [
+ "argument"
+ ],
+ "BlockStatement": [
+ "body"
+ ],
+ "BinaryExpression": [
+ "left",
+ "right"
+ ],
+ "BreakStatement": [
+ "label"
+ ],
+ "CallExpression": [
+ "callee",
+ "arguments"
+ ],
+ "CatchClause": [
+ "param",
+ "body"
+ ],
+ "ChainExpression": [
+ "expression"
+ ],
+ "ClassBody": [
+ "body"
+ ],
+ "ClassDeclaration": [
+ "id",
+ "superClass",
+ "body"
+ ],
+ "ClassExpression": [
+ "id",
+ "superClass",
+ "body"
+ ],
+ "ConditionalExpression": [
+ "test",
+ "consequent",
+ "alternate"
+ ],
+ "ContinueStatement": [
+ "label"
+ ],
+ "DebuggerStatement": [],
+ "DoWhileStatement": [
+ "body",
+ "test"
+ ],
+ "EmptyStatement": [],
+ "ExportAllDeclaration": [
+ "exported",
+ "source"
+ ],
+ "ExportDefaultDeclaration": [
+ "declaration"
+ ],
+ "ExportNamedDeclaration": [
+ "declaration",
+ "specifiers",
+ "source"
+ ],
+ "ExportSpecifier": [
+ "exported",
+ "local"
+ ],
+ "ExpressionStatement": [
+ "expression"
+ ],
+ "ExperimentalRestProperty": [
+ "argument"
+ ],
+ "ExperimentalSpreadProperty": [
+ "argument"
+ ],
+ "ForStatement": [
+ "init",
+ "test",
+ "update",
+ "body"
+ ],
+ "ForInStatement": [
+ "left",
+ "right",
+ "body"
+ ],
+ "ForOfStatement": [
+ "left",
+ "right",
+ "body"
+ ],
+ "FunctionDeclaration": [
+ "id",
+ "params",
+ "body"
+ ],
+ "FunctionExpression": [
+ "id",
+ "params",
+ "body"
+ ],
+ "Identifier": [],
+ "IfStatement": [
+ "test",
+ "consequent",
+ "alternate"
+ ],
+ "ImportDeclaration": [
+ "specifiers",
+ "source"
+ ],
+ "ImportDefaultSpecifier": [
+ "local"
+ ],
+ "ImportExpression": [
+ "source"
+ ],
+ "ImportNamespaceSpecifier": [
+ "local"
+ ],
+ "ImportSpecifier": [
+ "imported",
+ "local"
+ ],
+ "JSXAttribute": [
+ "name",
+ "value"
+ ],
+ "JSXClosingElement": [
+ "name"
+ ],
+ "JSXElement": [
+ "openingElement",
+ "children",
+ "closingElement"
+ ],
+ "JSXEmptyExpression": [],
+ "JSXExpressionContainer": [
+ "expression"
+ ],
+ "JSXIdentifier": [],
+ "JSXMemberExpression": [
+ "object",
+ "property"
+ ],
+ "JSXNamespacedName": [
+ "namespace",
+ "name"
+ ],
+ "JSXOpeningElement": [
+ "name",
+ "attributes"
+ ],
+ "JSXSpreadAttribute": [
+ "argument"
+ ],
+ "JSXText": [],
+ "JSXFragment": [
+ "openingFragment",
+ "children",
+ "closingFragment"
+ ],
+ "Literal": [],
+ "LabeledStatement": [
+ "label",
+ "body"
+ ],
+ "LogicalExpression": [
+ "left",
+ "right"
+ ],
+ "MemberExpression": [
+ "object",
+ "property"
+ ],
+ "MetaProperty": [
+ "meta",
+ "property"
+ ],
+ "MethodDefinition": [
+ "key",
+ "value"
+ ],
+ "NewExpression": [
+ "callee",
+ "arguments"
+ ],
+ "ObjectExpression": [
+ "properties"
+ ],
+ "ObjectPattern": [
+ "properties"
+ ],
+ "PrivateIdentifier": [],
+ "Program": [
+ "body"
+ ],
+ "Property": [
+ "key",
+ "value"
+ ],
+ "PropertyDefinition": [
+ "key",
+ "value"
+ ],
+ "RestElement": [
+ "argument"
+ ],
+ "ReturnStatement": [
+ "argument"
+ ],
+ "SequenceExpression": [
+ "expressions"
+ ],
+ "SpreadElement": [
+ "argument"
+ ],
+ "Super": [],
+ "SwitchStatement": [
+ "discriminant",
+ "cases"
+ ],
+ "SwitchCase": [
+ "test",
+ "consequent"
+ ],
+ "TaggedTemplateExpression": [
+ "tag",
+ "quasi"
+ ],
+ "TemplateElement": [],
+ "TemplateLiteral": [
+ "quasis",
+ "expressions"
+ ],
+ "ThisExpression": [],
+ "ThrowStatement": [
+ "argument"
+ ],
+ "TryStatement": [
+ "block",
+ "handler",
+ "finalizer"
+ ],
+ "UnaryExpression": [
+ "argument"
+ ],
+ "UpdateExpression": [
+ "argument"
+ ],
+ "VariableDeclaration": [
+ "declarations"
+ ],
+ "VariableDeclarator": [
+ "id",
+ "init"
+ ],
+ "WhileStatement": [
+ "test",
+ "body"
+ ],
+ "WithStatement": [
+ "object",
+ "body"
+ ],
+ "YieldExpression": [
+ "argument"
+ ]
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/package.json
new file mode 100644
index 0000000000..775706ba4b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "eslint-visitor-keys",
+ "version": "2.1.0",
+ "description": "Constants and utilities about visitor keys to traverse AST.",
+ "main": "lib/index.js",
+ "files": [
+ "lib"
+ ],
+ "engines": {
+ "node": ">=10"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "eslint": "^4.7.2",
+ "eslint-config-eslint": "^4.0.0",
+ "eslint-release": "^1.0.0",
+ "mocha": "^3.5.3",
+ "nyc": "^11.2.1",
+ "opener": "^1.4.3"
+ },
+ "scripts": {
+ "lint": "eslint lib tests/lib",
+ "test": "nyc mocha tests/lib",
+ "coverage": "nyc report --reporter lcov && opener coverage/lcov-report/index.html",
+ "generate-release": "eslint-generate-release",
+ "generate-alpharelease": "eslint-generate-prerelease alpha",
+ "generate-betarelease": "eslint-generate-prerelease beta",
+ "generate-rcrelease": "eslint-generate-prerelease rc",
+ "publish-release": "eslint-publish-release"
+ },
+ "repository": "eslint/eslint-visitor-keys",
+ "keywords": [],
+ "author": "Toru Nagashima (https://github.com/mysticatea)",
+ "license": "Apache-2.0",
+ "bugs": {
+ "url": "https://github.com/eslint/eslint-visitor-keys/issues"
+ },
+ "homepage": "https://github.com/eslint/eslint-visitor-keys#readme"
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/LICENSE.BSD b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/LICENSE.BSD
new file mode 100644
index 0000000000..3e580c355a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/LICENSE.BSD
@@ -0,0 +1,19 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/README.md b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/README.md
new file mode 100644
index 0000000000..ccd3377f3e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/README.md
@@ -0,0 +1,153 @@
+### Estraverse [![Build Status](https://secure.travis-ci.org/estools/estraverse.svg)](http://travis-ci.org/estools/estraverse)
+
+Estraverse ([estraverse](http://github.com/estools/estraverse)) is
+[ECMAScript](http://www.ecma-international.org/publications/standards/Ecma-262.htm)
+traversal functions from [esmangle project](http://github.com/estools/esmangle).
+
+### Documentation
+
+You can find usage docs at [wiki page](https://github.com/estools/estraverse/wiki/Usage).
+
+### Example Usage
+
+The following code will output all variables declared at the root of a file.
+
+```javascript
+estraverse.traverse(ast, {
+ enter: function (node, parent) {
+ if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration')
+ return estraverse.VisitorOption.Skip;
+ },
+ leave: function (node, parent) {
+ if (node.type == 'VariableDeclarator')
+ console.log(node.id.name);
+ }
+});
+```
+
+We can use `this.skip`, `this.remove` and `this.break` functions instead of using Skip, Remove and Break.
+
+```javascript
+estraverse.traverse(ast, {
+ enter: function (node) {
+ this.break();
+ }
+});
+```
+
+And estraverse provides `estraverse.replace` function. When returning node from `enter`/`leave`, current node is replaced with it.
+
+```javascript
+result = estraverse.replace(tree, {
+ enter: function (node) {
+ // Replace it with replaced.
+ if (node.type === 'Literal')
+ return replaced;
+ }
+});
+```
+
+By passing `visitor.keys` mapping, we can extend estraverse traversing functionality.
+
+```javascript
+// This tree contains a user-defined `TestExpression` node.
+var tree = {
+ type: 'TestExpression',
+
+ // This 'argument' is the property containing the other **node**.
+ argument: {
+ type: 'Literal',
+ value: 20
+ },
+
+ // This 'extended' is the property not containing the other **node**.
+ extended: true
+};
+estraverse.traverse(tree, {
+ enter: function (node) { },
+
+ // Extending the existing traversing rules.
+ keys: {
+ // TargetNodeName: [ 'keys', 'containing', 'the', 'other', '**node**' ]
+ TestExpression: ['argument']
+ }
+});
+```
+
+By passing `visitor.fallback` option, we can control the behavior when encountering unknown nodes.
+
+```javascript
+// This tree contains a user-defined `TestExpression` node.
+var tree = {
+ type: 'TestExpression',
+
+ // This 'argument' is the property containing the other **node**.
+ argument: {
+ type: 'Literal',
+ value: 20
+ },
+
+ // This 'extended' is the property not containing the other **node**.
+ extended: true
+};
+estraverse.traverse(tree, {
+ enter: function (node) { },
+
+ // Iterating the child **nodes** of unknown nodes.
+ fallback: 'iteration'
+});
+```
+
+When `visitor.fallback` is a function, we can determine which keys to visit on each node.
+
+```javascript
+// This tree contains a user-defined `TestExpression` node.
+var tree = {
+ type: 'TestExpression',
+
+ // This 'argument' is the property containing the other **node**.
+ argument: {
+ type: 'Literal',
+ value: 20
+ },
+
+ // This 'extended' is the property not containing the other **node**.
+ extended: true
+};
+estraverse.traverse(tree, {
+ enter: function (node) { },
+
+ // Skip the `argument` property of each node
+ fallback: function(node) {
+ return Object.keys(node).filter(function(key) {
+ return key !== 'argument';
+ });
+ }
+});
+```
+
+### License
+
+Copyright (C) 2012-2016 [Yusuke Suzuki](http://github.com/Constellation)
+ (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/estraverse.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/estraverse.js
new file mode 100644
index 0000000000..b106d386a6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/estraverse.js
@@ -0,0 +1,782 @@
+/*
+ Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
+ Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+/*jslint vars:false, bitwise:true*/
+/*jshint indent:4*/
+/*global exports:true*/
+(function clone(exports) {
+ 'use strict';
+
+ var Syntax,
+ VisitorOption,
+ VisitorKeys,
+ BREAK,
+ SKIP,
+ REMOVE;
+
+ function deepCopy(obj) {
+ var ret = {}, key, val;
+ for (key in obj) {
+ if (obj.hasOwnProperty(key)) {
+ val = obj[key];
+ if (typeof val === 'object' && val !== null) {
+ ret[key] = deepCopy(val);
+ } else {
+ ret[key] = val;
+ }
+ }
+ }
+ return ret;
+ }
+
+ // based on LLVM libc++ upper_bound / lower_bound
+ // MIT License
+
+ function upperBound(array, func) {
+ var diff, len, i, current;
+
+ len = array.length;
+ i = 0;
+
+ while (len) {
+ diff = len >>> 1;
+ current = i + diff;
+ if (func(array[current])) {
+ len = diff;
+ } else {
+ i = current + 1;
+ len -= diff + 1;
+ }
+ }
+ return i;
+ }
+
+ Syntax = {
+ AssignmentExpression: 'AssignmentExpression',
+ AssignmentPattern: 'AssignmentPattern',
+ ArrayExpression: 'ArrayExpression',
+ ArrayPattern: 'ArrayPattern',
+ ArrowFunctionExpression: 'ArrowFunctionExpression',
+ AwaitExpression: 'AwaitExpression', // CAUTION: It's deferred to ES7.
+ BlockStatement: 'BlockStatement',
+ BinaryExpression: 'BinaryExpression',
+ BreakStatement: 'BreakStatement',
+ CallExpression: 'CallExpression',
+ CatchClause: 'CatchClause',
+ ClassBody: 'ClassBody',
+ ClassDeclaration: 'ClassDeclaration',
+ ClassExpression: 'ClassExpression',
+ ComprehensionBlock: 'ComprehensionBlock', // CAUTION: It's deferred to ES7.
+ ComprehensionExpression: 'ComprehensionExpression', // CAUTION: It's deferred to ES7.
+ ConditionalExpression: 'ConditionalExpression',
+ ContinueStatement: 'ContinueStatement',
+ DebuggerStatement: 'DebuggerStatement',
+ DirectiveStatement: 'DirectiveStatement',
+ DoWhileStatement: 'DoWhileStatement',
+ EmptyStatement: 'EmptyStatement',
+ ExportAllDeclaration: 'ExportAllDeclaration',
+ ExportDefaultDeclaration: 'ExportDefaultDeclaration',
+ ExportNamedDeclaration: 'ExportNamedDeclaration',
+ ExportSpecifier: 'ExportSpecifier',
+ ExpressionStatement: 'ExpressionStatement',
+ ForStatement: 'ForStatement',
+ ForInStatement: 'ForInStatement',
+ ForOfStatement: 'ForOfStatement',
+ FunctionDeclaration: 'FunctionDeclaration',
+ FunctionExpression: 'FunctionExpression',
+ GeneratorExpression: 'GeneratorExpression', // CAUTION: It's deferred to ES7.
+ Identifier: 'Identifier',
+ IfStatement: 'IfStatement',
+ ImportExpression: 'ImportExpression',
+ ImportDeclaration: 'ImportDeclaration',
+ ImportDefaultSpecifier: 'ImportDefaultSpecifier',
+ ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
+ ImportSpecifier: 'ImportSpecifier',
+ Literal: 'Literal',
+ LabeledStatement: 'LabeledStatement',
+ LogicalExpression: 'LogicalExpression',
+ MemberExpression: 'MemberExpression',
+ MetaProperty: 'MetaProperty',
+ MethodDefinition: 'MethodDefinition',
+ ModuleSpecifier: 'ModuleSpecifier',
+ NewExpression: 'NewExpression',
+ ObjectExpression: 'ObjectExpression',
+ ObjectPattern: 'ObjectPattern',
+ Program: 'Program',
+ Property: 'Property',
+ RestElement: 'RestElement',
+ ReturnStatement: 'ReturnStatement',
+ SequenceExpression: 'SequenceExpression',
+ SpreadElement: 'SpreadElement',
+ Super: 'Super',
+ SwitchStatement: 'SwitchStatement',
+ SwitchCase: 'SwitchCase',
+ TaggedTemplateExpression: 'TaggedTemplateExpression',
+ TemplateElement: 'TemplateElement',
+ TemplateLiteral: 'TemplateLiteral',
+ ThisExpression: 'ThisExpression',
+ ThrowStatement: 'ThrowStatement',
+ TryStatement: 'TryStatement',
+ UnaryExpression: 'UnaryExpression',
+ UpdateExpression: 'UpdateExpression',
+ VariableDeclaration: 'VariableDeclaration',
+ VariableDeclarator: 'VariableDeclarator',
+ WhileStatement: 'WhileStatement',
+ WithStatement: 'WithStatement',
+ YieldExpression: 'YieldExpression'
+ };
+
+ VisitorKeys = {
+ AssignmentExpression: ['left', 'right'],
+ AssignmentPattern: ['left', 'right'],
+ ArrayExpression: ['elements'],
+ ArrayPattern: ['elements'],
+ ArrowFunctionExpression: ['params', 'body'],
+ AwaitExpression: ['argument'], // CAUTION: It's deferred to ES7.
+ BlockStatement: ['body'],
+ BinaryExpression: ['left', 'right'],
+ BreakStatement: ['label'],
+ CallExpression: ['callee', 'arguments'],
+ CatchClause: ['param', 'body'],
+ ClassBody: ['body'],
+ ClassDeclaration: ['id', 'superClass', 'body'],
+ ClassExpression: ['id', 'superClass', 'body'],
+ ComprehensionBlock: ['left', 'right'], // CAUTION: It's deferred to ES7.
+ ComprehensionExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7.
+ ConditionalExpression: ['test', 'consequent', 'alternate'],
+ ContinueStatement: ['label'],
+ DebuggerStatement: [],
+ DirectiveStatement: [],
+ DoWhileStatement: ['body', 'test'],
+ EmptyStatement: [],
+ ExportAllDeclaration: ['source'],
+ ExportDefaultDeclaration: ['declaration'],
+ ExportNamedDeclaration: ['declaration', 'specifiers', 'source'],
+ ExportSpecifier: ['exported', 'local'],
+ ExpressionStatement: ['expression'],
+ ForStatement: ['init', 'test', 'update', 'body'],
+ ForInStatement: ['left', 'right', 'body'],
+ ForOfStatement: ['left', 'right', 'body'],
+ FunctionDeclaration: ['id', 'params', 'body'],
+ FunctionExpression: ['id', 'params', 'body'],
+ GeneratorExpression: ['blocks', 'filter', 'body'], // CAUTION: It's deferred to ES7.
+ Identifier: [],
+ IfStatement: ['test', 'consequent', 'alternate'],
+ ImportExpression: ['source'],
+ ImportDeclaration: ['specifiers', 'source'],
+ ImportDefaultSpecifier: ['local'],
+ ImportNamespaceSpecifier: ['local'],
+ ImportSpecifier: ['imported', 'local'],
+ Literal: [],
+ LabeledStatement: ['label', 'body'],
+ LogicalExpression: ['left', 'right'],
+ MemberExpression: ['object', 'property'],
+ MetaProperty: ['meta', 'property'],
+ MethodDefinition: ['key', 'value'],
+ ModuleSpecifier: [],
+ NewExpression: ['callee', 'arguments'],
+ ObjectExpression: ['properties'],
+ ObjectPattern: ['properties'],
+ Program: ['body'],
+ Property: ['key', 'value'],
+ RestElement: [ 'argument' ],
+ ReturnStatement: ['argument'],
+ SequenceExpression: ['expressions'],
+ SpreadElement: ['argument'],
+ Super: [],
+ SwitchStatement: ['discriminant', 'cases'],
+ SwitchCase: ['test', 'consequent'],
+ TaggedTemplateExpression: ['tag', 'quasi'],
+ TemplateElement: [],
+ TemplateLiteral: ['quasis', 'expressions'],
+ ThisExpression: [],
+ ThrowStatement: ['argument'],
+ TryStatement: ['block', 'handler', 'finalizer'],
+ UnaryExpression: ['argument'],
+ UpdateExpression: ['argument'],
+ VariableDeclaration: ['declarations'],
+ VariableDeclarator: ['id', 'init'],
+ WhileStatement: ['test', 'body'],
+ WithStatement: ['object', 'body'],
+ YieldExpression: ['argument']
+ };
+
+ // unique id
+ BREAK = {};
+ SKIP = {};
+ REMOVE = {};
+
+ VisitorOption = {
+ Break: BREAK,
+ Skip: SKIP,
+ Remove: REMOVE
+ };
+
+ function Reference(parent, key) {
+ this.parent = parent;
+ this.key = key;
+ }
+
+ Reference.prototype.replace = function replace(node) {
+ this.parent[this.key] = node;
+ };
+
+ Reference.prototype.remove = function remove() {
+ if (Array.isArray(this.parent)) {
+ this.parent.splice(this.key, 1);
+ return true;
+ } else {
+ this.replace(null);
+ return false;
+ }
+ };
+
+ function Element(node, path, wrap, ref) {
+ this.node = node;
+ this.path = path;
+ this.wrap = wrap;
+ this.ref = ref;
+ }
+
+ function Controller() { }
+
+ // API:
+ // return property path array from root to current node
+ Controller.prototype.path = function path() {
+ var i, iz, j, jz, result, element;
+
+ function addToPath(result, path) {
+ if (Array.isArray(path)) {
+ for (j = 0, jz = path.length; j < jz; ++j) {
+ result.push(path[j]);
+ }
+ } else {
+ result.push(path);
+ }
+ }
+
+ // root node
+ if (!this.__current.path) {
+ return null;
+ }
+
+ // first node is sentinel, second node is root element
+ result = [];
+ for (i = 2, iz = this.__leavelist.length; i < iz; ++i) {
+ element = this.__leavelist[i];
+ addToPath(result, element.path);
+ }
+ addToPath(result, this.__current.path);
+ return result;
+ };
+
+ // API:
+ // return type of current node
+ Controller.prototype.type = function () {
+ var node = this.current();
+ return node.type || this.__current.wrap;
+ };
+
+ // API:
+ // return array of parent elements
+ Controller.prototype.parents = function parents() {
+ var i, iz, result;
+
+ // first node is sentinel
+ result = [];
+ for (i = 1, iz = this.__leavelist.length; i < iz; ++i) {
+ result.push(this.__leavelist[i].node);
+ }
+
+ return result;
+ };
+
+ // API:
+ // return current node
+ Controller.prototype.current = function current() {
+ return this.__current.node;
+ };
+
+ Controller.prototype.__execute = function __execute(callback, element) {
+ var previous, result;
+
+ result = undefined;
+
+ previous = this.__current;
+ this.__current = element;
+ this.__state = null;
+ if (callback) {
+ result = callback.call(this, element.node, this.__leavelist[this.__leavelist.length - 1].node);
+ }
+ this.__current = previous;
+
+ return result;
+ };
+
+ // API:
+ // notify control skip / break
+ Controller.prototype.notify = function notify(flag) {
+ this.__state = flag;
+ };
+
+ // API:
+ // skip child nodes of current node
+ Controller.prototype.skip = function () {
+ this.notify(SKIP);
+ };
+
+ // API:
+ // break traversals
+ Controller.prototype['break'] = function () {
+ this.notify(BREAK);
+ };
+
+ // API:
+ // remove node
+ Controller.prototype.remove = function () {
+ this.notify(REMOVE);
+ };
+
+ Controller.prototype.__initialize = function(root, visitor) {
+ this.visitor = visitor;
+ this.root = root;
+ this.__worklist = [];
+ this.__leavelist = [];
+ this.__current = null;
+ this.__state = null;
+ this.__fallback = null;
+ if (visitor.fallback === 'iteration') {
+ this.__fallback = Object.keys;
+ } else if (typeof visitor.fallback === 'function') {
+ this.__fallback = visitor.fallback;
+ }
+
+ this.__keys = VisitorKeys;
+ if (visitor.keys) {
+ this.__keys = Object.assign(Object.create(this.__keys), visitor.keys);
+ }
+ };
+
+ function isNode(node) {
+ if (node == null) {
+ return false;
+ }
+ return typeof node === 'object' && typeof node.type === 'string';
+ }
+
+ function isProperty(nodeType, key) {
+ return (nodeType === Syntax.ObjectExpression || nodeType === Syntax.ObjectPattern) && 'properties' === key;
+ }
+
+ Controller.prototype.traverse = function traverse(root, visitor) {
+ var worklist,
+ leavelist,
+ element,
+ node,
+ nodeType,
+ ret,
+ key,
+ current,
+ current2,
+ candidates,
+ candidate,
+ sentinel;
+
+ this.__initialize(root, visitor);
+
+ sentinel = {};
+
+ // reference
+ worklist = this.__worklist;
+ leavelist = this.__leavelist;
+
+ // initialize
+ worklist.push(new Element(root, null, null, null));
+ leavelist.push(new Element(null, null, null, null));
+
+ while (worklist.length) {
+ element = worklist.pop();
+
+ if (element === sentinel) {
+ element = leavelist.pop();
+
+ ret = this.__execute(visitor.leave, element);
+
+ if (this.__state === BREAK || ret === BREAK) {
+ return;
+ }
+ continue;
+ }
+
+ if (element.node) {
+
+ ret = this.__execute(visitor.enter, element);
+
+ if (this.__state === BREAK || ret === BREAK) {
+ return;
+ }
+
+ worklist.push(sentinel);
+ leavelist.push(element);
+
+ if (this.__state === SKIP || ret === SKIP) {
+ continue;
+ }
+
+ node = element.node;
+ nodeType = node.type || element.wrap;
+ candidates = this.__keys[nodeType];
+ if (!candidates) {
+ if (this.__fallback) {
+ candidates = this.__fallback(node);
+ } else {
+ throw new Error('Unknown node type ' + nodeType + '.');
+ }
+ }
+
+ current = candidates.length;
+ while ((current -= 1) >= 0) {
+ key = candidates[current];
+ candidate = node[key];
+ if (!candidate) {
+ continue;
+ }
+
+ if (Array.isArray(candidate)) {
+ current2 = candidate.length;
+ while ((current2 -= 1) >= 0) {
+ if (!candidate[current2]) {
+ continue;
+ }
+ if (isProperty(nodeType, candidates[current])) {
+ element = new Element(candidate[current2], [key, current2], 'Property', null);
+ } else if (isNode(candidate[current2])) {
+ element = new Element(candidate[current2], [key, current2], null, null);
+ } else {
+ continue;
+ }
+ worklist.push(element);
+ }
+ } else if (isNode(candidate)) {
+ worklist.push(new Element(candidate, key, null, null));
+ }
+ }
+ }
+ }
+ };
+
+ Controller.prototype.replace = function replace(root, visitor) {
+ var worklist,
+ leavelist,
+ node,
+ nodeType,
+ target,
+ element,
+ current,
+ current2,
+ candidates,
+ candidate,
+ sentinel,
+ outer,
+ key;
+
+ function removeElem(element) {
+ var i,
+ key,
+ nextElem,
+ parent;
+
+ if (element.ref.remove()) {
+ // When the reference is an element of an array.
+ key = element.ref.key;
+ parent = element.ref.parent;
+
+ // If removed from array, then decrease following items' keys.
+ i = worklist.length;
+ while (i--) {
+ nextElem = worklist[i];
+ if (nextElem.ref && nextElem.ref.parent === parent) {
+ if (nextElem.ref.key < key) {
+ break;
+ }
+ --nextElem.ref.key;
+ }
+ }
+ }
+ }
+
+ this.__initialize(root, visitor);
+
+ sentinel = {};
+
+ // reference
+ worklist = this.__worklist;
+ leavelist = this.__leavelist;
+
+ // initialize
+ outer = {
+ root: root
+ };
+ element = new Element(root, null, null, new Reference(outer, 'root'));
+ worklist.push(element);
+ leavelist.push(element);
+
+ while (worklist.length) {
+ element = worklist.pop();
+
+ if (element === sentinel) {
+ element = leavelist.pop();
+
+ target = this.__execute(visitor.leave, element);
+
+ // node may be replaced with null,
+ // so distinguish between undefined and null in this place
+ if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {
+ // replace
+ element.ref.replace(target);
+ }
+
+ if (this.__state === REMOVE || target === REMOVE) {
+ removeElem(element);
+ }
+
+ if (this.__state === BREAK || target === BREAK) {
+ return outer.root;
+ }
+ continue;
+ }
+
+ target = this.__execute(visitor.enter, element);
+
+ // node may be replaced with null,
+ // so distinguish between undefined and null in this place
+ if (target !== undefined && target !== BREAK && target !== SKIP && target !== REMOVE) {
+ // replace
+ element.ref.replace(target);
+ element.node = target;
+ }
+
+ if (this.__state === REMOVE || target === REMOVE) {
+ removeElem(element);
+ element.node = null;
+ }
+
+ if (this.__state === BREAK || target === BREAK) {
+ return outer.root;
+ }
+
+ // node may be null
+ node = element.node;
+ if (!node) {
+ continue;
+ }
+
+ worklist.push(sentinel);
+ leavelist.push(element);
+
+ if (this.__state === SKIP || target === SKIP) {
+ continue;
+ }
+
+ nodeType = node.type || element.wrap;
+ candidates = this.__keys[nodeType];
+ if (!candidates) {
+ if (this.__fallback) {
+ candidates = this.__fallback(node);
+ } else {
+ throw new Error('Unknown node type ' + nodeType + '.');
+ }
+ }
+
+ current = candidates.length;
+ while ((current -= 1) >= 0) {
+ key = candidates[current];
+ candidate = node[key];
+ if (!candidate) {
+ continue;
+ }
+
+ if (Array.isArray(candidate)) {
+ current2 = candidate.length;
+ while ((current2 -= 1) >= 0) {
+ if (!candidate[current2]) {
+ continue;
+ }
+ if (isProperty(nodeType, candidates[current])) {
+ element = new Element(candidate[current2], [key, current2], 'Property', new Reference(candidate, current2));
+ } else if (isNode(candidate[current2])) {
+ element = new Element(candidate[current2], [key, current2], null, new Reference(candidate, current2));
+ } else {
+ continue;
+ }
+ worklist.push(element);
+ }
+ } else if (isNode(candidate)) {
+ worklist.push(new Element(candidate, key, null, new Reference(node, key)));
+ }
+ }
+ }
+
+ return outer.root;
+ };
+
+ function traverse(root, visitor) {
+ var controller = new Controller();
+ return controller.traverse(root, visitor);
+ }
+
+ function replace(root, visitor) {
+ var controller = new Controller();
+ return controller.replace(root, visitor);
+ }
+
+ function extendCommentRange(comment, tokens) {
+ var target;
+
+ target = upperBound(tokens, function search(token) {
+ return token.range[0] > comment.range[0];
+ });
+
+ comment.extendedRange = [comment.range[0], comment.range[1]];
+
+ if (target !== tokens.length) {
+ comment.extendedRange[1] = tokens[target].range[0];
+ }
+
+ target -= 1;
+ if (target >= 0) {
+ comment.extendedRange[0] = tokens[target].range[1];
+ }
+
+ return comment;
+ }
+
+ function attachComments(tree, providedComments, tokens) {
+ // At first, we should calculate extended comment ranges.
+ var comments = [], comment, len, i, cursor;
+
+ if (!tree.range) {
+ throw new Error('attachComments needs range information');
+ }
+
+ // tokens array is empty, we attach comments to tree as 'leadingComments'
+ if (!tokens.length) {
+ if (providedComments.length) {
+ for (i = 0, len = providedComments.length; i < len; i += 1) {
+ comment = deepCopy(providedComments[i]);
+ comment.extendedRange = [0, tree.range[0]];
+ comments.push(comment);
+ }
+ tree.leadingComments = comments;
+ }
+ return tree;
+ }
+
+ for (i = 0, len = providedComments.length; i < len; i += 1) {
+ comments.push(extendCommentRange(deepCopy(providedComments[i]), tokens));
+ }
+
+ // This is based on John Freeman's implementation.
+ cursor = 0;
+ traverse(tree, {
+ enter: function (node) {
+ var comment;
+
+ while (cursor < comments.length) {
+ comment = comments[cursor];
+ if (comment.extendedRange[1] > node.range[0]) {
+ break;
+ }
+
+ if (comment.extendedRange[1] === node.range[0]) {
+ if (!node.leadingComments) {
+ node.leadingComments = [];
+ }
+ node.leadingComments.push(comment);
+ comments.splice(cursor, 1);
+ } else {
+ cursor += 1;
+ }
+ }
+
+ // already out of owned node
+ if (cursor === comments.length) {
+ return VisitorOption.Break;
+ }
+
+ if (comments[cursor].extendedRange[0] > node.range[1]) {
+ return VisitorOption.Skip;
+ }
+ }
+ });
+
+ cursor = 0;
+ traverse(tree, {
+ leave: function (node) {
+ var comment;
+
+ while (cursor < comments.length) {
+ comment = comments[cursor];
+ if (node.range[1] < comment.extendedRange[0]) {
+ break;
+ }
+
+ if (node.range[1] === comment.extendedRange[0]) {
+ if (!node.trailingComments) {
+ node.trailingComments = [];
+ }
+ node.trailingComments.push(comment);
+ comments.splice(cursor, 1);
+ } else {
+ cursor += 1;
+ }
+ }
+
+ // already out of owned node
+ if (cursor === comments.length) {
+ return VisitorOption.Break;
+ }
+
+ if (comments[cursor].extendedRange[0] > node.range[1]) {
+ return VisitorOption.Skip;
+ }
+ }
+ });
+
+ return tree;
+ }
+
+ exports.version = require('./package.json').version;
+ exports.Syntax = Syntax;
+ exports.traverse = traverse;
+ exports.replace = replace;
+ exports.attachComments = attachComments;
+ exports.VisitorKeys = VisitorKeys;
+ exports.VisitorOption = VisitorOption;
+ exports.Controller = Controller;
+ exports.cloneEnvironment = function () { return clone({}); };
+
+ return exports;
+}(exports));
+/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/package.json
new file mode 100644
index 0000000000..1138238672
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/estraverse/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "estraverse",
+ "description": "ECMAScript JS AST traversal functions",
+ "homepage": "https://github.com/estools/estraverse",
+ "main": "estraverse.js",
+ "version": "4.3.0",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "maintainers": [
+ {
+ "name": "Yusuke Suzuki",
+ "email": "utatane.tea@gmail.com",
+ "web": "http://github.com/Constellation"
+ }
+ ],
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/estools/estraverse.git"
+ },
+ "devDependencies": {
+ "babel-preset-env": "^1.6.1",
+ "babel-register": "^6.3.13",
+ "chai": "^2.1.1",
+ "espree": "^1.11.0",
+ "gulp": "^3.8.10",
+ "gulp-bump": "^0.2.2",
+ "gulp-filter": "^2.0.0",
+ "gulp-git": "^1.0.1",
+ "gulp-tag-version": "^1.3.0",
+ "jshint": "^2.5.6",
+ "mocha": "^2.1.0"
+ },
+ "license": "BSD-2-Clause",
+ "scripts": {
+ "test": "npm run-script lint && npm run-script unit-test",
+ "lint": "jshint estraverse.js",
+ "unit-test": "mocha --compilers js:babel-register"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/LICENSE b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/README.md b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/README.md
new file mode 100644
index 0000000000..2293a14fdc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/README.md
@@ -0,0 +1,443 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+ are equal. Sorts in ascending order if passed to `Array.sort()`.
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean(' =v2.1.5')`: `2.1.5`
+* `s.clean(' 2.1.5 ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/bin/semver.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000000..666034a75d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/bin/semver.js
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(a.slice(indexOfEqualSign + 1))
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+ versions = versions.map(function (v) {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter(function (v) {
+ return semver.valid(v)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+ for (var i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? 'rcompare' : 'compare'
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, options)
+ }).map(function (v) {
+ return semver.clean(v, options)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, options, identifier) : v
+ }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+ console.log(['SemVer ' + version,
+ '',
+ 'A JavaScript implementation of the https://semver.org/ specification',
+ 'Copyright Isaac Z. Schlueter',
+ '',
+ 'Usage: semver [options] <version> [<version> [...]]',
+ 'Prints valid versions sorted by SemVer precedence',
+ '',
+ 'Options:',
+ '-r --range <range>',
+ ' Print versions that match the specified range.',
+ '',
+ '-i --increment [<level>]',
+ ' Increment a version by the specified level. Level can',
+ ' be one of: major, minor, patch, premajor, preminor,',
+ " prepatch, or prerelease. Default level is 'patch'.",
+ ' Only one version may be specified.',
+ '',
+ '--preid <identifier>',
+ ' Identifier to be used to prefix premajor, preminor,',
+ ' prepatch or prerelease version increments.',
+ '',
+ '-l --loose',
+ ' Interpret versions and ranges loosely',
+ '',
+ '-p --include-prerelease',
+ ' Always include prerelease versions in range matching',
+ '',
+ '-c --coerce',
+ ' Coerce a string into SemVer if possible',
+ ' (does not imply --loose)',
+ '',
+ '--rtl',
+ ' Coerce version strings right to left',
+ '',
+ '--ltr',
+ ' Coerce version strings left to right (default)',
+ '',
+ 'Program exits successfully if any valid version satisfies',
+ 'all supplied ranges, and prints all satisfying versions.',
+ '',
+ 'If no satisfying versions are found, then exits failure.',
+ '',
+ 'Versions are printed in ascending order, so supplying',
+ 'multiple versions to the utility will just sort them.'
+ ].join('\n'))
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/package.json
new file mode 100644
index 0000000000..bdd442f500
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "semver",
+ "version": "6.3.0",
+ "description": "The semantic version parser used by npm.",
+ "main": "semver.js",
+ "scripts": {
+ "test": "tap",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --follow-tags"
+ },
+ "devDependencies": {
+ "tap": "^14.3.1"
+ },
+ "license": "ISC",
+ "repository": "https://github.com/npm/node-semver",
+ "bin": {
+ "semver": "./bin/semver.js"
+ },
+ "files": [
+ "bin",
+ "range.bnf",
+ "semver.js"
+ ],
+ "tap": {
+ "check-coverage": true
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/range.bnf b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/range.bnf
new file mode 100644
index 0000000000..d4c6ae0d76
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/semver.js b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/semver.js
new file mode 100644
index 0000000000..636fa4365a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/node_modules/semver/semver.js
@@ -0,0 +1,1596 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function () {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.unshift('SEMVER')
+ console.log.apply(console, args)
+ }
+} else {
+ debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+
+function tok (n) {
+ t[n] = R++
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')'
+
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+ '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+ src[t.PRERELEASE] + '?' +
+ src[t.BUILD] + '?'
+
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+ src[t.PRERELEASELOOSE] + '?' +
+ src[t.BUILD] + '?'
+
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[t.PRERELEASE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+ '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
+
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
+
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
+
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+ '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s*$'
+
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
+
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i])
+ if (!re[i]) {
+ re[i] = new RegExp(src[i])
+ }
+}
+
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
+
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL]
+ if (!r.test(version)) {
+ return null
+ }
+
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
+
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
+
+SemVer.prototype.toString = function () {
+ return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ var i = 0
+ do {
+ var a = this.build[i]
+ var b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version
+ } catch (er) {
+ return null
+ }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+ if (eq(version1, version2)) {
+ return null
+ } else {
+ var v1 = parse(version1)
+ var v2 = parse(version2)
+ var prefix = ''
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre'
+ var defaultResult = 'prerelease'
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
+ }
+ }
+ return defaultResult // may be undefined
+ }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
+
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+ var versionA = new SemVer(a, loose)
+ var versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose)
+ })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose)
+ })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError('Invalid operator: ' + op)
+ }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
+
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+}
+
+Comparator.prototype.toString = function () {
+ return this.value
+}
+
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ var rangeTmp
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ rangeTmp = new Range(comp.value, options)
+ return satisfies(this.value, rangeTmp, options)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ rangeTmp = new Range(this.value, options)
+ return satisfies(comp.semver, rangeTmp, options)
+ }
+
+ var sameDirectionIncreasing =
+ (this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '>=' || comp.operator === '>')
+ var sameDirectionDecreasing =
+ (this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '<=' || comp.operator === '<')
+ var sameSemVer = this.semver.version === comp.semver.version
+ var differentDirectionsInclusive =
+ (this.operator === '>=' || this.operator === '<=') &&
+ (comp.operator === '>=' || comp.operator === '<=')
+ var oppositeDirectionsLessThan =
+ cmp(this.semver, '<', comp.semver, options) &&
+ ((this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '<=' || comp.operator === '<'))
+ var oppositeDirectionsGreaterThan =
+ cmp(this.semver, '>', comp.semver, options) &&
+ ((this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '>=' || comp.operator === '>'))
+
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First, split based on boolean or ||
+ this.raw = range
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim())
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length
+ })
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range)
+ }
+
+ this.format()
+}
+
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
+
+Range.prototype.toString = function () {
+ return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose
+ range = range.trim()
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace)
+ debug('hyphen replace', range)
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range, re[t.COMPARATORTRIM])
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options)
+ }, this).join(' ').split(/\s+/)
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe)
+ })
+ }
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options)
+ }, this)
+
+ return set
+}
+
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some(function (thisComparators) {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some(function (rangeComparators) {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+}
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+ var result = true
+ var remainingComparators = comparators.slice()
+ var testComparator = remainingComparators.pop()
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options)
+ })
+
+ testComparator = remainingComparators.pop()
+ }
+
+ return result
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value
+ }).join(' ').trim().split(' ')
+ })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options)
+ }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options)
+ }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+ debug('caret', comp, options)
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+ comp = comp.trim()
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ var xM = isX(M)
+ var xm = xM || isX(m)
+ var xp = xm || isX(p)
+ var anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0' + pr
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(re[t.STAR], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0'
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0'
+ } else {
+ from = '>=' + from
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0'
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0'
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+ } else {
+ to = '<=' + to
+ }
+
+ return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
+
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+ var max = null
+ var maxSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+ var min = null
+ var minSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+ range = new Range(range, loose)
+
+ var minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator)
+ }
+ })
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+ return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+ return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ var gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version, options) {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ options = options || {}
+
+ var match = null
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next
+ while ((next = re[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ re[t.COERCERTL].lastIndex = -1
+ }
+
+ if (match === null) {
+ return null
+ }
+
+ return parse(match[2] +
+ '.' + (match[3] || '0') +
+ '.' + (match[4] || '0'), options)
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json
new file mode 100644
index 0000000000..94e4f68b6e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "@babel/eslint-parser",
+ "version": "7.16.3",
+ "description": "ESLint parser that allows for linting of experimental syntax transformed by Babel",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "eslint/babel-eslint-parser"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "bugs": {
+ "url": "https://github.com/babel/babel/issues"
+ },
+ "homepage": "https://babel.dev/",
+ "engines": {
+ "node": "^10.13.0 || ^12.13.0 || >=14.0.0"
+ },
+ "main": "./lib/index.cjs",
+ "type": "commonjs",
+ "exports": {
+ ".": "./lib/index.cjs",
+ "./experimental-worker": "./lib/experimental-worker.cjs",
+ "./package.json": "./package.json"
+ },
+ "peerDependencies": {
+ "@babel/core": ">=7.11.0",
+ "eslint": "^7.5.0 || ^8.0.0"
+ },
+ "dependencies": {
+ "eslint-scope": "^5.1.1",
+ "eslint-visitor-keys": "^2.1.0",
+ "semver": "^6.3.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.16.0",
+ "dedent": "^0.7.0",
+ "eslint": "^7.27.0",
+ "eslint-8": "npm:eslint@^8.0.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/LICENSE b/tools/node_modules/eslint/node_modules/@babel/generator/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/README.md b/tools/node_modules/eslint/node_modules/@babel/generator/README.md
new file mode 100644
index 0000000000..b760238ebc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/README.md
@@ -0,0 +1,19 @@
+# @babel/generator
+
+> Turns an AST into code.
+
+See our website [@babel/generator](https://babeljs.io/docs/en/babel-generator) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/generator
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/generator --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js
new file mode 100644
index 0000000000..1445813969
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js
@@ -0,0 +1,265 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+const SPACES_RE = /^[ \t]+$/;
+
+class Buffer {
+ constructor(map) {
+ this._map = null;
+ this._buf = "";
+ this._last = 0;
+ this._queue = [];
+ this._position = {
+ line: 1,
+ column: 0
+ };
+ this._sourcePosition = {
+ identifierName: null,
+ line: null,
+ column: null,
+ filename: null
+ };
+ this._disallowedPop = null;
+ this._map = map;
+ }
+
+ get() {
+ this._flush();
+
+ const map = this._map;
+ const result = {
+ code: this._buf.trimRight(),
+ map: null,
+ rawMappings: map == null ? void 0 : map.getRawMappings()
+ };
+
+ if (map) {
+ Object.defineProperty(result, "map", {
+ configurable: true,
+ enumerable: true,
+
+ get() {
+ return this.map = map.get();
+ },
+
+ set(value) {
+ Object.defineProperty(this, "map", {
+ value,
+ writable: true
+ });
+ }
+
+ });
+ }
+
+ return result;
+ }
+
+ append(str) {
+ this._flush();
+
+ const {
+ line,
+ column,
+ filename,
+ identifierName,
+ force
+ } = this._sourcePosition;
+
+ this._append(str, line, column, identifierName, filename, force);
+ }
+
+ queue(str) {
+ if (str === "\n") {
+ while (this._queue.length > 0 && SPACES_RE.test(this._queue[0][0])) {
+ this._queue.shift();
+ }
+ }
+
+ const {
+ line,
+ column,
+ filename,
+ identifierName,
+ force
+ } = this._sourcePosition;
+
+ this._queue.unshift([str, line, column, identifierName, filename, force]);
+ }
+
+ _flush() {
+ let item;
+
+ while (item = this._queue.pop()) {
+ this._append(...item);
+ }
+ }
+
+ _append(str, line, column, identifierName, filename, force) {
+ this._buf += str;
+ this._last = str.charCodeAt(str.length - 1);
+ let i = str.indexOf("\n");
+ let last = 0;
+
+ if (i !== 0) {
+ this._mark(line, column, identifierName, filename, force);
+ }
+
+ while (i !== -1) {
+ this._position.line++;
+ this._position.column = 0;
+ last = i + 1;
+
+ if (last < str.length) {
+ this._mark(++line, 0, identifierName, filename, force);
+ }
+
+ i = str.indexOf("\n", last);
+ }
+
+ this._position.column += str.length - last;
+ }
+
+ _mark(line, column, identifierName, filename, force) {
+ var _this$_map;
+
+ (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position.line, this._position.column, line, column, identifierName, filename, force);
+ }
+
+ removeTrailingNewline() {
+ if (this._queue.length > 0 && this._queue[0][0] === "\n") {
+ this._queue.shift();
+ }
+ }
+
+ removeLastSemicolon() {
+ if (this._queue.length > 0 && this._queue[0][0] === ";") {
+ this._queue.shift();
+ }
+ }
+
+ getLastChar() {
+ let last;
+
+ if (this._queue.length > 0) {
+ const str = this._queue[0][0];
+ last = str.charCodeAt(0);
+ } else {
+ last = this._last;
+ }
+
+ return last;
+ }
+
+ endsWithCharAndNewline() {
+ const queue = this._queue;
+
+ if (queue.length > 0) {
+ const last = queue[0][0];
+ const lastCp = last.charCodeAt(0);
+ if (lastCp !== 10) return;
+
+ if (queue.length > 1) {
+ const secondLast = queue[1][0];
+ return secondLast.charCodeAt(0);
+ } else {
+ return this._last;
+ }
+ }
+ }
+
+ hasContent() {
+ return this._queue.length > 0 || !!this._last;
+ }
+
+ exactSource(loc, cb) {
+ this.source("start", loc, true);
+ cb();
+ this.source("end", loc);
+
+ this._disallowPop("start", loc);
+ }
+
+ source(prop, loc, force) {
+ if (prop && !loc) return;
+
+ this._normalizePosition(prop, loc, this._sourcePosition, force);
+ }
+
+ withSource(prop, loc, cb) {
+ if (!this._map) return cb();
+ const originalLine = this._sourcePosition.line;
+ const originalColumn = this._sourcePosition.column;
+ const originalFilename = this._sourcePosition.filename;
+ const originalIdentifierName = this._sourcePosition.identifierName;
+ this.source(prop, loc);
+ cb();
+
+ if ((!this._sourcePosition.force || this._sourcePosition.line !== originalLine || this._sourcePosition.column !== originalColumn || this._sourcePosition.filename !== originalFilename) && (!this._disallowedPop || this._disallowedPop.line !== originalLine || this._disallowedPop.column !== originalColumn || this._disallowedPop.filename !== originalFilename)) {
+ this._sourcePosition.line = originalLine;
+ this._sourcePosition.column = originalColumn;
+ this._sourcePosition.filename = originalFilename;
+ this._sourcePosition.identifierName = originalIdentifierName;
+ this._sourcePosition.force = false;
+ this._disallowedPop = null;
+ }
+ }
+
+ _disallowPop(prop, loc) {
+ if (prop && !loc) return;
+ this._disallowedPop = this._normalizePosition(prop, loc);
+ }
+
+ _normalizePosition(prop, loc, targetObj, force) {
+ const pos = loc ? loc[prop] : null;
+
+ if (targetObj === undefined) {
+ targetObj = {
+ identifierName: null,
+ line: null,
+ column: null,
+ filename: null,
+ force: false
+ };
+ }
+
+ const origLine = targetObj.line;
+ const origColumn = targetObj.column;
+ const origFilename = targetObj.filename;
+ targetObj.identifierName = prop === "start" && (loc == null ? void 0 : loc.identifierName) || null;
+ targetObj.line = pos == null ? void 0 : pos.line;
+ targetObj.column = pos == null ? void 0 : pos.column;
+ targetObj.filename = loc == null ? void 0 : loc.filename;
+
+ if (force || targetObj.line !== origLine || targetObj.column !== origColumn || targetObj.filename !== origFilename) {
+ targetObj.force = force;
+ }
+
+ return targetObj;
+ }
+
+ getCurrentColumn() {
+ const extra = this._queue.reduce((acc, item) => item[0] + acc, "");
+
+ const lastIndex = extra.lastIndexOf("\n");
+ return lastIndex === -1 ? this._position.column + extra.length : extra.length - 1 - lastIndex;
+ }
+
+ getCurrentLine() {
+ const extra = this._queue.reduce((acc, item) => item[0] + acc, "");
+
+ let count = 0;
+
+ for (let i = 0; i < extra.length; i++) {
+ if (extra[i] === "\n") count++;
+ }
+
+ return this._position.line + count;
+ }
+
+}
+
+exports.default = Buffer; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js
new file mode 100644
index 0000000000..9a5f5d126f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/base.js
@@ -0,0 +1,96 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.BlockStatement = BlockStatement;
+exports.Directive = Directive;
+exports.DirectiveLiteral = DirectiveLiteral;
+exports.File = File;
+exports.InterpreterDirective = InterpreterDirective;
+exports.Placeholder = Placeholder;
+exports.Program = Program;
+
+function File(node) {
+ if (node.program) {
+ this.print(node.program.interpreter, node);
+ }
+
+ this.print(node.program, node);
+}
+
+function Program(node) {
+ this.printInnerComments(node, false);
+ this.printSequence(node.directives, node);
+ if (node.directives && node.directives.length) this.newline();
+ this.printSequence(node.body, node);
+}
+
+function BlockStatement(node) {
+ var _node$directives;
+
+ this.token("{");
+ this.printInnerComments(node);
+ const hasDirectives = (_node$directives = node.directives) == null ? void 0 : _node$directives.length;
+
+ if (node.body.length || hasDirectives) {
+ this.newline();
+ this.printSequence(node.directives, node, {
+ indent: true
+ });
+ if (hasDirectives) this.newline();
+ this.printSequence(node.body, node, {
+ indent: true
+ });
+ this.removeTrailingNewline();
+ this.source("end", node.loc);
+ if (!this.endsWith(10)) this.newline();
+ this.rightBrace();
+ } else {
+ this.source("end", node.loc);
+ this.token("}");
+ }
+}
+
+function Directive(node) {
+ this.print(node.value, node);
+ this.semicolon();
+}
+
+const unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/;
+const unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/;
+
+function DirectiveLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (raw != null) {
+ this.token(raw);
+ return;
+ }
+
+ const {
+ value
+ } = node;
+
+ if (!unescapedDoubleQuoteRE.test(value)) {
+ this.token(`"${value}"`);
+ } else if (!unescapedSingleQuoteRE.test(value)) {
+ this.token(`'${value}'`);
+ } else {
+ throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes.");
+ }
+}
+
+function InterpreterDirective(node) {
+ this.token(`#!${node.value}\n`);
+}
+
+function Placeholder(node) {
+ this.token("%%");
+ this.print(node.name);
+ this.token("%%");
+
+ if (node.expectedNode === "Statement") {
+ this.semicolon();
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js
new file mode 100644
index 0000000000..dac4087707
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/classes.js
@@ -0,0 +1,174 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ClassBody = ClassBody;
+exports.ClassExpression = exports.ClassDeclaration = ClassDeclaration;
+exports.ClassMethod = ClassMethod;
+exports.ClassPrivateMethod = ClassPrivateMethod;
+exports.ClassPrivateProperty = ClassPrivateProperty;
+exports.ClassProperty = ClassProperty;
+exports.StaticBlock = StaticBlock;
+exports._classMethodHead = _classMethodHead;
+
+var _t = require("@babel/types");
+
+const {
+ isExportDefaultDeclaration,
+ isExportNamedDeclaration
+} = _t;
+
+function ClassDeclaration(node, parent) {
+ if (!this.format.decoratorsBeforeExport || !isExportDefaultDeclaration(parent) && !isExportNamedDeclaration(parent)) {
+ this.printJoin(node.decorators, node);
+ }
+
+ if (node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (node.abstract) {
+ this.word("abstract");
+ this.space();
+ }
+
+ this.word("class");
+ this.printInnerComments(node);
+
+ if (node.id) {
+ this.space();
+ this.print(node.id, node);
+ }
+
+ this.print(node.typeParameters, node);
+
+ if (node.superClass) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.print(node.superClass, node);
+ this.print(node.superTypeParameters, node);
+ }
+
+ if (node.implements) {
+ this.space();
+ this.word("implements");
+ this.space();
+ this.printList(node.implements, node);
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ClassBody(node) {
+ this.token("{");
+ this.printInnerComments(node);
+
+ if (node.body.length === 0) {
+ this.token("}");
+ } else {
+ this.newline();
+ this.indent();
+ this.printSequence(node.body, node);
+ this.dedent();
+ if (!this.endsWith(10)) this.newline();
+ this.rightBrace();
+ }
+}
+
+function ClassProperty(node) {
+ this.printJoin(node.decorators, node);
+ this.source("end", node.key.loc);
+ this.tsPrintClassMemberModifiers(node, true);
+
+ if (node.computed) {
+ this.token("[");
+ this.print(node.key, node);
+ this.token("]");
+ } else {
+ this._variance(node);
+
+ this.print(node.key, node);
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+
+ if (node.definite) {
+ this.token("!");
+ }
+
+ this.print(node.typeAnnotation, node);
+
+ if (node.value) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.value, node);
+ }
+
+ this.semicolon();
+}
+
+function ClassPrivateProperty(node) {
+ this.printJoin(node.decorators, node);
+
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this.print(node.key, node);
+ this.print(node.typeAnnotation, node);
+
+ if (node.value) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.value, node);
+ }
+
+ this.semicolon();
+}
+
+function ClassMethod(node) {
+ this._classMethodHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ClassPrivateMethod(node) {
+ this._classMethodHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function _classMethodHead(node) {
+ this.printJoin(node.decorators, node);
+ this.source("end", node.key.loc);
+ this.tsPrintClassMemberModifiers(node, false);
+
+ this._methodHead(node);
+}
+
+function StaticBlock(node) {
+ this.word("static");
+ this.space();
+ this.token("{");
+
+ if (node.body.length === 0) {
+ this.token("}");
+ } else {
+ this.newline();
+ this.printSequence(node.body, node, {
+ indent: true
+ });
+ this.rightBrace();
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js
new file mode 100644
index 0000000000..aa65c5caca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/expressions.js
@@ -0,0 +1,318 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.LogicalExpression = exports.BinaryExpression = exports.AssignmentExpression = AssignmentExpression;
+exports.AssignmentPattern = AssignmentPattern;
+exports.AwaitExpression = void 0;
+exports.BindExpression = BindExpression;
+exports.CallExpression = CallExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.Decorator = Decorator;
+exports.DoExpression = DoExpression;
+exports.EmptyStatement = EmptyStatement;
+exports.ExpressionStatement = ExpressionStatement;
+exports.Import = Import;
+exports.MemberExpression = MemberExpression;
+exports.MetaProperty = MetaProperty;
+exports.ModuleExpression = ModuleExpression;
+exports.NewExpression = NewExpression;
+exports.OptionalCallExpression = OptionalCallExpression;
+exports.OptionalMemberExpression = OptionalMemberExpression;
+exports.ParenthesizedExpression = ParenthesizedExpression;
+exports.PrivateName = PrivateName;
+exports.SequenceExpression = SequenceExpression;
+exports.Super = Super;
+exports.ThisExpression = ThisExpression;
+exports.UnaryExpression = UnaryExpression;
+exports.UpdateExpression = UpdateExpression;
+exports.V8IntrinsicIdentifier = V8IntrinsicIdentifier;
+exports.YieldExpression = void 0;
+
+var _t = require("@babel/types");
+
+var n = require("../node");
+
+const {
+ isCallExpression,
+ isLiteral,
+ isMemberExpression,
+ isNewExpression
+} = _t;
+
+function UnaryExpression(node) {
+ if (node.operator === "void" || node.operator === "delete" || node.operator === "typeof" || node.operator === "throw") {
+ this.word(node.operator);
+ this.space();
+ } else {
+ this.token(node.operator);
+ }
+
+ this.print(node.argument, node);
+}
+
+function DoExpression(node) {
+ if (node.async) {
+ this.word("async");
+ this.space();
+ }
+
+ this.word("do");
+ this.space();
+ this.print(node.body, node);
+}
+
+function ParenthesizedExpression(node) {
+ this.token("(");
+ this.print(node.expression, node);
+ this.token(")");
+}
+
+function UpdateExpression(node) {
+ if (node.prefix) {
+ this.token(node.operator);
+ this.print(node.argument, node);
+ } else {
+ this.startTerminatorless(true);
+ this.print(node.argument, node);
+ this.endTerminatorless();
+ this.token(node.operator);
+ }
+}
+
+function ConditionalExpression(node) {
+ this.print(node.test, node);
+ this.space();
+ this.token("?");
+ this.space();
+ this.print(node.consequent, node);
+ this.space();
+ this.token(":");
+ this.space();
+ this.print(node.alternate, node);
+}
+
+function NewExpression(node, parent) {
+ this.word("new");
+ this.space();
+ this.print(node.callee, node);
+
+ if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression(parent, {
+ callee: node
+ }) && !isMemberExpression(parent) && !isNewExpression(parent)) {
+ return;
+ }
+
+ this.print(node.typeArguments, node);
+ this.print(node.typeParameters, node);
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ this.token("(");
+ this.printList(node.arguments, node);
+ this.token(")");
+}
+
+function SequenceExpression(node) {
+ this.printList(node.expressions, node);
+}
+
+function ThisExpression() {
+ this.word("this");
+}
+
+function Super() {
+ this.word("super");
+}
+
+function Decorator(node) {
+ this.token("@");
+ this.print(node.expression, node);
+ this.newline();
+}
+
+function OptionalMemberExpression(node) {
+ this.print(node.object, node);
+
+ if (!node.computed && isMemberExpression(node.property)) {
+ throw new TypeError("Got a MemberExpression for MemberExpression property");
+ }
+
+ let computed = node.computed;
+
+ if (isLiteral(node.property) && typeof node.property.value === "number") {
+ computed = true;
+ }
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ if (computed) {
+ this.token("[");
+ this.print(node.property, node);
+ this.token("]");
+ } else {
+ if (!node.optional) {
+ this.token(".");
+ }
+
+ this.print(node.property, node);
+ }
+}
+
+function OptionalCallExpression(node) {
+ this.print(node.callee, node);
+ this.print(node.typeArguments, node);
+ this.print(node.typeParameters, node);
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ this.token("(");
+ this.printList(node.arguments, node);
+ this.token(")");
+}
+
+function CallExpression(node) {
+ this.print(node.callee, node);
+ this.print(node.typeArguments, node);
+ this.print(node.typeParameters, node);
+ this.token("(");
+ this.printList(node.arguments, node);
+ this.token(")");
+}
+
+function Import() {
+ this.word("import");
+}
+
+function buildYieldAwait(keyword) {
+ return function (node) {
+ this.word(keyword);
+
+ if (node.delegate) {
+ this.token("*");
+ }
+
+ if (node.argument) {
+ this.space();
+ const terminatorState = this.startTerminatorless();
+ this.print(node.argument, node);
+ this.endTerminatorless(terminatorState);
+ }
+ };
+}
+
+const YieldExpression = buildYieldAwait("yield");
+exports.YieldExpression = YieldExpression;
+const AwaitExpression = buildYieldAwait("await");
+exports.AwaitExpression = AwaitExpression;
+
+function EmptyStatement() {
+ this.semicolon(true);
+}
+
+function ExpressionStatement(node) {
+ this.print(node.expression, node);
+ this.semicolon();
+}
+
+function AssignmentPattern(node) {
+ this.print(node.left, node);
+ if (node.left.optional) this.token("?");
+ this.print(node.left.typeAnnotation, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.right, node);
+}
+
+function AssignmentExpression(node, parent) {
+ const parens = this.inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent);
+
+ if (parens) {
+ this.token("(");
+ }
+
+ this.print(node.left, node);
+ this.space();
+
+ if (node.operator === "in" || node.operator === "instanceof") {
+ this.word(node.operator);
+ } else {
+ this.token(node.operator);
+ }
+
+ this.space();
+ this.print(node.right, node);
+
+ if (parens) {
+ this.token(")");
+ }
+}
+
+function BindExpression(node) {
+ this.print(node.object, node);
+ this.token("::");
+ this.print(node.callee, node);
+}
+
+function MemberExpression(node) {
+ this.print(node.object, node);
+
+ if (!node.computed && isMemberExpression(node.property)) {
+ throw new TypeError("Got a MemberExpression for MemberExpression property");
+ }
+
+ let computed = node.computed;
+
+ if (isLiteral(node.property) && typeof node.property.value === "number") {
+ computed = true;
+ }
+
+ if (computed) {
+ this.token("[");
+ this.print(node.property, node);
+ this.token("]");
+ } else {
+ this.token(".");
+ this.print(node.property, node);
+ }
+}
+
+function MetaProperty(node) {
+ this.print(node.meta, node);
+ this.token(".");
+ this.print(node.property, node);
+}
+
+function PrivateName(node) {
+ this.token("#");
+ this.print(node.id, node);
+}
+
+function V8IntrinsicIdentifier(node) {
+ this.token("%");
+ this.word(node.name);
+}
+
+function ModuleExpression(node) {
+ this.word("module");
+ this.space();
+ this.token("{");
+
+ if (node.body.body.length === 0) {
+ this.token("}");
+ } else {
+ this.newline();
+ this.printSequence(node.body.body, node, {
+ indent: true
+ });
+ this.rightBrace();
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js
new file mode 100644
index 0000000000..badac39dc7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/flow.js
@@ -0,0 +1,795 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.AnyTypeAnnotation = AnyTypeAnnotation;
+exports.ArrayTypeAnnotation = ArrayTypeAnnotation;
+exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation;
+exports.BooleanTypeAnnotation = BooleanTypeAnnotation;
+exports.DeclareClass = DeclareClass;
+exports.DeclareExportAllDeclaration = DeclareExportAllDeclaration;
+exports.DeclareExportDeclaration = DeclareExportDeclaration;
+exports.DeclareFunction = DeclareFunction;
+exports.DeclareInterface = DeclareInterface;
+exports.DeclareModule = DeclareModule;
+exports.DeclareModuleExports = DeclareModuleExports;
+exports.DeclareOpaqueType = DeclareOpaqueType;
+exports.DeclareTypeAlias = DeclareTypeAlias;
+exports.DeclareVariable = DeclareVariable;
+exports.DeclaredPredicate = DeclaredPredicate;
+exports.EmptyTypeAnnotation = EmptyTypeAnnotation;
+exports.EnumBooleanBody = EnumBooleanBody;
+exports.EnumBooleanMember = EnumBooleanMember;
+exports.EnumDeclaration = EnumDeclaration;
+exports.EnumDefaultedMember = EnumDefaultedMember;
+exports.EnumNumberBody = EnumNumberBody;
+exports.EnumNumberMember = EnumNumberMember;
+exports.EnumStringBody = EnumStringBody;
+exports.EnumStringMember = EnumStringMember;
+exports.EnumSymbolBody = EnumSymbolBody;
+exports.ExistsTypeAnnotation = ExistsTypeAnnotation;
+exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
+exports.FunctionTypeParam = FunctionTypeParam;
+exports.IndexedAccessType = IndexedAccessType;
+exports.InferredPredicate = InferredPredicate;
+exports.InterfaceDeclaration = InterfaceDeclaration;
+exports.GenericTypeAnnotation = exports.ClassImplements = exports.InterfaceExtends = InterfaceExtends;
+exports.InterfaceTypeAnnotation = InterfaceTypeAnnotation;
+exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation;
+exports.MixedTypeAnnotation = MixedTypeAnnotation;
+exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation;
+exports.NullableTypeAnnotation = NullableTypeAnnotation;
+Object.defineProperty(exports, "NumberLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _types2.NumericLiteral;
+ }
+});
+exports.NumberTypeAnnotation = NumberTypeAnnotation;
+exports.ObjectTypeAnnotation = ObjectTypeAnnotation;
+exports.ObjectTypeCallProperty = ObjectTypeCallProperty;
+exports.ObjectTypeIndexer = ObjectTypeIndexer;
+exports.ObjectTypeInternalSlot = ObjectTypeInternalSlot;
+exports.ObjectTypeProperty = ObjectTypeProperty;
+exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty;
+exports.OpaqueType = OpaqueType;
+exports.OptionalIndexedAccessType = OptionalIndexedAccessType;
+exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier;
+Object.defineProperty(exports, "StringLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _types2.StringLiteral;
+ }
+});
+exports.StringTypeAnnotation = StringTypeAnnotation;
+exports.SymbolTypeAnnotation = SymbolTypeAnnotation;
+exports.ThisTypeAnnotation = ThisTypeAnnotation;
+exports.TupleTypeAnnotation = TupleTypeAnnotation;
+exports.TypeAlias = TypeAlias;
+exports.TypeAnnotation = TypeAnnotation;
+exports.TypeCastExpression = TypeCastExpression;
+exports.TypeParameter = TypeParameter;
+exports.TypeParameterDeclaration = exports.TypeParameterInstantiation = TypeParameterInstantiation;
+exports.TypeofTypeAnnotation = TypeofTypeAnnotation;
+exports.UnionTypeAnnotation = UnionTypeAnnotation;
+exports.Variance = Variance;
+exports.VoidTypeAnnotation = VoidTypeAnnotation;
+exports._interfaceish = _interfaceish;
+exports._variance = _variance;
+
+var _t = require("@babel/types");
+
+var _modules = require("./modules");
+
+var _types2 = require("./types");
+
+const {
+ isDeclareExportDeclaration,
+ isStatement
+} = _t;
+
+function AnyTypeAnnotation() {
+ this.word("any");
+}
+
+function ArrayTypeAnnotation(node) {
+ this.print(node.elementType, node);
+ this.token("[");
+ this.token("]");
+}
+
+function BooleanTypeAnnotation() {
+ this.word("boolean");
+}
+
+function BooleanLiteralTypeAnnotation(node) {
+ this.word(node.value ? "true" : "false");
+}
+
+function NullLiteralTypeAnnotation() {
+ this.word("null");
+}
+
+function DeclareClass(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("class");
+ this.space();
+
+ this._interfaceish(node);
+}
+
+function DeclareFunction(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("function");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation.typeAnnotation, node);
+
+ if (node.predicate) {
+ this.space();
+ this.print(node.predicate, node);
+ }
+
+ this.semicolon();
+}
+
+function InferredPredicate() {
+ this.token("%");
+ this.word("checks");
+}
+
+function DeclaredPredicate(node) {
+ this.token("%");
+ this.word("checks");
+ this.token("(");
+ this.print(node.value, node);
+ this.token(")");
+}
+
+function DeclareInterface(node) {
+ this.word("declare");
+ this.space();
+ this.InterfaceDeclaration(node);
+}
+
+function DeclareModule(node) {
+ this.word("declare");
+ this.space();
+ this.word("module");
+ this.space();
+ this.print(node.id, node);
+ this.space();
+ this.print(node.body, node);
+}
+
+function DeclareModuleExports(node) {
+ this.word("declare");
+ this.space();
+ this.word("module");
+ this.token(".");
+ this.word("exports");
+ this.print(node.typeAnnotation, node);
+}
+
+function DeclareTypeAlias(node) {
+ this.word("declare");
+ this.space();
+ this.TypeAlias(node);
+}
+
+function DeclareOpaqueType(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.OpaqueType(node);
+}
+
+function DeclareVariable(node, parent) {
+ if (!isDeclareExportDeclaration(parent)) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("var");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.id.typeAnnotation, node);
+ this.semicolon();
+}
+
+function DeclareExportDeclaration(node) {
+ this.word("declare");
+ this.space();
+ this.word("export");
+ this.space();
+
+ if (node.default) {
+ this.word("default");
+ this.space();
+ }
+
+ FlowExportDeclaration.apply(this, arguments);
+}
+
+function DeclareExportAllDeclaration() {
+ this.word("declare");
+ this.space();
+
+ _modules.ExportAllDeclaration.apply(this, arguments);
+}
+
+function EnumDeclaration(node) {
+ const {
+ id,
+ body
+ } = node;
+ this.word("enum");
+ this.space();
+ this.print(id, node);
+ this.print(body, node);
+}
+
+function enumExplicitType(context, name, hasExplicitType) {
+ if (hasExplicitType) {
+ context.space();
+ context.word("of");
+ context.space();
+ context.word(name);
+ }
+
+ context.space();
+}
+
+function enumBody(context, node) {
+ const {
+ members
+ } = node;
+ context.token("{");
+ context.indent();
+ context.newline();
+
+ for (const member of members) {
+ context.print(member, node);
+ context.newline();
+ }
+
+ if (node.hasUnknownMembers) {
+ context.token("...");
+ context.newline();
+ }
+
+ context.dedent();
+ context.token("}");
+}
+
+function EnumBooleanBody(node) {
+ const {
+ explicitType
+ } = node;
+ enumExplicitType(this, "boolean", explicitType);
+ enumBody(this, node);
+}
+
+function EnumNumberBody(node) {
+ const {
+ explicitType
+ } = node;
+ enumExplicitType(this, "number", explicitType);
+ enumBody(this, node);
+}
+
+function EnumStringBody(node) {
+ const {
+ explicitType
+ } = node;
+ enumExplicitType(this, "string", explicitType);
+ enumBody(this, node);
+}
+
+function EnumSymbolBody(node) {
+ enumExplicitType(this, "symbol", true);
+ enumBody(this, node);
+}
+
+function EnumDefaultedMember(node) {
+ const {
+ id
+ } = node;
+ this.print(id, node);
+ this.token(",");
+}
+
+function enumInitializedMember(context, node) {
+ const {
+ id,
+ init
+ } = node;
+ context.print(id, node);
+ context.space();
+ context.token("=");
+ context.space();
+ context.print(init, node);
+ context.token(",");
+}
+
+function EnumBooleanMember(node) {
+ enumInitializedMember(this, node);
+}
+
+function EnumNumberMember(node) {
+ enumInitializedMember(this, node);
+}
+
+function EnumStringMember(node) {
+ enumInitializedMember(this, node);
+}
+
+function FlowExportDeclaration(node) {
+ if (node.declaration) {
+ const declar = node.declaration;
+ this.print(declar, node);
+ if (!isStatement(declar)) this.semicolon();
+ } else {
+ this.token("{");
+
+ if (node.specifiers.length) {
+ this.space();
+ this.printList(node.specifiers, node);
+ this.space();
+ }
+
+ this.token("}");
+
+ if (node.source) {
+ this.space();
+ this.word("from");
+ this.space();
+ this.print(node.source, node);
+ }
+
+ this.semicolon();
+ }
+}
+
+function ExistsTypeAnnotation() {
+ this.token("*");
+}
+
+function FunctionTypeAnnotation(node, parent) {
+ this.print(node.typeParameters, node);
+ this.token("(");
+
+ if (node.this) {
+ this.word("this");
+ this.token(":");
+ this.space();
+ this.print(node.this.typeAnnotation, node);
+
+ if (node.params.length || node.rest) {
+ this.token(",");
+ this.space();
+ }
+ }
+
+ this.printList(node.params, node);
+
+ if (node.rest) {
+ if (node.params.length) {
+ this.token(",");
+ this.space();
+ }
+
+ this.token("...");
+ this.print(node.rest, node);
+ }
+
+ this.token(")");
+
+ if (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction" || parent.type === "ObjectTypeProperty" && parent.method) {
+ this.token(":");
+ } else {
+ this.space();
+ this.token("=>");
+ }
+
+ this.space();
+ this.print(node.returnType, node);
+}
+
+function FunctionTypeParam(node) {
+ this.print(node.name, node);
+ if (node.optional) this.token("?");
+
+ if (node.name) {
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.typeAnnotation, node);
+}
+
+function InterfaceExtends(node) {
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+}
+
+function _interfaceish(node) {
+ var _node$extends;
+
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+
+ if ((_node$extends = node.extends) != null && _node$extends.length) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.printList(node.extends, node);
+ }
+
+ if (node.mixins && node.mixins.length) {
+ this.space();
+ this.word("mixins");
+ this.space();
+ this.printList(node.mixins, node);
+ }
+
+ if (node.implements && node.implements.length) {
+ this.space();
+ this.word("implements");
+ this.space();
+ this.printList(node.implements, node);
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function _variance(node) {
+ if (node.variance) {
+ if (node.variance.kind === "plus") {
+ this.token("+");
+ } else if (node.variance.kind === "minus") {
+ this.token("-");
+ }
+ }
+}
+
+function InterfaceDeclaration(node) {
+ this.word("interface");
+ this.space();
+
+ this._interfaceish(node);
+}
+
+function andSeparator() {
+ this.space();
+ this.token("&");
+ this.space();
+}
+
+function InterfaceTypeAnnotation(node) {
+ this.word("interface");
+
+ if (node.extends && node.extends.length) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.printList(node.extends, node);
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function IntersectionTypeAnnotation(node) {
+ this.printJoin(node.types, node, {
+ separator: andSeparator
+ });
+}
+
+function MixedTypeAnnotation() {
+ this.word("mixed");
+}
+
+function EmptyTypeAnnotation() {
+ this.word("empty");
+}
+
+function NullableTypeAnnotation(node) {
+ this.token("?");
+ this.print(node.typeAnnotation, node);
+}
+
+function NumberTypeAnnotation() {
+ this.word("number");
+}
+
+function StringTypeAnnotation() {
+ this.word("string");
+}
+
+function ThisTypeAnnotation() {
+ this.word("this");
+}
+
+function TupleTypeAnnotation(node) {
+ this.token("[");
+ this.printList(node.types, node);
+ this.token("]");
+}
+
+function TypeofTypeAnnotation(node) {
+ this.word("typeof");
+ this.space();
+ this.print(node.argument, node);
+}
+
+function TypeAlias(node) {
+ this.word("type");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.right, node);
+ this.semicolon();
+}
+
+function TypeAnnotation(node) {
+ this.token(":");
+ this.space();
+ if (node.optional) this.token("?");
+ this.print(node.typeAnnotation, node);
+}
+
+function TypeParameterInstantiation(node) {
+ this.token("<");
+ this.printList(node.params, node, {});
+ this.token(">");
+}
+
+function TypeParameter(node) {
+ this._variance(node);
+
+ this.word(node.name);
+
+ if (node.bound) {
+ this.print(node.bound, node);
+ }
+
+ if (node.default) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.default, node);
+ }
+}
+
+function OpaqueType(node) {
+ this.word("opaque");
+ this.space();
+ this.word("type");
+ this.space();
+ this.print(node.id, node);
+ this.print(node.typeParameters, node);
+
+ if (node.supertype) {
+ this.token(":");
+ this.space();
+ this.print(node.supertype, node);
+ }
+
+ if (node.impltype) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.impltype, node);
+ }
+
+ this.semicolon();
+}
+
+function ObjectTypeAnnotation(node) {
+ if (node.exact) {
+ this.token("{|");
+ } else {
+ this.token("{");
+ }
+
+ const props = [...node.properties, ...(node.callProperties || []), ...(node.indexers || []), ...(node.internalSlots || [])];
+
+ if (props.length) {
+ this.space();
+ this.printJoin(props, node, {
+ addNewlines(leading) {
+ if (leading && !props[0]) return 1;
+ },
+
+ indent: true,
+ statement: true,
+ iterator: () => {
+ if (props.length !== 1 || node.inexact) {
+ this.token(",");
+ this.space();
+ }
+ }
+ });
+ this.space();
+ }
+
+ if (node.inexact) {
+ this.indent();
+ this.token("...");
+
+ if (props.length) {
+ this.newline();
+ }
+
+ this.dedent();
+ }
+
+ if (node.exact) {
+ this.token("|}");
+ } else {
+ this.token("}");
+ }
+}
+
+function ObjectTypeInternalSlot(node) {
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this.token("[");
+ this.token("[");
+ this.print(node.id, node);
+ this.token("]");
+ this.token("]");
+ if (node.optional) this.token("?");
+
+ if (!node.method) {
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.value, node);
+}
+
+function ObjectTypeCallProperty(node) {
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this.print(node.value, node);
+}
+
+function ObjectTypeIndexer(node) {
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ this._variance(node);
+
+ this.token("[");
+
+ if (node.id) {
+ this.print(node.id, node);
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.key, node);
+ this.token("]");
+ this.token(":");
+ this.space();
+ this.print(node.value, node);
+}
+
+function ObjectTypeProperty(node) {
+ if (node.proto) {
+ this.word("proto");
+ this.space();
+ }
+
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ if (node.kind === "get" || node.kind === "set") {
+ this.word(node.kind);
+ this.space();
+ }
+
+ this._variance(node);
+
+ this.print(node.key, node);
+ if (node.optional) this.token("?");
+
+ if (!node.method) {
+ this.token(":");
+ this.space();
+ }
+
+ this.print(node.value, node);
+}
+
+function ObjectTypeSpreadProperty(node) {
+ this.token("...");
+ this.print(node.argument, node);
+}
+
+function QualifiedTypeIdentifier(node) {
+ this.print(node.qualification, node);
+ this.token(".");
+ this.print(node.id, node);
+}
+
+function SymbolTypeAnnotation() {
+ this.word("symbol");
+}
+
+function orSeparator() {
+ this.space();
+ this.token("|");
+ this.space();
+}
+
+function UnionTypeAnnotation(node) {
+ this.printJoin(node.types, node, {
+ separator: orSeparator
+ });
+}
+
+function TypeCastExpression(node) {
+ this.token("(");
+ this.print(node.expression, node);
+ this.print(node.typeAnnotation, node);
+ this.token(")");
+}
+
+function Variance(node) {
+ if (node.kind === "plus") {
+ this.token("+");
+ } else {
+ this.token("-");
+ }
+}
+
+function VoidTypeAnnotation() {
+ this.word("void");
+}
+
+function IndexedAccessType(node) {
+ this.print(node.objectType, node);
+ this.token("[");
+ this.print(node.indexType, node);
+ this.token("]");
+}
+
+function OptionalIndexedAccessType(node) {
+ this.print(node.objectType, node);
+
+ if (node.optional) {
+ this.token("?.");
+ }
+
+ this.token("[");
+ this.print(node.indexType, node);
+ this.token("]");
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/index.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/index.js
new file mode 100644
index 0000000000..8820db09ef
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/index.js
@@ -0,0 +1,148 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+
+var _templateLiterals = require("./template-literals");
+
+Object.keys(_templateLiterals).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _templateLiterals[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _templateLiterals[key];
+ }
+ });
+});
+
+var _expressions = require("./expressions");
+
+Object.keys(_expressions).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _expressions[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _expressions[key];
+ }
+ });
+});
+
+var _statements = require("./statements");
+
+Object.keys(_statements).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _statements[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _statements[key];
+ }
+ });
+});
+
+var _classes = require("./classes");
+
+Object.keys(_classes).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _classes[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _classes[key];
+ }
+ });
+});
+
+var _methods = require("./methods");
+
+Object.keys(_methods).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _methods[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _methods[key];
+ }
+ });
+});
+
+var _modules = require("./modules");
+
+Object.keys(_modules).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _modules[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _modules[key];
+ }
+ });
+});
+
+var _types = require("./types");
+
+Object.keys(_types).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _types[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _types[key];
+ }
+ });
+});
+
+var _flow = require("./flow");
+
+Object.keys(_flow).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _flow[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _flow[key];
+ }
+ });
+});
+
+var _base = require("./base");
+
+Object.keys(_base).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _base[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _base[key];
+ }
+ });
+});
+
+var _jsx = require("./jsx");
+
+Object.keys(_jsx).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _jsx[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _jsx[key];
+ }
+ });
+});
+
+var _typescript = require("./typescript");
+
+Object.keys(_typescript).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (key in exports && exports[key] === _typescript[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _typescript[key];
+ }
+ });
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js
new file mode 100644
index 0000000000..3c11f59c87
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/jsx.js
@@ -0,0 +1,145 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.JSXAttribute = JSXAttribute;
+exports.JSXClosingElement = JSXClosingElement;
+exports.JSXClosingFragment = JSXClosingFragment;
+exports.JSXElement = JSXElement;
+exports.JSXEmptyExpression = JSXEmptyExpression;
+exports.JSXExpressionContainer = JSXExpressionContainer;
+exports.JSXFragment = JSXFragment;
+exports.JSXIdentifier = JSXIdentifier;
+exports.JSXMemberExpression = JSXMemberExpression;
+exports.JSXNamespacedName = JSXNamespacedName;
+exports.JSXOpeningElement = JSXOpeningElement;
+exports.JSXOpeningFragment = JSXOpeningFragment;
+exports.JSXSpreadAttribute = JSXSpreadAttribute;
+exports.JSXSpreadChild = JSXSpreadChild;
+exports.JSXText = JSXText;
+
+function JSXAttribute(node) {
+ this.print(node.name, node);
+
+ if (node.value) {
+ this.token("=");
+ this.print(node.value, node);
+ }
+}
+
+function JSXIdentifier(node) {
+ this.word(node.name);
+}
+
+function JSXNamespacedName(node) {
+ this.print(node.namespace, node);
+ this.token(":");
+ this.print(node.name, node);
+}
+
+function JSXMemberExpression(node) {
+ this.print(node.object, node);
+ this.token(".");
+ this.print(node.property, node);
+}
+
+function JSXSpreadAttribute(node) {
+ this.token("{");
+ this.token("...");
+ this.print(node.argument, node);
+ this.token("}");
+}
+
+function JSXExpressionContainer(node) {
+ this.token("{");
+ this.print(node.expression, node);
+ this.token("}");
+}
+
+function JSXSpreadChild(node) {
+ this.token("{");
+ this.token("...");
+ this.print(node.expression, node);
+ this.token("}");
+}
+
+function JSXText(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (raw != null) {
+ this.token(raw);
+ } else {
+ this.token(node.value);
+ }
+}
+
+function JSXElement(node) {
+ const open = node.openingElement;
+ this.print(open, node);
+ if (open.selfClosing) return;
+ this.indent();
+
+ for (const child of node.children) {
+ this.print(child, node);
+ }
+
+ this.dedent();
+ this.print(node.closingElement, node);
+}
+
+function spaceSeparator() {
+ this.space();
+}
+
+function JSXOpeningElement(node) {
+ this.token("<");
+ this.print(node.name, node);
+ this.print(node.typeParameters, node);
+
+ if (node.attributes.length > 0) {
+ this.space();
+ this.printJoin(node.attributes, node, {
+ separator: spaceSeparator
+ });
+ }
+
+ if (node.selfClosing) {
+ this.space();
+ this.token("/>");
+ } else {
+ this.token(">");
+ }
+}
+
+function JSXClosingElement(node) {
+ this.token("</");
+ this.print(node.name, node);
+ this.token(">");
+}
+
+function JSXEmptyExpression(node) {
+ this.printInnerComments(node);
+}
+
+function JSXFragment(node) {
+ this.print(node.openingFragment, node);
+ this.indent();
+
+ for (const child of node.children) {
+ this.print(child, node);
+ }
+
+ this.dedent();
+ this.print(node.closingFragment, node);
+}
+
+function JSXOpeningFragment() {
+ this.token("<");
+ this.token(">");
+}
+
+function JSXClosingFragment() {
+ this.token("</");
+ this.token(">");
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js
new file mode 100644
index 0000000000..d31e7fad65
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/methods.js
@@ -0,0 +1,150 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArrowFunctionExpression = ArrowFunctionExpression;
+exports.FunctionDeclaration = exports.FunctionExpression = FunctionExpression;
+exports._functionHead = _functionHead;
+exports._methodHead = _methodHead;
+exports._param = _param;
+exports._parameters = _parameters;
+exports._params = _params;
+exports._predicate = _predicate;
+
+var _t = require("@babel/types");
+
+const {
+ isIdentifier
+} = _t;
+
+function _params(node) {
+ this.print(node.typeParameters, node);
+ this.token("(");
+
+ this._parameters(node.params, node);
+
+ this.token(")");
+ this.print(node.returnType, node);
+}
+
+function _parameters(parameters, parent) {
+ for (let i = 0; i < parameters.length; i++) {
+ this._param(parameters[i], parent);
+
+ if (i < parameters.length - 1) {
+ this.token(",");
+ this.space();
+ }
+ }
+}
+
+function _param(parameter, parent) {
+ this.printJoin(parameter.decorators, parameter);
+ this.print(parameter, parent);
+ if (parameter.optional) this.token("?");
+ this.print(parameter.typeAnnotation, parameter);
+}
+
+function _methodHead(node) {
+ const kind = node.kind;
+ const key = node.key;
+
+ if (kind === "get" || kind === "set") {
+ this.word(kind);
+ this.space();
+ }
+
+ if (node.async) {
+ this._catchUp("start", key.loc);
+
+ this.word("async");
+ this.space();
+ }
+
+ if (kind === "method" || kind === "init") {
+ if (node.generator) {
+ this.token("*");
+ }
+ }
+
+ if (node.computed) {
+ this.token("[");
+ this.print(key, node);
+ this.token("]");
+ } else {
+ this.print(key, node);
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+
+ this._params(node);
+}
+
+function _predicate(node) {
+ if (node.predicate) {
+ if (!node.returnType) {
+ this.token(":");
+ }
+
+ this.space();
+ this.print(node.predicate, node);
+ }
+}
+
+function _functionHead(node) {
+ if (node.async) {
+ this.word("async");
+ this.space();
+ }
+
+ this.word("function");
+ if (node.generator) this.token("*");
+ this.printInnerComments(node);
+ this.space();
+
+ if (node.id) {
+ this.print(node.id, node);
+ }
+
+ this._params(node);
+
+ this._predicate(node);
+}
+
+function FunctionExpression(node) {
+ this._functionHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ArrowFunctionExpression(node) {
+ if (node.async) {
+ this.word("async");
+ this.space();
+ }
+
+ const firstParam = node.params[0];
+
+ if (!this.format.retainLines && !this.format.auxiliaryCommentBefore && !this.format.auxiliaryCommentAfter && node.params.length === 1 && isIdentifier(firstParam) && !hasTypesOrComments(node, firstParam)) {
+ this.print(firstParam, node);
+ } else {
+ this._params(node);
+ }
+
+ this._predicate(node);
+
+ this.space();
+ this.token("=>");
+ this.space();
+ this.print(node.body, node);
+}
+
+function hasTypesOrComments(node, param) {
+ var _param$leadingComment, _param$trailingCommen;
+
+ return !!(node.typeParameters || node.returnType || node.predicate || param.typeAnnotation || param.optional || (_param$leadingComment = param.leadingComments) != null && _param$leadingComment.length || (_param$trailingCommen = param.trailingComments) != null && _param$trailingCommen.length);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js
new file mode 100644
index 0000000000..7a3cc26757
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/modules.js
@@ -0,0 +1,239 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ExportAllDeclaration = ExportAllDeclaration;
+exports.ExportDefaultDeclaration = ExportDefaultDeclaration;
+exports.ExportDefaultSpecifier = ExportDefaultSpecifier;
+exports.ExportNamedDeclaration = ExportNamedDeclaration;
+exports.ExportNamespaceSpecifier = ExportNamespaceSpecifier;
+exports.ExportSpecifier = ExportSpecifier;
+exports.ImportAttribute = ImportAttribute;
+exports.ImportDeclaration = ImportDeclaration;
+exports.ImportDefaultSpecifier = ImportDefaultSpecifier;
+exports.ImportNamespaceSpecifier = ImportNamespaceSpecifier;
+exports.ImportSpecifier = ImportSpecifier;
+
+var _t = require("@babel/types");
+
+const {
+ isClassDeclaration,
+ isExportDefaultSpecifier,
+ isExportNamespaceSpecifier,
+ isImportDefaultSpecifier,
+ isImportNamespaceSpecifier,
+ isStatement
+} = _t;
+
+function ImportSpecifier(node) {
+ if (node.importKind === "type" || node.importKind === "typeof") {
+ this.word(node.importKind);
+ this.space();
+ }
+
+ this.print(node.imported, node);
+
+ if (node.local && node.local.name !== node.imported.name) {
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.local, node);
+ }
+}
+
+function ImportDefaultSpecifier(node) {
+ this.print(node.local, node);
+}
+
+function ExportDefaultSpecifier(node) {
+ this.print(node.exported, node);
+}
+
+function ExportSpecifier(node) {
+ if (node.exportKind === "type") {
+ this.word("type");
+ this.space();
+ }
+
+ this.print(node.local, node);
+
+ if (node.exported && node.local.name !== node.exported.name) {
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.exported, node);
+ }
+}
+
+function ExportNamespaceSpecifier(node) {
+ this.token("*");
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.exported, node);
+}
+
+function ExportAllDeclaration(node) {
+ this.word("export");
+ this.space();
+
+ if (node.exportKind === "type") {
+ this.word("type");
+ this.space();
+ }
+
+ this.token("*");
+ this.space();
+ this.word("from");
+ this.space();
+ this.print(node.source, node);
+ this.printAssertions(node);
+ this.semicolon();
+}
+
+function ExportNamedDeclaration(node) {
+ if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) {
+ this.printJoin(node.declaration.decorators, node);
+ }
+
+ this.word("export");
+ this.space();
+ ExportDeclaration.apply(this, arguments);
+}
+
+function ExportDefaultDeclaration(node) {
+ if (this.format.decoratorsBeforeExport && isClassDeclaration(node.declaration)) {
+ this.printJoin(node.declaration.decorators, node);
+ }
+
+ this.word("export");
+ this.space();
+ this.word("default");
+ this.space();
+ ExportDeclaration.apply(this, arguments);
+}
+
+function ExportDeclaration(node) {
+ if (node.declaration) {
+ const declar = node.declaration;
+ this.print(declar, node);
+ if (!isStatement(declar)) this.semicolon();
+ } else {
+ if (node.exportKind === "type") {
+ this.word("type");
+ this.space();
+ }
+
+ const specifiers = node.specifiers.slice(0);
+ let hasSpecial = false;
+
+ for (;;) {
+ const first = specifiers[0];
+
+ if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) {
+ hasSpecial = true;
+ this.print(specifiers.shift(), node);
+
+ if (specifiers.length) {
+ this.token(",");
+ this.space();
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (specifiers.length || !specifiers.length && !hasSpecial) {
+ this.token("{");
+
+ if (specifiers.length) {
+ this.space();
+ this.printList(specifiers, node);
+ this.space();
+ }
+
+ this.token("}");
+ }
+
+ if (node.source) {
+ this.space();
+ this.word("from");
+ this.space();
+ this.print(node.source, node);
+ this.printAssertions(node);
+ }
+
+ this.semicolon();
+ }
+}
+
+function ImportDeclaration(node) {
+ this.word("import");
+ this.space();
+
+ if (node.importKind === "type" || node.importKind === "typeof") {
+ this.word(node.importKind);
+ this.space();
+ }
+
+ const specifiers = node.specifiers.slice(0);
+
+ if (specifiers != null && specifiers.length) {
+ for (;;) {
+ const first = specifiers[0];
+
+ if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {
+ this.print(specifiers.shift(), node);
+
+ if (specifiers.length) {
+ this.token(",");
+ this.space();
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (specifiers.length) {
+ this.token("{");
+ this.space();
+ this.printList(specifiers, node);
+ this.space();
+ this.token("}");
+ }
+
+ this.space();
+ this.word("from");
+ this.space();
+ }
+
+ this.print(node.source, node);
+ this.printAssertions(node);
+ {
+ var _node$attributes;
+
+ if ((_node$attributes = node.attributes) != null && _node$attributes.length) {
+ this.space();
+ this.word("with");
+ this.space();
+ this.printList(node.attributes, node);
+ }
+ }
+ this.semicolon();
+}
+
+function ImportAttribute(node) {
+ this.print(node.key);
+ this.token(":");
+ this.space();
+ this.print(node.value);
+}
+
+function ImportNamespaceSpecifier(node) {
+ this.token("*");
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(node.local, node);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js
new file mode 100644
index 0000000000..8b7b8fd733
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/statements.js
@@ -0,0 +1,331 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.BreakStatement = void 0;
+exports.CatchClause = CatchClause;
+exports.ContinueStatement = void 0;
+exports.DebuggerStatement = DebuggerStatement;
+exports.DoWhileStatement = DoWhileStatement;
+exports.ForOfStatement = exports.ForInStatement = void 0;
+exports.ForStatement = ForStatement;
+exports.IfStatement = IfStatement;
+exports.LabeledStatement = LabeledStatement;
+exports.ReturnStatement = void 0;
+exports.SwitchCase = SwitchCase;
+exports.SwitchStatement = SwitchStatement;
+exports.ThrowStatement = void 0;
+exports.TryStatement = TryStatement;
+exports.VariableDeclaration = VariableDeclaration;
+exports.VariableDeclarator = VariableDeclarator;
+exports.WhileStatement = WhileStatement;
+exports.WithStatement = WithStatement;
+
+var _t = require("@babel/types");
+
+const {
+ isFor,
+ isForStatement,
+ isIfStatement,
+ isStatement
+} = _t;
+
+function WithStatement(node) {
+ this.word("with");
+ this.space();
+ this.token("(");
+ this.print(node.object, node);
+ this.token(")");
+ this.printBlock(node);
+}
+
+function IfStatement(node) {
+ this.word("if");
+ this.space();
+ this.token("(");
+ this.print(node.test, node);
+ this.token(")");
+ this.space();
+ const needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent));
+
+ if (needsBlock) {
+ this.token("{");
+ this.newline();
+ this.indent();
+ }
+
+ this.printAndIndentOnComments(node.consequent, node);
+
+ if (needsBlock) {
+ this.dedent();
+ this.newline();
+ this.token("}");
+ }
+
+ if (node.alternate) {
+ if (this.endsWith(125)) this.space();
+ this.word("else");
+ this.space();
+ this.printAndIndentOnComments(node.alternate, node);
+ }
+}
+
+function getLastStatement(statement) {
+ if (!isStatement(statement.body)) return statement;
+ return getLastStatement(statement.body);
+}
+
+function ForStatement(node) {
+ this.word("for");
+ this.space();
+ this.token("(");
+ this.inForStatementInitCounter++;
+ this.print(node.init, node);
+ this.inForStatementInitCounter--;
+ this.token(";");
+
+ if (node.test) {
+ this.space();
+ this.print(node.test, node);
+ }
+
+ this.token(";");
+
+ if (node.update) {
+ this.space();
+ this.print(node.update, node);
+ }
+
+ this.token(")");
+ this.printBlock(node);
+}
+
+function WhileStatement(node) {
+ this.word("while");
+ this.space();
+ this.token("(");
+ this.print(node.test, node);
+ this.token(")");
+ this.printBlock(node);
+}
+
+const buildForXStatement = function (op) {
+ return function (node) {
+ this.word("for");
+ this.space();
+
+ if (op === "of" && node.await) {
+ this.word("await");
+ this.space();
+ }
+
+ this.token("(");
+ this.print(node.left, node);
+ this.space();
+ this.word(op);
+ this.space();
+ this.print(node.right, node);
+ this.token(")");
+ this.printBlock(node);
+ };
+};
+
+const ForInStatement = buildForXStatement("in");
+exports.ForInStatement = ForInStatement;
+const ForOfStatement = buildForXStatement("of");
+exports.ForOfStatement = ForOfStatement;
+
+function DoWhileStatement(node) {
+ this.word("do");
+ this.space();
+ this.print(node.body, node);
+ this.space();
+ this.word("while");
+ this.space();
+ this.token("(");
+ this.print(node.test, node);
+ this.token(")");
+ this.semicolon();
+}
+
+function buildLabelStatement(prefix, key = "label") {
+ return function (node) {
+ this.word(prefix);
+ const label = node[key];
+
+ if (label) {
+ this.space();
+ const isLabel = key == "label";
+ const terminatorState = this.startTerminatorless(isLabel);
+ this.print(label, node);
+ this.endTerminatorless(terminatorState);
+ }
+
+ this.semicolon();
+ };
+}
+
+const ContinueStatement = buildLabelStatement("continue");
+exports.ContinueStatement = ContinueStatement;
+const ReturnStatement = buildLabelStatement("return", "argument");
+exports.ReturnStatement = ReturnStatement;
+const BreakStatement = buildLabelStatement("break");
+exports.BreakStatement = BreakStatement;
+const ThrowStatement = buildLabelStatement("throw", "argument");
+exports.ThrowStatement = ThrowStatement;
+
+function LabeledStatement(node) {
+ this.print(node.label, node);
+ this.token(":");
+ this.space();
+ this.print(node.body, node);
+}
+
+function TryStatement(node) {
+ this.word("try");
+ this.space();
+ this.print(node.block, node);
+ this.space();
+
+ if (node.handlers) {
+ this.print(node.handlers[0], node);
+ } else {
+ this.print(node.handler, node);
+ }
+
+ if (node.finalizer) {
+ this.space();
+ this.word("finally");
+ this.space();
+ this.print(node.finalizer, node);
+ }
+}
+
+function CatchClause(node) {
+ this.word("catch");
+ this.space();
+
+ if (node.param) {
+ this.token("(");
+ this.print(node.param, node);
+ this.print(node.param.typeAnnotation, node);
+ this.token(")");
+ this.space();
+ }
+
+ this.print(node.body, node);
+}
+
+function SwitchStatement(node) {
+ this.word("switch");
+ this.space();
+ this.token("(");
+ this.print(node.discriminant, node);
+ this.token(")");
+ this.space();
+ this.token("{");
+ this.printSequence(node.cases, node, {
+ indent: true,
+
+ addNewlines(leading, cas) {
+ if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
+ }
+
+ });
+ this.token("}");
+}
+
+function SwitchCase(node) {
+ if (node.test) {
+ this.word("case");
+ this.space();
+ this.print(node.test, node);
+ this.token(":");
+ } else {
+ this.word("default");
+ this.token(":");
+ }
+
+ if (node.consequent.length) {
+ this.newline();
+ this.printSequence(node.consequent, node, {
+ indent: true
+ });
+ }
+}
+
+function DebuggerStatement() {
+ this.word("debugger");
+ this.semicolon();
+}
+
+function variableDeclarationIndent() {
+ this.token(",");
+ this.newline();
+
+ if (this.endsWith(10)) {
+ for (let i = 0; i < 4; i++) this.space(true);
+ }
+}
+
+function constDeclarationIndent() {
+ this.token(",");
+ this.newline();
+
+ if (this.endsWith(10)) {
+ for (let i = 0; i < 6; i++) this.space(true);
+ }
+}
+
+function VariableDeclaration(node, parent) {
+ if (node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word(node.kind);
+ this.space();
+ let hasInits = false;
+
+ if (!isFor(parent)) {
+ for (const declar of node.declarations) {
+ if (declar.init) {
+ hasInits = true;
+ }
+ }
+ }
+
+ let separator;
+
+ if (hasInits) {
+ separator = node.kind === "const" ? constDeclarationIndent : variableDeclarationIndent;
+ }
+
+ this.printList(node.declarations, node, {
+ separator
+ });
+
+ if (isFor(parent)) {
+ if (isForStatement(parent)) {
+ if (parent.init === node) return;
+ } else {
+ if (parent.left === node) return;
+ }
+ }
+
+ this.semicolon();
+}
+
+function VariableDeclarator(node) {
+ this.print(node.id, node);
+ if (node.definite) this.token("!");
+ this.print(node.id.typeAnnotation, node);
+
+ if (node.init) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.init, node);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/template-literals.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/template-literals.js
new file mode 100644
index 0000000000..054330362d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/template-literals.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.TaggedTemplateExpression = TaggedTemplateExpression;
+exports.TemplateElement = TemplateElement;
+exports.TemplateLiteral = TemplateLiteral;
+
+function TaggedTemplateExpression(node) {
+ this.print(node.tag, node);
+ this.print(node.typeParameters, node);
+ this.print(node.quasi, node);
+}
+
+function TemplateElement(node, parent) {
+ const isFirst = parent.quasis[0] === node;
+ const isLast = parent.quasis[parent.quasis.length - 1] === node;
+ const value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${");
+ this.token(value);
+}
+
+function TemplateLiteral(node) {
+ const quasis = node.quasis;
+
+ for (let i = 0; i < quasis.length; i++) {
+ this.print(quasis[i], node);
+
+ if (i + 1 < quasis.length) {
+ this.print(node.expressions[i], node);
+ }
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js
new file mode 100644
index 0000000000..94c8d9ffe4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js
@@ -0,0 +1,276 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArgumentPlaceholder = ArgumentPlaceholder;
+exports.ArrayPattern = exports.ArrayExpression = ArrayExpression;
+exports.BigIntLiteral = BigIntLiteral;
+exports.BooleanLiteral = BooleanLiteral;
+exports.DecimalLiteral = DecimalLiteral;
+exports.Identifier = Identifier;
+exports.NullLiteral = NullLiteral;
+exports.NumericLiteral = NumericLiteral;
+exports.ObjectPattern = exports.ObjectExpression = ObjectExpression;
+exports.ObjectMethod = ObjectMethod;
+exports.ObjectProperty = ObjectProperty;
+exports.PipelineBareFunction = PipelineBareFunction;
+exports.PipelinePrimaryTopicReference = PipelinePrimaryTopicReference;
+exports.PipelineTopicExpression = PipelineTopicExpression;
+exports.RecordExpression = RecordExpression;
+exports.RegExpLiteral = RegExpLiteral;
+exports.SpreadElement = exports.RestElement = RestElement;
+exports.StringLiteral = StringLiteral;
+exports.TopicReference = TopicReference;
+exports.TupleExpression = TupleExpression;
+
+var _t = require("@babel/types");
+
+var _jsesc = require("jsesc");
+
+const {
+ isAssignmentPattern,
+ isIdentifier
+} = _t;
+
+function Identifier(node) {
+ this.exactSource(node.loc, () => {
+ this.word(node.name);
+ });
+}
+
+function ArgumentPlaceholder() {
+ this.token("?");
+}
+
+function RestElement(node) {
+ this.token("...");
+ this.print(node.argument, node);
+}
+
+function ObjectExpression(node) {
+ const props = node.properties;
+ this.token("{");
+ this.printInnerComments(node);
+
+ if (props.length) {
+ this.space();
+ this.printList(props, node, {
+ indent: true,
+ statement: true
+ });
+ this.space();
+ }
+
+ this.token("}");
+}
+
+function ObjectMethod(node) {
+ this.printJoin(node.decorators, node);
+
+ this._methodHead(node);
+
+ this.space();
+ this.print(node.body, node);
+}
+
+function ObjectProperty(node) {
+ this.printJoin(node.decorators, node);
+
+ if (node.computed) {
+ this.token("[");
+ this.print(node.key, node);
+ this.token("]");
+ } else {
+ if (isAssignmentPattern(node.value) && isIdentifier(node.key) && node.key.name === node.value.left.name) {
+ this.print(node.value, node);
+ return;
+ }
+
+ this.print(node.key, node);
+
+ if (node.shorthand && isIdentifier(node.key) && isIdentifier(node.value) && node.key.name === node.value.name) {
+ return;
+ }
+ }
+
+ this.token(":");
+ this.space();
+ this.print(node.value, node);
+}
+
+function ArrayExpression(node) {
+ const elems = node.elements;
+ const len = elems.length;
+ this.token("[");
+ this.printInnerComments(node);
+
+ for (let i = 0; i < elems.length; i++) {
+ const elem = elems[i];
+
+ if (elem) {
+ if (i > 0) this.space();
+ this.print(elem, node);
+ if (i < len - 1) this.token(",");
+ } else {
+ this.token(",");
+ }
+ }
+
+ this.token("]");
+}
+
+function RecordExpression(node) {
+ const props = node.properties;
+ let startToken;
+ let endToken;
+
+ if (this.format.recordAndTupleSyntaxType === "bar") {
+ startToken = "{|";
+ endToken = "|}";
+ } else if (this.format.recordAndTupleSyntaxType === "hash") {
+ startToken = "#{";
+ endToken = "}";
+ } else {
+ throw new Error(`The "recordAndTupleSyntaxType" generator option must be "bar" or "hash" (${JSON.stringify(this.format.recordAndTupleSyntaxType)} received).`);
+ }
+
+ this.token(startToken);
+ this.printInnerComments(node);
+
+ if (props.length) {
+ this.space();
+ this.printList(props, node, {
+ indent: true,
+ statement: true
+ });
+ this.space();
+ }
+
+ this.token(endToken);
+}
+
+function TupleExpression(node) {
+ const elems = node.elements;
+ const len = elems.length;
+ let startToken;
+ let endToken;
+
+ if (this.format.recordAndTupleSyntaxType === "bar") {
+ startToken = "[|";
+ endToken = "|]";
+ } else if (this.format.recordAndTupleSyntaxType === "hash") {
+ startToken = "#[";
+ endToken = "]";
+ } else {
+ throw new Error(`${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`);
+ }
+
+ this.token(startToken);
+ this.printInnerComments(node);
+
+ for (let i = 0; i < elems.length; i++) {
+ const elem = elems[i];
+
+ if (elem) {
+ if (i > 0) this.space();
+ this.print(elem, node);
+ if (i < len - 1) this.token(",");
+ }
+ }
+
+ this.token(endToken);
+}
+
+function RegExpLiteral(node) {
+ this.word(`/${node.pattern}/${node.flags}`);
+}
+
+function BooleanLiteral(node) {
+ this.word(node.value ? "true" : "false");
+}
+
+function NullLiteral() {
+ this.word("null");
+}
+
+function NumericLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+ const opts = this.format.jsescOption;
+ const value = node.value + "";
+
+ if (opts.numbers) {
+ this.number(_jsesc(node.value, opts));
+ } else if (raw == null) {
+ this.number(value);
+ } else if (this.format.minified) {
+ this.number(raw.length < value.length ? raw : value);
+ } else {
+ this.number(raw);
+ }
+}
+
+function StringLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.token(raw);
+ return;
+ }
+
+ const val = _jsesc(node.value, Object.assign(this.format.jsescOption, this.format.jsonCompatibleStrings && {
+ json: true
+ }));
+
+ return this.token(val);
+}
+
+function BigIntLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.word(raw);
+ return;
+ }
+
+ this.word(node.value + "n");
+}
+
+function DecimalLiteral(node) {
+ const raw = this.getPossibleRaw(node);
+
+ if (!this.format.minified && raw != null) {
+ this.word(raw);
+ return;
+ }
+
+ this.word(node.value + "m");
+}
+
+const validTopicTokenSet = new Set(["^", "%", "#"]);
+
+function TopicReference() {
+ const {
+ topicToken
+ } = this.format;
+
+ if (validTopicTokenSet.has(topicToken)) {
+ this.token(topicToken);
+ } else {
+ const givenTopicTokenJSON = JSON.stringify(topicToken);
+ const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));
+ throw new Error(`The "topicToken" generator option must be one of ` + `${validTopics.join(", ")} (${givenTopicTokenJSON} received instead).`);
+ }
+}
+
+function PipelineTopicExpression(node) {
+ this.print(node.expression, node);
+}
+
+function PipelineBareFunction(node) {
+ this.print(node.callee, node);
+}
+
+function PipelinePrimaryTopicReference() {
+ this.token("#");
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js
new file mode 100644
index 0000000000..93a4385eb4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/typescript.js
@@ -0,0 +1,806 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.TSAnyKeyword = TSAnyKeyword;
+exports.TSArrayType = TSArrayType;
+exports.TSAsExpression = TSAsExpression;
+exports.TSBigIntKeyword = TSBigIntKeyword;
+exports.TSBooleanKeyword = TSBooleanKeyword;
+exports.TSCallSignatureDeclaration = TSCallSignatureDeclaration;
+exports.TSConditionalType = TSConditionalType;
+exports.TSConstructSignatureDeclaration = TSConstructSignatureDeclaration;
+exports.TSConstructorType = TSConstructorType;
+exports.TSDeclareFunction = TSDeclareFunction;
+exports.TSDeclareMethod = TSDeclareMethod;
+exports.TSEnumDeclaration = TSEnumDeclaration;
+exports.TSEnumMember = TSEnumMember;
+exports.TSExportAssignment = TSExportAssignment;
+exports.TSExpressionWithTypeArguments = TSExpressionWithTypeArguments;
+exports.TSExternalModuleReference = TSExternalModuleReference;
+exports.TSFunctionType = TSFunctionType;
+exports.TSImportEqualsDeclaration = TSImportEqualsDeclaration;
+exports.TSImportType = TSImportType;
+exports.TSIndexSignature = TSIndexSignature;
+exports.TSIndexedAccessType = TSIndexedAccessType;
+exports.TSInferType = TSInferType;
+exports.TSInterfaceBody = TSInterfaceBody;
+exports.TSInterfaceDeclaration = TSInterfaceDeclaration;
+exports.TSIntersectionType = TSIntersectionType;
+exports.TSIntrinsicKeyword = TSIntrinsicKeyword;
+exports.TSLiteralType = TSLiteralType;
+exports.TSMappedType = TSMappedType;
+exports.TSMethodSignature = TSMethodSignature;
+exports.TSModuleBlock = TSModuleBlock;
+exports.TSModuleDeclaration = TSModuleDeclaration;
+exports.TSNamedTupleMember = TSNamedTupleMember;
+exports.TSNamespaceExportDeclaration = TSNamespaceExportDeclaration;
+exports.TSNeverKeyword = TSNeverKeyword;
+exports.TSNonNullExpression = TSNonNullExpression;
+exports.TSNullKeyword = TSNullKeyword;
+exports.TSNumberKeyword = TSNumberKeyword;
+exports.TSObjectKeyword = TSObjectKeyword;
+exports.TSOptionalType = TSOptionalType;
+exports.TSParameterProperty = TSParameterProperty;
+exports.TSParenthesizedType = TSParenthesizedType;
+exports.TSPropertySignature = TSPropertySignature;
+exports.TSQualifiedName = TSQualifiedName;
+exports.TSRestType = TSRestType;
+exports.TSStringKeyword = TSStringKeyword;
+exports.TSSymbolKeyword = TSSymbolKeyword;
+exports.TSThisType = TSThisType;
+exports.TSTupleType = TSTupleType;
+exports.TSTypeAliasDeclaration = TSTypeAliasDeclaration;
+exports.TSTypeAnnotation = TSTypeAnnotation;
+exports.TSTypeAssertion = TSTypeAssertion;
+exports.TSTypeLiteral = TSTypeLiteral;
+exports.TSTypeOperator = TSTypeOperator;
+exports.TSTypeParameter = TSTypeParameter;
+exports.TSTypeParameterDeclaration = exports.TSTypeParameterInstantiation = TSTypeParameterInstantiation;
+exports.TSTypePredicate = TSTypePredicate;
+exports.TSTypeQuery = TSTypeQuery;
+exports.TSTypeReference = TSTypeReference;
+exports.TSUndefinedKeyword = TSUndefinedKeyword;
+exports.TSUnionType = TSUnionType;
+exports.TSUnknownKeyword = TSUnknownKeyword;
+exports.TSVoidKeyword = TSVoidKeyword;
+exports.tsPrintBraced = tsPrintBraced;
+exports.tsPrintClassMemberModifiers = tsPrintClassMemberModifiers;
+exports.tsPrintFunctionOrConstructorType = tsPrintFunctionOrConstructorType;
+exports.tsPrintPropertyOrMethodName = tsPrintPropertyOrMethodName;
+exports.tsPrintSignatureDeclarationBase = tsPrintSignatureDeclarationBase;
+exports.tsPrintTypeLiteralOrInterfaceBody = tsPrintTypeLiteralOrInterfaceBody;
+exports.tsPrintUnionOrIntersectionType = tsPrintUnionOrIntersectionType;
+
+function TSTypeAnnotation(node) {
+ this.token(":");
+ this.space();
+ if (node.optional) this.token("?");
+ this.print(node.typeAnnotation, node);
+}
+
+function TSTypeParameterInstantiation(node) {
+ this.token("<");
+ this.printList(node.params, node, {});
+ this.token(">");
+}
+
+function TSTypeParameter(node) {
+ this.word(node.name);
+
+ if (node.constraint) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.print(node.constraint, node);
+ }
+
+ if (node.default) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.default, node);
+ }
+}
+
+function TSParameterProperty(node) {
+ if (node.accessibility) {
+ this.word(node.accessibility);
+ this.space();
+ }
+
+ if (node.readonly) {
+ this.word("readonly");
+ this.space();
+ }
+
+ this._param(node.parameter);
+}
+
+function TSDeclareFunction(node) {
+ if (node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this._functionHead(node);
+
+ this.token(";");
+}
+
+function TSDeclareMethod(node) {
+ this._classMethodHead(node);
+
+ this.token(";");
+}
+
+function TSQualifiedName(node) {
+ this.print(node.left, node);
+ this.token(".");
+ this.print(node.right, node);
+}
+
+function TSCallSignatureDeclaration(node) {
+ this.tsPrintSignatureDeclarationBase(node);
+ this.token(";");
+}
+
+function TSConstructSignatureDeclaration(node) {
+ this.word("new");
+ this.space();
+ this.tsPrintSignatureDeclarationBase(node);
+ this.token(";");
+}
+
+function TSPropertySignature(node) {
+ const {
+ readonly,
+ initializer
+ } = node;
+
+ if (readonly) {
+ this.word("readonly");
+ this.space();
+ }
+
+ this.tsPrintPropertyOrMethodName(node);
+ this.print(node.typeAnnotation, node);
+
+ if (initializer) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(initializer, node);
+ }
+
+ this.token(";");
+}
+
+function tsPrintPropertyOrMethodName(node) {
+ if (node.computed) {
+ this.token("[");
+ }
+
+ this.print(node.key, node);
+
+ if (node.computed) {
+ this.token("]");
+ }
+
+ if (node.optional) {
+ this.token("?");
+ }
+}
+
+function TSMethodSignature(node) {
+ const {
+ kind
+ } = node;
+
+ if (kind === "set" || kind === "get") {
+ this.word(kind);
+ this.space();
+ }
+
+ this.tsPrintPropertyOrMethodName(node);
+ this.tsPrintSignatureDeclarationBase(node);
+ this.token(";");
+}
+
+function TSIndexSignature(node) {
+ const {
+ readonly,
+ static: isStatic
+ } = node;
+
+ if (isStatic) {
+ this.word("static");
+ this.space();
+ }
+
+ if (readonly) {
+ this.word("readonly");
+ this.space();
+ }
+
+ this.token("[");
+
+ this._parameters(node.parameters, node);
+
+ this.token("]");
+ this.print(node.typeAnnotation, node);
+ this.token(";");
+}
+
+function TSAnyKeyword() {
+ this.word("any");
+}
+
+function TSBigIntKeyword() {
+ this.word("bigint");
+}
+
+function TSUnknownKeyword() {
+ this.word("unknown");
+}
+
+function TSNumberKeyword() {
+ this.word("number");
+}
+
+function TSObjectKeyword() {
+ this.word("object");
+}
+
+function TSBooleanKeyword() {
+ this.word("boolean");
+}
+
+function TSStringKeyword() {
+ this.word("string");
+}
+
+function TSSymbolKeyword() {
+ this.word("symbol");
+}
+
+function TSVoidKeyword() {
+ this.word("void");
+}
+
+function TSUndefinedKeyword() {
+ this.word("undefined");
+}
+
+function TSNullKeyword() {
+ this.word("null");
+}
+
+function TSNeverKeyword() {
+ this.word("never");
+}
+
+function TSIntrinsicKeyword() {
+ this.word("intrinsic");
+}
+
+function TSThisType() {
+ this.word("this");
+}
+
+function TSFunctionType(node) {
+ this.tsPrintFunctionOrConstructorType(node);
+}
+
+function TSConstructorType(node) {
+ if (node.abstract) {
+ this.word("abstract");
+ this.space();
+ }
+
+ this.word("new");
+ this.space();
+ this.tsPrintFunctionOrConstructorType(node);
+}
+
+function tsPrintFunctionOrConstructorType(node) {
+ const {
+ typeParameters,
+ parameters
+ } = node;
+ this.print(typeParameters, node);
+ this.token("(");
+
+ this._parameters(parameters, node);
+
+ this.token(")");
+ this.space();
+ this.token("=>");
+ this.space();
+ this.print(node.typeAnnotation.typeAnnotation, node);
+}
+
+function TSTypeReference(node) {
+ this.print(node.typeName, node);
+ this.print(node.typeParameters, node);
+}
+
+function TSTypePredicate(node) {
+ if (node.asserts) {
+ this.word("asserts");
+ this.space();
+ }
+
+ this.print(node.parameterName);
+
+ if (node.typeAnnotation) {
+ this.space();
+ this.word("is");
+ this.space();
+ this.print(node.typeAnnotation.typeAnnotation);
+ }
+}
+
+function TSTypeQuery(node) {
+ this.word("typeof");
+ this.space();
+ this.print(node.exprName);
+}
+
+function TSTypeLiteral(node) {
+ this.tsPrintTypeLiteralOrInterfaceBody(node.members, node);
+}
+
+function tsPrintTypeLiteralOrInterfaceBody(members, node) {
+ this.tsPrintBraced(members, node);
+}
+
+function tsPrintBraced(members, node) {
+ this.token("{");
+
+ if (members.length) {
+ this.indent();
+ this.newline();
+
+ for (const member of members) {
+ this.print(member, node);
+ this.newline();
+ }
+
+ this.dedent();
+ this.rightBrace();
+ } else {
+ this.token("}");
+ }
+}
+
+function TSArrayType(node) {
+ this.print(node.elementType, node);
+ this.token("[]");
+}
+
+function TSTupleType(node) {
+ this.token("[");
+ this.printList(node.elementTypes, node);
+ this.token("]");
+}
+
+function TSOptionalType(node) {
+ this.print(node.typeAnnotation, node);
+ this.token("?");
+}
+
+function TSRestType(node) {
+ this.token("...");
+ this.print(node.typeAnnotation, node);
+}
+
+function TSNamedTupleMember(node) {
+ this.print(node.label, node);
+ if (node.optional) this.token("?");
+ this.token(":");
+ this.space();
+ this.print(node.elementType, node);
+}
+
+function TSUnionType(node) {
+ this.tsPrintUnionOrIntersectionType(node, "|");
+}
+
+function TSIntersectionType(node) {
+ this.tsPrintUnionOrIntersectionType(node, "&");
+}
+
+function tsPrintUnionOrIntersectionType(node, sep) {
+ this.printJoin(node.types, node, {
+ separator() {
+ this.space();
+ this.token(sep);
+ this.space();
+ }
+
+ });
+}
+
+function TSConditionalType(node) {
+ this.print(node.checkType);
+ this.space();
+ this.word("extends");
+ this.space();
+ this.print(node.extendsType);
+ this.space();
+ this.token("?");
+ this.space();
+ this.print(node.trueType);
+ this.space();
+ this.token(":");
+ this.space();
+ this.print(node.falseType);
+}
+
+function TSInferType(node) {
+ this.token("infer");
+ this.space();
+ this.print(node.typeParameter);
+}
+
+function TSParenthesizedType(node) {
+ this.token("(");
+ this.print(node.typeAnnotation, node);
+ this.token(")");
+}
+
+function TSTypeOperator(node) {
+ this.word(node.operator);
+ this.space();
+ this.print(node.typeAnnotation, node);
+}
+
+function TSIndexedAccessType(node) {
+ this.print(node.objectType, node);
+ this.token("[");
+ this.print(node.indexType, node);
+ this.token("]");
+}
+
+function TSMappedType(node) {
+ const {
+ nameType,
+ optional,
+ readonly,
+ typeParameter
+ } = node;
+ this.token("{");
+ this.space();
+
+ if (readonly) {
+ tokenIfPlusMinus(this, readonly);
+ this.word("readonly");
+ this.space();
+ }
+
+ this.token("[");
+ this.word(typeParameter.name);
+ this.space();
+ this.word("in");
+ this.space();
+ this.print(typeParameter.constraint, typeParameter);
+
+ if (nameType) {
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(nameType, node);
+ }
+
+ this.token("]");
+
+ if (optional) {
+ tokenIfPlusMinus(this, optional);
+ this.token("?");
+ }
+
+ this.token(":");
+ this.space();
+ this.print(node.typeAnnotation, node);
+ this.space();
+ this.token("}");
+}
+
+function tokenIfPlusMinus(self, tok) {
+ if (tok !== true) {
+ self.token(tok);
+ }
+}
+
+function TSLiteralType(node) {
+ this.print(node.literal, node);
+}
+
+function TSExpressionWithTypeArguments(node) {
+ this.print(node.expression, node);
+ this.print(node.typeParameters, node);
+}
+
+function TSInterfaceDeclaration(node) {
+ const {
+ declare,
+ id,
+ typeParameters,
+ extends: extendz,
+ body
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("interface");
+ this.space();
+ this.print(id, node);
+ this.print(typeParameters, node);
+
+ if (extendz != null && extendz.length) {
+ this.space();
+ this.word("extends");
+ this.space();
+ this.printList(extendz, node);
+ }
+
+ this.space();
+ this.print(body, node);
+}
+
+function TSInterfaceBody(node) {
+ this.tsPrintTypeLiteralOrInterfaceBody(node.body, node);
+}
+
+function TSTypeAliasDeclaration(node) {
+ const {
+ declare,
+ id,
+ typeParameters,
+ typeAnnotation
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ this.word("type");
+ this.space();
+ this.print(id, node);
+ this.print(typeParameters, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(typeAnnotation, node);
+ this.token(";");
+}
+
+function TSAsExpression(node) {
+ const {
+ expression,
+ typeAnnotation
+ } = node;
+ this.print(expression, node);
+ this.space();
+ this.word("as");
+ this.space();
+ this.print(typeAnnotation, node);
+}
+
+function TSTypeAssertion(node) {
+ const {
+ typeAnnotation,
+ expression
+ } = node;
+ this.token("<");
+ this.print(typeAnnotation, node);
+ this.token(">");
+ this.space();
+ this.print(expression, node);
+}
+
+function TSEnumDeclaration(node) {
+ const {
+ declare,
+ const: isConst,
+ id,
+ members
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (isConst) {
+ this.word("const");
+ this.space();
+ }
+
+ this.word("enum");
+ this.space();
+ this.print(id, node);
+ this.space();
+ this.tsPrintBraced(members, node);
+}
+
+function TSEnumMember(node) {
+ const {
+ id,
+ initializer
+ } = node;
+ this.print(id, node);
+
+ if (initializer) {
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(initializer, node);
+ }
+
+ this.token(",");
+}
+
+function TSModuleDeclaration(node) {
+ const {
+ declare,
+ id
+ } = node;
+
+ if (declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (!node.global) {
+ this.word(id.type === "Identifier" ? "namespace" : "module");
+ this.space();
+ }
+
+ this.print(id, node);
+
+ if (!node.body) {
+ this.token(";");
+ return;
+ }
+
+ let body = node.body;
+
+ while (body.type === "TSModuleDeclaration") {
+ this.token(".");
+ this.print(body.id, body);
+ body = body.body;
+ }
+
+ this.space();
+ this.print(body, node);
+}
+
+function TSModuleBlock(node) {
+ this.tsPrintBraced(node.body, node);
+}
+
+function TSImportType(node) {
+ const {
+ argument,
+ qualifier,
+ typeParameters
+ } = node;
+ this.word("import");
+ this.token("(");
+ this.print(argument, node);
+ this.token(")");
+
+ if (qualifier) {
+ this.token(".");
+ this.print(qualifier, node);
+ }
+
+ if (typeParameters) {
+ this.print(typeParameters, node);
+ }
+}
+
+function TSImportEqualsDeclaration(node) {
+ const {
+ isExport,
+ id,
+ moduleReference
+ } = node;
+
+ if (isExport) {
+ this.word("export");
+ this.space();
+ }
+
+ this.word("import");
+ this.space();
+ this.print(id, node);
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(moduleReference, node);
+ this.token(";");
+}
+
+function TSExternalModuleReference(node) {
+ this.token("require(");
+ this.print(node.expression, node);
+ this.token(")");
+}
+
+function TSNonNullExpression(node) {
+ this.print(node.expression, node);
+ this.token("!");
+}
+
+function TSExportAssignment(node) {
+ this.word("export");
+ this.space();
+ this.token("=");
+ this.space();
+ this.print(node.expression, node);
+ this.token(";");
+}
+
+function TSNamespaceExportDeclaration(node) {
+ this.word("export");
+ this.space();
+ this.word("as");
+ this.space();
+ this.word("namespace");
+ this.space();
+ this.print(node.id, node);
+}
+
+function tsPrintSignatureDeclarationBase(node) {
+ const {
+ typeParameters,
+ parameters
+ } = node;
+ this.print(typeParameters, node);
+ this.token("(");
+
+ this._parameters(parameters, node);
+
+ this.token(")");
+ this.print(node.typeAnnotation, node);
+}
+
+function tsPrintClassMemberModifiers(node, isField) {
+ if (isField && node.declare) {
+ this.word("declare");
+ this.space();
+ }
+
+ if (node.accessibility) {
+ this.word(node.accessibility);
+ this.space();
+ }
+
+ if (node.static) {
+ this.word("static");
+ this.space();
+ }
+
+ if (node.override) {
+ this.word("override");
+ this.space();
+ }
+
+ if (node.abstract) {
+ this.word("abstract");
+ this.space();
+ }
+
+ if (isField && node.readonly) {
+ this.word("readonly");
+ this.space();
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js
new file mode 100644
index 0000000000..ca8a0bd790
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js
@@ -0,0 +1,97 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.CodeGenerator = void 0;
+exports.default = generate;
+
+var _sourceMap = require("./source-map");
+
+var _printer = require("./printer");
+
+class Generator extends _printer.default {
+ constructor(ast, opts = {}, code) {
+ const format = normalizeOptions(code, opts);
+ const map = opts.sourceMaps ? new _sourceMap.default(opts, code) : null;
+ super(format, map);
+ this.ast = void 0;
+ this.ast = ast;
+ }
+
+ generate() {
+ return super.generate(this.ast);
+ }
+
+}
+
+function normalizeOptions(code, opts) {
+ const format = {
+ auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
+ auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
+ shouldPrintComment: opts.shouldPrintComment,
+ retainLines: opts.retainLines,
+ retainFunctionParens: opts.retainFunctionParens,
+ comments: opts.comments == null || opts.comments,
+ compact: opts.compact,
+ minified: opts.minified,
+ concise: opts.concise,
+ indent: {
+ adjustMultilineComment: true,
+ style: " ",
+ base: 0
+ },
+ decoratorsBeforeExport: !!opts.decoratorsBeforeExport,
+ jsescOption: Object.assign({
+ quotes: "double",
+ wrap: true,
+ minimal: false
+ }, opts.jsescOption),
+ recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType,
+ topicToken: opts.topicToken
+ };
+ {
+ format.jsonCompatibleStrings = opts.jsonCompatibleStrings;
+ }
+
+ if (format.minified) {
+ format.compact = true;
+
+ format.shouldPrintComment = format.shouldPrintComment || (() => format.comments);
+ } else {
+ format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.indexOf("@license") >= 0 || value.indexOf("@preserve") >= 0);
+ }
+
+ if (format.compact === "auto") {
+ format.compact = code.length > 500000;
+
+ if (format.compact) {
+ console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`);
+ }
+ }
+
+ if (format.compact) {
+ format.indent.adjustMultilineComment = false;
+ }
+
+ return format;
+}
+
+class CodeGenerator {
+ constructor(ast, opts, code) {
+ this._generator = void 0;
+ this._generator = new Generator(ast, opts, code);
+ }
+
+ generate() {
+ return this._generator.generate();
+ }
+
+}
+
+exports.CodeGenerator = CodeGenerator;
+
+function generate(ast, opts, code) {
+ const gen = new Generator(ast, opts, code);
+ return gen.generate();
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js
new file mode 100644
index 0000000000..b594ae441c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/index.js
@@ -0,0 +1,111 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.needsParens = needsParens;
+exports.needsWhitespace = needsWhitespace;
+exports.needsWhitespaceAfter = needsWhitespaceAfter;
+exports.needsWhitespaceBefore = needsWhitespaceBefore;
+
+var whitespace = require("./whitespace");
+
+var parens = require("./parentheses");
+
+var _t = require("@babel/types");
+
+const {
+ FLIPPED_ALIAS_KEYS,
+ isCallExpression,
+ isExpressionStatement,
+ isMemberExpression,
+ isNewExpression
+} = _t;
+
+function expandAliases(obj) {
+ const newObj = {};
+
+ function add(type, func) {
+ const fn = newObj[type];
+ newObj[type] = fn ? function (node, parent, stack) {
+ const result = fn(node, parent, stack);
+ return result == null ? func(node, parent, stack) : result;
+ } : func;
+ }
+
+ for (const type of Object.keys(obj)) {
+ const aliases = FLIPPED_ALIAS_KEYS[type];
+
+ if (aliases) {
+ for (const alias of aliases) {
+ add(alias, obj[type]);
+ }
+ } else {
+ add(type, obj[type]);
+ }
+ }
+
+ return newObj;
+}
+
+const expandedParens = expandAliases(parens);
+const expandedWhitespaceNodes = expandAliases(whitespace.nodes);
+const expandedWhitespaceList = expandAliases(whitespace.list);
+
+function find(obj, node, parent, printStack) {
+ const fn = obj[node.type];
+ return fn ? fn(node, parent, printStack) : null;
+}
+
+function isOrHasCallExpression(node) {
+ if (isCallExpression(node)) {
+ return true;
+ }
+
+ return isMemberExpression(node) && isOrHasCallExpression(node.object);
+}
+
+function needsWhitespace(node, parent, type) {
+ if (!node) return 0;
+
+ if (isExpressionStatement(node)) {
+ node = node.expression;
+ }
+
+ let linesInfo = find(expandedWhitespaceNodes, node, parent);
+
+ if (!linesInfo) {
+ const items = find(expandedWhitespaceList, node, parent);
+
+ if (items) {
+ for (let i = 0; i < items.length; i++) {
+ linesInfo = needsWhitespace(items[i], node, type);
+ if (linesInfo) break;
+ }
+ }
+ }
+
+ if (typeof linesInfo === "object" && linesInfo !== null) {
+ return linesInfo[type] || 0;
+ }
+
+ return 0;
+}
+
+function needsWhitespaceBefore(node, parent) {
+ return needsWhitespace(node, parent, "before");
+}
+
+function needsWhitespaceAfter(node, parent) {
+ return needsWhitespace(node, parent, "after");
+}
+
+function needsParens(node, parent, printStack) {
+ if (!parent) return false;
+
+ if (isNewExpression(parent) && parent.callee === node) {
+ if (isOrHasCallExpression(node)) return true;
+ }
+
+ return find(expandedParens, node, parent, printStack);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js
new file mode 100644
index 0000000000..5761a58d98
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/parentheses.js
@@ -0,0 +1,342 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArrowFunctionExpression = ArrowFunctionExpression;
+exports.AssignmentExpression = AssignmentExpression;
+exports.Binary = Binary;
+exports.BinaryExpression = BinaryExpression;
+exports.ClassExpression = ClassExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.DoExpression = DoExpression;
+exports.FunctionExpression = FunctionExpression;
+exports.FunctionTypeAnnotation = FunctionTypeAnnotation;
+exports.Identifier = Identifier;
+exports.LogicalExpression = LogicalExpression;
+exports.NullableTypeAnnotation = NullableTypeAnnotation;
+exports.ObjectExpression = ObjectExpression;
+exports.OptionalIndexedAccessType = OptionalIndexedAccessType;
+exports.OptionalCallExpression = exports.OptionalMemberExpression = OptionalMemberExpression;
+exports.SequenceExpression = SequenceExpression;
+exports.TSAsExpression = TSAsExpression;
+exports.TSInferType = TSInferType;
+exports.TSTypeAssertion = TSTypeAssertion;
+exports.TSIntersectionType = exports.TSUnionType = TSUnionType;
+exports.UnaryLike = UnaryLike;
+exports.IntersectionTypeAnnotation = exports.UnionTypeAnnotation = UnionTypeAnnotation;
+exports.UpdateExpression = UpdateExpression;
+exports.AwaitExpression = exports.YieldExpression = YieldExpression;
+
+var _t = require("@babel/types");
+
+const {
+ isArrayTypeAnnotation,
+ isArrowFunctionExpression,
+ isAssignmentExpression,
+ isAwaitExpression,
+ isBinary,
+ isBinaryExpression,
+ isCallExpression,
+ isClassDeclaration,
+ isClassExpression,
+ isConditional,
+ isConditionalExpression,
+ isExportDeclaration,
+ isExportDefaultDeclaration,
+ isExpressionStatement,
+ isFor,
+ isForInStatement,
+ isForOfStatement,
+ isForStatement,
+ isIfStatement,
+ isIndexedAccessType,
+ isIntersectionTypeAnnotation,
+ isLogicalExpression,
+ isMemberExpression,
+ isNewExpression,
+ isNullableTypeAnnotation,
+ isObjectPattern,
+ isOptionalCallExpression,
+ isOptionalMemberExpression,
+ isReturnStatement,
+ isSequenceExpression,
+ isSwitchStatement,
+ isTSArrayType,
+ isTSAsExpression,
+ isTSIntersectionType,
+ isTSNonNullExpression,
+ isTSOptionalType,
+ isTSRestType,
+ isTSTypeAssertion,
+ isTSUnionType,
+ isTaggedTemplateExpression,
+ isThrowStatement,
+ isTypeAnnotation,
+ isUnaryLike,
+ isUnionTypeAnnotation,
+ isVariableDeclarator,
+ isWhileStatement,
+ isYieldExpression
+} = _t;
+const PRECEDENCE = {
+ "||": 0,
+ "??": 0,
+ "&&": 1,
+ "|": 2,
+ "^": 3,
+ "&": 4,
+ "==": 5,
+ "===": 5,
+ "!=": 5,
+ "!==": 5,
+ "<": 6,
+ ">": 6,
+ "<=": 6,
+ ">=": 6,
+ in: 6,
+ instanceof: 6,
+ ">>": 7,
+ "<<": 7,
+ ">>>": 7,
+ "+": 8,
+ "-": 8,
+ "*": 9,
+ "/": 9,
+ "%": 9,
+ "**": 10
+};
+
+const isClassExtendsClause = (node, parent) => (isClassDeclaration(parent) || isClassExpression(parent)) && parent.superClass === node;
+
+const hasPostfixPart = (node, parent) => (isMemberExpression(parent) || isOptionalMemberExpression(parent)) && parent.object === node || (isCallExpression(parent) || isOptionalCallExpression(parent) || isNewExpression(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression(parent);
+
+function NullableTypeAnnotation(node, parent) {
+ return isArrayTypeAnnotation(parent);
+}
+
+function FunctionTypeAnnotation(node, parent, printStack) {
+ return isUnionTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isArrayTypeAnnotation(parent) || isTypeAnnotation(parent) && isArrowFunctionExpression(printStack[printStack.length - 3]);
+}
+
+function UpdateExpression(node, parent) {
+ return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);
+}
+
+function ObjectExpression(node, parent, printStack) {
+ return isFirstInContext(printStack, {
+ expressionStatement: true,
+ arrowBody: true
+ });
+}
+
+function DoExpression(node, parent, printStack) {
+ return !node.async && isFirstInContext(printStack, {
+ expressionStatement: true
+ });
+}
+
+function Binary(node, parent) {
+ if (node.operator === "**" && isBinaryExpression(parent, {
+ operator: "**"
+ })) {
+ return parent.left === node;
+ }
+
+ if (isClassExtendsClause(node, parent)) {
+ return true;
+ }
+
+ if (hasPostfixPart(node, parent) || isUnaryLike(parent) || isAwaitExpression(parent)) {
+ return true;
+ }
+
+ if (isBinary(parent)) {
+ const parentOp = parent.operator;
+ const parentPos = PRECEDENCE[parentOp];
+ const nodeOp = node.operator;
+ const nodePos = PRECEDENCE[nodeOp];
+
+ if (parentPos === nodePos && parent.right === node && !isLogicalExpression(parent) || parentPos > nodePos) {
+ return true;
+ }
+ }
+}
+
+function UnionTypeAnnotation(node, parent) {
+ return isArrayTypeAnnotation(parent) || isNullableTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isUnionTypeAnnotation(parent);
+}
+
+function OptionalIndexedAccessType(node, parent) {
+ return isIndexedAccessType(parent, {
+ objectType: node
+ });
+}
+
+function TSAsExpression() {
+ return true;
+}
+
+function TSTypeAssertion() {
+ return true;
+}
+
+function TSUnionType(node, parent) {
+ return isTSArrayType(parent) || isTSOptionalType(parent) || isTSIntersectionType(parent) || isTSUnionType(parent) || isTSRestType(parent);
+}
+
+function TSInferType(node, parent) {
+ return isTSArrayType(parent) || isTSOptionalType(parent);
+}
+
+function BinaryExpression(node, parent) {
+ return node.operator === "in" && (isVariableDeclarator(parent) || isFor(parent));
+}
+
+function SequenceExpression(node, parent) {
+ if (isForStatement(parent) || isThrowStatement(parent) || isReturnStatement(parent) || isIfStatement(parent) && parent.test === node || isWhileStatement(parent) && parent.test === node || isForInStatement(parent) && parent.right === node || isSwitchStatement(parent) && parent.discriminant === node || isExpressionStatement(parent) && parent.expression === node) {
+ return false;
+ }
+
+ return true;
+}
+
+function YieldExpression(node, parent) {
+ return isBinary(parent) || isUnaryLike(parent) || hasPostfixPart(node, parent) || isAwaitExpression(parent) && isYieldExpression(node) || isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent);
+}
+
+function ClassExpression(node, parent, printStack) {
+ return isFirstInContext(printStack, {
+ expressionStatement: true,
+ exportDefault: true
+ });
+}
+
+function UnaryLike(node, parent) {
+ return hasPostfixPart(node, parent) || isBinaryExpression(parent, {
+ operator: "**",
+ left: node
+ }) || isClassExtendsClause(node, parent);
+}
+
+function FunctionExpression(node, parent, printStack) {
+ return isFirstInContext(printStack, {
+ expressionStatement: true,
+ exportDefault: true
+ });
+}
+
+function ArrowFunctionExpression(node, parent) {
+ return isExportDeclaration(parent) || ConditionalExpression(node, parent);
+}
+
+function ConditionalExpression(node, parent) {
+ if (isUnaryLike(parent) || isBinary(parent) || isConditionalExpression(parent, {
+ test: node
+ }) || isAwaitExpression(parent) || isTSTypeAssertion(parent) || isTSAsExpression(parent)) {
+ return true;
+ }
+
+ return UnaryLike(node, parent);
+}
+
+function OptionalMemberExpression(node, parent) {
+ return isCallExpression(parent, {
+ callee: node
+ }) || isMemberExpression(parent, {
+ object: node
+ });
+}
+
+function AssignmentExpression(node, parent) {
+ if (isObjectPattern(node.left)) {
+ return true;
+ } else {
+ return ConditionalExpression(node, parent);
+ }
+}
+
+function LogicalExpression(node, parent) {
+ switch (node.operator) {
+ case "||":
+ if (!isLogicalExpression(parent)) return false;
+ return parent.operator === "??" || parent.operator === "&&";
+
+ case "&&":
+ return isLogicalExpression(parent, {
+ operator: "??"
+ });
+
+ case "??":
+ return isLogicalExpression(parent) && parent.operator !== "??";
+ }
+}
+
+function Identifier(node, parent, printStack) {
+ if (node.name === "let") {
+ const isFollowedByBracket = isMemberExpression(parent, {
+ object: node,
+ computed: true
+ }) || isOptionalMemberExpression(parent, {
+ object: node,
+ computed: true,
+ optional: false
+ });
+ return isFirstInContext(printStack, {
+ expressionStatement: isFollowedByBracket,
+ forHead: isFollowedByBracket,
+ forInHead: isFollowedByBracket,
+ forOfHead: true
+ });
+ }
+
+ return node.name === "async" && isForOfStatement(parent) && node === parent.left;
+}
+
+function isFirstInContext(printStack, {
+ expressionStatement = false,
+ arrowBody = false,
+ exportDefault = false,
+ forHead = false,
+ forInHead = false,
+ forOfHead = false
+}) {
+ let i = printStack.length - 1;
+ let node = printStack[i];
+ i--;
+ let parent = printStack[i];
+
+ while (i >= 0) {
+ if (expressionStatement && isExpressionStatement(parent, {
+ expression: node
+ }) || exportDefault && isExportDefaultDeclaration(parent, {
+ declaration: node
+ }) || arrowBody && isArrowFunctionExpression(parent, {
+ body: node
+ }) || forHead && isForStatement(parent, {
+ init: node
+ }) || forInHead && isForInStatement(parent, {
+ left: node
+ }) || forOfHead && isForOfStatement(parent, {
+ left: node
+ })) {
+ return true;
+ }
+
+ if (hasPostfixPart(node, parent) && !isNewExpression(parent) || isSequenceExpression(parent) && parent.expressions[0] === node || isConditional(parent, {
+ test: node
+ }) || isBinary(parent, {
+ left: node
+ }) || isAssignmentExpression(parent, {
+ left: node
+ })) {
+ node = parent;
+ i--;
+ parent = printStack[i];
+ } else {
+ return false;
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js
new file mode 100644
index 0000000000..80e2da9c49
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/node/whitespace.js
@@ -0,0 +1,214 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.nodes = exports.list = void 0;
+
+var _t = require("@babel/types");
+
+const {
+ FLIPPED_ALIAS_KEYS,
+ isArrayExpression,
+ isAssignmentExpression,
+ isBinary,
+ isBlockStatement,
+ isCallExpression,
+ isFunction,
+ isIdentifier,
+ isLiteral,
+ isMemberExpression,
+ isObjectExpression,
+ isOptionalCallExpression,
+ isOptionalMemberExpression,
+ isStringLiteral
+} = _t;
+
+function crawl(node, state = {}) {
+ if (isMemberExpression(node) || isOptionalMemberExpression(node)) {
+ crawl(node.object, state);
+ if (node.computed) crawl(node.property, state);
+ } else if (isBinary(node) || isAssignmentExpression(node)) {
+ crawl(node.left, state);
+ crawl(node.right, state);
+ } else if (isCallExpression(node) || isOptionalCallExpression(node)) {
+ state.hasCall = true;
+ crawl(node.callee, state);
+ } else if (isFunction(node)) {
+ state.hasFunction = true;
+ } else if (isIdentifier(node)) {
+ state.hasHelper = state.hasHelper || isHelper(node.callee);
+ }
+
+ return state;
+}
+
+function isHelper(node) {
+ if (isMemberExpression(node)) {
+ return isHelper(node.object) || isHelper(node.property);
+ } else if (isIdentifier(node)) {
+ return node.name === "require" || node.name[0] === "_";
+ } else if (isCallExpression(node)) {
+ return isHelper(node.callee);
+ } else if (isBinary(node) || isAssignmentExpression(node)) {
+ return isIdentifier(node.left) && isHelper(node.left) || isHelper(node.right);
+ } else {
+ return false;
+ }
+}
+
+function isType(node) {
+ return isLiteral(node) || isObjectExpression(node) || isArrayExpression(node) || isIdentifier(node) || isMemberExpression(node);
+}
+
+const nodes = {
+ AssignmentExpression(node) {
+ const state = crawl(node.right);
+
+ if (state.hasCall && state.hasHelper || state.hasFunction) {
+ return {
+ before: state.hasFunction,
+ after: true
+ };
+ }
+ },
+
+ SwitchCase(node, parent) {
+ return {
+ before: !!node.consequent.length || parent.cases[0] === node,
+ after: !node.consequent.length && parent.cases[parent.cases.length - 1] === node
+ };
+ },
+
+ LogicalExpression(node) {
+ if (isFunction(node.left) || isFunction(node.right)) {
+ return {
+ after: true
+ };
+ }
+ },
+
+ Literal(node) {
+ if (isStringLiteral(node) && node.value === "use strict") {
+ return {
+ after: true
+ };
+ }
+ },
+
+ CallExpression(node) {
+ if (isFunction(node.callee) || isHelper(node)) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ },
+
+ OptionalCallExpression(node) {
+ if (isFunction(node.callee)) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ },
+
+ VariableDeclaration(node) {
+ for (let i = 0; i < node.declarations.length; i++) {
+ const declar = node.declarations[i];
+ let enabled = isHelper(declar.id) && !isType(declar.init);
+
+ if (!enabled) {
+ const state = crawl(declar.init);
+ enabled = isHelper(declar.init) && state.hasCall || state.hasFunction;
+ }
+
+ if (enabled) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ }
+ },
+
+ IfStatement(node) {
+ if (isBlockStatement(node.consequent)) {
+ return {
+ before: true,
+ after: true
+ };
+ }
+ }
+
+};
+exports.nodes = nodes;
+
+nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) {
+ if (parent.properties[0] === node) {
+ return {
+ before: true
+ };
+ }
+};
+
+nodes.ObjectTypeCallProperty = function (node, parent) {
+ var _parent$properties;
+
+ if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) {
+ return {
+ before: true
+ };
+ }
+};
+
+nodes.ObjectTypeIndexer = function (node, parent) {
+ var _parent$properties2, _parent$callPropertie;
+
+ if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) {
+ return {
+ before: true
+ };
+ }
+};
+
+nodes.ObjectTypeInternalSlot = function (node, parent) {
+ var _parent$properties3, _parent$callPropertie2, _parent$indexers;
+
+ if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) {
+ return {
+ before: true
+ };
+ }
+};
+
+const list = {
+ VariableDeclaration(node) {
+ return node.declarations.map(decl => decl.init);
+ },
+
+ ArrayExpression(node) {
+ return node.elements;
+ },
+
+ ObjectExpression(node) {
+ return node.properties;
+ }
+
+};
+exports.list = list;
+[["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function ([type, amounts]) {
+ if (typeof amounts === "boolean") {
+ amounts = {
+ after: amounts,
+ before: amounts
+ };
+ }
+
+ [type].concat(FLIPPED_ALIAS_KEYS[type] || []).forEach(function (type) {
+ nodes[type] = function () {
+ return amounts;
+ };
+ });
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js
new file mode 100644
index 0000000000..0decd212cb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js
@@ -0,0 +1,540 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _buffer = require("./buffer");
+
+var n = require("./node");
+
+var _t = require("@babel/types");
+
+var generatorFunctions = require("./generators");
+
+const {
+ isProgram,
+ isFile,
+ isEmptyStatement
+} = _t;
+const SCIENTIFIC_NOTATION = /e/i;
+const ZERO_DECIMAL_INTEGER = /\.0+$/;
+const NON_DECIMAL_LITERAL = /^0[box]/;
+const PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/;
+const {
+ needsParens,
+ needsWhitespaceAfter,
+ needsWhitespaceBefore
+} = n;
+
+class Printer {
+ constructor(format, map) {
+ this.inForStatementInitCounter = 0;
+ this._printStack = [];
+ this._indent = 0;
+ this._insideAux = false;
+ this._parenPushNewlineState = null;
+ this._noLineTerminator = false;
+ this._printAuxAfterOnNextUserNode = false;
+ this._printedComments = new WeakSet();
+ this._endsWithInteger = false;
+ this._endsWithWord = false;
+ this.format = format;
+ this._buf = new _buffer.default(map);
+ }
+
+ generate(ast) {
+ this.print(ast);
+
+ this._maybeAddAuxComment();
+
+ return this._buf.get();
+ }
+
+ indent() {
+ if (this.format.compact || this.format.concise) return;
+ this._indent++;
+ }
+
+ dedent() {
+ if (this.format.compact || this.format.concise) return;
+ this._indent--;
+ }
+
+ semicolon(force = false) {
+ this._maybeAddAuxComment();
+
+ this._append(";", !force);
+ }
+
+ rightBrace() {
+ if (this.format.minified) {
+ this._buf.removeLastSemicolon();
+ }
+
+ this.token("}");
+ }
+
+ space(force = false) {
+ if (this.format.compact) return;
+
+ if (force) {
+ this._space();
+ } else if (this._buf.hasContent()) {
+ const lastCp = this.getLastChar();
+
+ if (lastCp !== 32 && lastCp !== 10) {
+ this._space();
+ }
+ }
+ }
+
+ word(str) {
+ if (this._endsWithWord || this.endsWith(47) && str.charCodeAt(0) === 47) {
+ this._space();
+ }
+
+ this._maybeAddAuxComment();
+
+ this._append(str);
+
+ this._endsWithWord = true;
+ }
+
+ number(str) {
+ this.word(str);
+ this._endsWithInteger = Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46;
+ }
+
+ token(str) {
+ const lastChar = this.getLastChar();
+ const strFirst = str.charCodeAt(0);
+
+ if (str === "--" && lastChar === 33 || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) {
+ this._space();
+ }
+
+ this._maybeAddAuxComment();
+
+ this._append(str);
+ }
+
+ newline(i = 1) {
+ if (this.format.retainLines || this.format.compact) return;
+
+ if (this.format.concise) {
+ this.space();
+ return;
+ }
+
+ const charBeforeNewline = this.endsWithCharAndNewline();
+ if (charBeforeNewline === 10) return;
+
+ if (charBeforeNewline === 123 || charBeforeNewline === 58) {
+ i--;
+ }
+
+ if (i <= 0) return;
+
+ for (let j = 0; j < i; j++) {
+ this._newline();
+ }
+ }
+
+ endsWith(char) {
+ return this.getLastChar() === char;
+ }
+
+ getLastChar() {
+ return this._buf.getLastChar();
+ }
+
+ endsWithCharAndNewline() {
+ return this._buf.endsWithCharAndNewline();
+ }
+
+ removeTrailingNewline() {
+ this._buf.removeTrailingNewline();
+ }
+
+ exactSource(loc, cb) {
+ this._catchUp("start", loc);
+
+ this._buf.exactSource(loc, cb);
+ }
+
+ source(prop, loc) {
+ this._catchUp(prop, loc);
+
+ this._buf.source(prop, loc);
+ }
+
+ withSource(prop, loc, cb) {
+ this._catchUp(prop, loc);
+
+ this._buf.withSource(prop, loc, cb);
+ }
+
+ _space() {
+ this._append(" ", true);
+ }
+
+ _newline() {
+ this._append("\n", true);
+ }
+
+ _append(str, queue = false) {
+ this._maybeAddParen(str);
+
+ this._maybeIndent(str);
+
+ if (queue) this._buf.queue(str);else this._buf.append(str);
+ this._endsWithWord = false;
+ this._endsWithInteger = false;
+ }
+
+ _maybeIndent(str) {
+ if (this._indent && this.endsWith(10) && str.charCodeAt(0) !== 10) {
+ this._buf.queue(this._getIndent());
+ }
+ }
+
+ _maybeAddParen(str) {
+ const parenPushNewlineState = this._parenPushNewlineState;
+ if (!parenPushNewlineState) return;
+ let i;
+
+ for (i = 0; i < str.length && str[i] === " "; i++) continue;
+
+ if (i === str.length) {
+ return;
+ }
+
+ const cha = str[i];
+
+ if (cha !== "\n") {
+ if (cha !== "/" || i + 1 === str.length) {
+ this._parenPushNewlineState = null;
+ return;
+ }
+
+ const chaPost = str[i + 1];
+
+ if (chaPost === "*") {
+ if (PURE_ANNOTATION_RE.test(str.slice(i + 2, str.length - 2))) {
+ return;
+ }
+ } else if (chaPost !== "/") {
+ this._parenPushNewlineState = null;
+ return;
+ }
+ }
+
+ this.token("(");
+ this.indent();
+ parenPushNewlineState.printed = true;
+ }
+
+ _catchUp(prop, loc) {
+ if (!this.format.retainLines) return;
+ const pos = loc ? loc[prop] : null;
+
+ if ((pos == null ? void 0 : pos.line) != null) {
+ const count = pos.line - this._buf.getCurrentLine();
+
+ for (let i = 0; i < count; i++) {
+ this._newline();
+ }
+ }
+ }
+
+ _getIndent() {
+ return this.format.indent.style.repeat(this._indent);
+ }
+
+ startTerminatorless(isLabel = false) {
+ if (isLabel) {
+ this._noLineTerminator = true;
+ return null;
+ } else {
+ return this._parenPushNewlineState = {
+ printed: false
+ };
+ }
+ }
+
+ endTerminatorless(state) {
+ this._noLineTerminator = false;
+
+ if (state != null && state.printed) {
+ this.dedent();
+ this.newline();
+ this.token(")");
+ }
+ }
+
+ print(node, parent) {
+ if (!node) return;
+ const oldConcise = this.format.concise;
+
+ if (node._compact) {
+ this.format.concise = true;
+ }
+
+ const printMethod = this[node.type];
+
+ if (!printMethod) {
+ throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node == null ? void 0 : node.constructor.name)}`);
+ }
+
+ this._printStack.push(node);
+
+ const oldInAux = this._insideAux;
+ this._insideAux = !node.loc;
+
+ this._maybeAddAuxComment(this._insideAux && !oldInAux);
+
+ let shouldPrintParens = needsParens(node, parent, this._printStack);
+
+ if (this.format.retainFunctionParens && node.type === "FunctionExpression" && node.extra && node.extra.parenthesized) {
+ shouldPrintParens = true;
+ }
+
+ if (shouldPrintParens) this.token("(");
+
+ this._printLeadingComments(node);
+
+ const loc = isProgram(node) || isFile(node) ? null : node.loc;
+ this.withSource("start", loc, () => {
+ printMethod.call(this, node, parent);
+ });
+
+ this._printTrailingComments(node);
+
+ if (shouldPrintParens) this.token(")");
+
+ this._printStack.pop();
+
+ this.format.concise = oldConcise;
+ this._insideAux = oldInAux;
+ }
+
+ _maybeAddAuxComment(enteredPositionlessNode) {
+ if (enteredPositionlessNode) this._printAuxBeforeComment();
+ if (!this._insideAux) this._printAuxAfterComment();
+ }
+
+ _printAuxBeforeComment() {
+ if (this._printAuxAfterOnNextUserNode) return;
+ this._printAuxAfterOnNextUserNode = true;
+ const comment = this.format.auxiliaryCommentBefore;
+
+ if (comment) {
+ this._printComment({
+ type: "CommentBlock",
+ value: comment
+ });
+ }
+ }
+
+ _printAuxAfterComment() {
+ if (!this._printAuxAfterOnNextUserNode) return;
+ this._printAuxAfterOnNextUserNode = false;
+ const comment = this.format.auxiliaryCommentAfter;
+
+ if (comment) {
+ this._printComment({
+ type: "CommentBlock",
+ value: comment
+ });
+ }
+ }
+
+ getPossibleRaw(node) {
+ const extra = node.extra;
+
+ if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) {
+ return extra.raw;
+ }
+ }
+
+ printJoin(nodes, parent, opts = {}) {
+ if (!(nodes != null && nodes.length)) return;
+ if (opts.indent) this.indent();
+ const newlineOpts = {
+ addNewlines: opts.addNewlines
+ };
+
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+ if (opts.statement) this._printNewline(true, node, parent, newlineOpts);
+ this.print(node, parent);
+
+ if (opts.iterator) {
+ opts.iterator(node, i);
+ }
+
+ if (opts.separator && i < nodes.length - 1) {
+ opts.separator.call(this);
+ }
+
+ if (opts.statement) this._printNewline(false, node, parent, newlineOpts);
+ }
+
+ if (opts.indent) this.dedent();
+ }
+
+ printAndIndentOnComments(node, parent) {
+ const indent = node.leadingComments && node.leadingComments.length > 0;
+ if (indent) this.indent();
+ this.print(node, parent);
+ if (indent) this.dedent();
+ }
+
+ printBlock(parent) {
+ const node = parent.body;
+
+ if (!isEmptyStatement(node)) {
+ this.space();
+ }
+
+ this.print(node, parent);
+ }
+
+ _printTrailingComments(node) {
+ this._printComments(this._getComments(false, node));
+ }
+
+ _printLeadingComments(node) {
+ this._printComments(this._getComments(true, node), true);
+ }
+
+ printInnerComments(node, indent = true) {
+ var _node$innerComments;
+
+ if (!((_node$innerComments = node.innerComments) != null && _node$innerComments.length)) return;
+ if (indent) this.indent();
+
+ this._printComments(node.innerComments);
+
+ if (indent) this.dedent();
+ }
+
+ printSequence(nodes, parent, opts = {}) {
+ opts.statement = true;
+ return this.printJoin(nodes, parent, opts);
+ }
+
+ printList(items, parent, opts = {}) {
+ if (opts.separator == null) {
+ opts.separator = commaSeparator;
+ }
+
+ return this.printJoin(items, parent, opts);
+ }
+
+ _printNewline(leading, node, parent, opts) {
+ if (this.format.retainLines || this.format.compact) return;
+
+ if (this.format.concise) {
+ this.space();
+ return;
+ }
+
+ let lines = 0;
+
+ if (this._buf.hasContent()) {
+ if (!leading) lines++;
+ if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;
+ const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter;
+ if (needs(node, parent)) lines++;
+ }
+
+ this.newline(Math.min(2, lines));
+ }
+
+ _getComments(leading, node) {
+ return node && (leading ? node.leadingComments : node.trailingComments) || [];
+ }
+
+ _printComment(comment, skipNewLines) {
+ if (!this.format.shouldPrintComment(comment.value)) return;
+ if (comment.ignore) return;
+ if (this._printedComments.has(comment)) return;
+
+ this._printedComments.add(comment);
+
+ const isBlockComment = comment.type === "CommentBlock";
+ const printNewLines = isBlockComment && !skipNewLines && !this._noLineTerminator;
+ if (printNewLines && this._buf.hasContent()) this.newline(1);
+ const lastCharCode = this.getLastChar();
+
+ if (lastCharCode !== 91 && lastCharCode !== 123) {
+ this.space();
+ }
+
+ let val = !isBlockComment && !this._noLineTerminator ? `//${comment.value}\n` : `/*${comment.value}*/`;
+
+ if (isBlockComment && this.format.indent.adjustMultilineComment) {
+ var _comment$loc;
+
+ const offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column;
+
+ if (offset) {
+ const newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
+ val = val.replace(newlineRegex, "\n");
+ }
+
+ const indentSize = Math.max(this._getIndent().length, this.format.retainLines ? 0 : this._buf.getCurrentColumn());
+ val = val.replace(/\n(?!$)/g, `\n${" ".repeat(indentSize)}`);
+ }
+
+ if (this.endsWith(47)) this._space();
+ this.withSource("start", comment.loc, () => {
+ this._append(val);
+ });
+ if (printNewLines) this.newline(1);
+ }
+
+ _printComments(comments, inlinePureAnnotation) {
+ if (!(comments != null && comments.length)) return;
+
+ if (inlinePureAnnotation && comments.length === 1 && PURE_ANNOTATION_RE.test(comments[0].value)) {
+ this._printComment(comments[0], this._buf.hasContent() && !this.endsWith(10));
+ } else {
+ for (const comment of comments) {
+ this._printComment(comment);
+ }
+ }
+ }
+
+ printAssertions(node) {
+ var _node$assertions;
+
+ if ((_node$assertions = node.assertions) != null && _node$assertions.length) {
+ this.space();
+ this.word("assert");
+ this.space();
+ this.token("{");
+ this.space();
+ this.printList(node.assertions, node);
+ this.space();
+ this.token("}");
+ }
+ }
+
+}
+
+Object.assign(Printer.prototype, generatorFunctions);
+{
+ Printer.prototype.Noop = function Noop() {};
+}
+var _default = Printer;
+exports.default = _default;
+
+function commaSeparator() {
+ this.token(",");
+ this.space();
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js
new file mode 100644
index 0000000000..99da1defd7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/source-map.js
@@ -0,0 +1,78 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _sourceMap = require("source-map");
+
+class SourceMap {
+ constructor(opts, code) {
+ this._cachedMap = void 0;
+ this._code = void 0;
+ this._opts = void 0;
+ this._rawMappings = void 0;
+ this._lastGenLine = void 0;
+ this._lastSourceLine = void 0;
+ this._lastSourceColumn = void 0;
+ this._cachedMap = null;
+ this._code = code;
+ this._opts = opts;
+ this._rawMappings = [];
+ }
+
+ get() {
+ if (!this._cachedMap) {
+ const map = this._cachedMap = new _sourceMap.SourceMapGenerator({
+ sourceRoot: this._opts.sourceRoot
+ });
+ const code = this._code;
+
+ if (typeof code === "string") {
+ map.setSourceContent(this._opts.sourceFileName.replace(/\\/g, "/"), code);
+ } else if (typeof code === "object") {
+ Object.keys(code).forEach(sourceFileName => {
+ map.setSourceContent(sourceFileName.replace(/\\/g, "/"), code[sourceFileName]);
+ });
+ }
+
+ this._rawMappings.forEach(mapping => map.addMapping(mapping), map);
+ }
+
+ return this._cachedMap.toJSON();
+ }
+
+ getRawMappings() {
+ return this._rawMappings.slice();
+ }
+
+ mark(generatedLine, generatedColumn, line, column, identifierName, filename, force) {
+ if (this._lastGenLine !== generatedLine && line === null) return;
+
+ if (!force && this._lastGenLine === generatedLine && this._lastSourceLine === line && this._lastSourceColumn === column) {
+ return;
+ }
+
+ this._cachedMap = null;
+ this._lastGenLine = generatedLine;
+ this._lastSourceLine = line;
+ this._lastSourceColumn = column;
+
+ this._rawMappings.push({
+ name: identifierName || undefined,
+ generated: {
+ line: generatedLine,
+ column: generatedColumn
+ },
+ source: line == null ? undefined : (filename || this._opts.sourceFileName).replace(/\\/g, "/"),
+ original: line == null ? undefined : {
+ line: line,
+ column: column
+ }
+ });
+ }
+
+}
+
+exports.default = SourceMap; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/package.json b/tools/node_modules/eslint/node_modules/@babel/generator/package.json
new file mode 100644
index 0000000000..83a6b58260
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/generator/package.json
@@ -0,0 +1,36 @@
+{
+ "name": "@babel/generator",
+ "version": "7.16.0",
+ "description": "Turns an AST into code.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-generator"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-generator",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20generator%22+is%3Aopen",
+ "main": "./lib/index.js",
+ "files": [
+ "lib"
+ ],
+ "dependencies": {
+ "@babel/types": "^7.16.0",
+ "jsesc": "^2.5.1",
+ "source-map": "^0.5.0"
+ },
+ "devDependencies": {
+ "@babel/helper-fixtures": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@types/jsesc": "^2.5.0",
+ "@types/source-map": "^0.5.0",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/README.md
new file mode 100644
index 0000000000..af386ab08b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-compilation-targets
+
+> Helper functions on Babel compilation targets
+
+See our website [@babel/helper-compilation-targets](https://babeljs.io/docs/en/babel-helper-compilation-targets) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install @babel/helper-compilation-targets
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-compilation-targets
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/debug.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/debug.js
new file mode 100644
index 0000000000..4e05fdd557
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/debug.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getInclusionReasons = getInclusionReasons;
+
+var _semver = require("semver");
+
+var _pretty = require("./pretty");
+
+var _utils = require("./utils");
+
+function getInclusionReasons(item, targetVersions, list) {
+ const minVersions = list[item] || {};
+ return Object.keys(targetVersions).reduce((result, env) => {
+ const minVersion = (0, _utils.getLowestImplementedVersion)(minVersions, env);
+ const targetVersion = targetVersions[env];
+
+ if (!minVersion) {
+ result[env] = (0, _pretty.prettifyVersion)(targetVersion);
+ } else {
+ const minIsUnreleased = (0, _utils.isUnreleasedVersion)(minVersion, env);
+ const targetIsUnreleased = (0, _utils.isUnreleasedVersion)(targetVersion, env);
+
+ if (!targetIsUnreleased && (minIsUnreleased || _semver.lt(targetVersion.toString(), (0, _utils.semverify)(minVersion)))) {
+ result[env] = (0, _pretty.prettifyVersion)(targetVersion);
+ }
+ }
+
+ return result;
+ }, {});
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/filter-items.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/filter-items.js
new file mode 100644
index 0000000000..f47f6050f7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/filter-items.js
@@ -0,0 +1,88 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = filterItems;
+exports.isRequired = isRequired;
+exports.targetsSupported = targetsSupported;
+
+var _semver = require("semver");
+
+var _plugins = require("@babel/compat-data/plugins");
+
+var _utils = require("./utils");
+
+function targetsSupported(target, support) {
+ const targetEnvironments = Object.keys(target);
+
+ if (targetEnvironments.length === 0) {
+ return false;
+ }
+
+ const unsupportedEnvironments = targetEnvironments.filter(environment => {
+ const lowestImplementedVersion = (0, _utils.getLowestImplementedVersion)(support, environment);
+
+ if (!lowestImplementedVersion) {
+ return true;
+ }
+
+ const lowestTargetedVersion = target[environment];
+
+ if ((0, _utils.isUnreleasedVersion)(lowestTargetedVersion, environment)) {
+ return false;
+ }
+
+ if ((0, _utils.isUnreleasedVersion)(lowestImplementedVersion, environment)) {
+ return true;
+ }
+
+ if (!_semver.valid(lowestTargetedVersion.toString())) {
+ throw new Error(`Invalid version passed for target "${environment}": "${lowestTargetedVersion}". ` + "Versions must be in semver format (major.minor.patch)");
+ }
+
+ return _semver.gt((0, _utils.semverify)(lowestImplementedVersion), lowestTargetedVersion.toString());
+ });
+ return unsupportedEnvironments.length === 0;
+}
+
+function isRequired(name, targets, {
+ compatData = _plugins,
+ includes,
+ excludes
+} = {}) {
+ if (excludes != null && excludes.has(name)) return false;
+ if (includes != null && includes.has(name)) return true;
+ return !targetsSupported(targets, compatData[name]);
+}
+
+function filterItems(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
+ const result = new Set();
+ const options = {
+ compatData: list,
+ includes,
+ excludes
+ };
+
+ for (const item in list) {
+ if (isRequired(item, targets, options)) {
+ result.add(item);
+ } else if (pluginSyntaxMap) {
+ const shippedProposalsSyntax = pluginSyntaxMap.get(item);
+
+ if (shippedProposalsSyntax) {
+ result.add(shippedProposalsSyntax);
+ }
+ }
+ }
+
+ if (defaultIncludes) {
+ defaultIncludes.forEach(item => !excludes.has(item) && result.add(item));
+ }
+
+ if (defaultExcludes) {
+ defaultExcludes.forEach(item => !includes.has(item) && result.delete(item));
+ }
+
+ return result;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js
new file mode 100644
index 0000000000..c1865996af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/index.js
@@ -0,0 +1,255 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "TargetNames", {
+ enumerable: true,
+ get: function () {
+ return _options.TargetNames;
+ }
+});
+exports.default = getTargets;
+Object.defineProperty(exports, "filterItems", {
+ enumerable: true,
+ get: function () {
+ return _filterItems.default;
+ }
+});
+Object.defineProperty(exports, "getInclusionReasons", {
+ enumerable: true,
+ get: function () {
+ return _debug.getInclusionReasons;
+ }
+});
+exports.isBrowsersQueryValid = isBrowsersQueryValid;
+Object.defineProperty(exports, "isRequired", {
+ enumerable: true,
+ get: function () {
+ return _filterItems.isRequired;
+ }
+});
+Object.defineProperty(exports, "prettifyTargets", {
+ enumerable: true,
+ get: function () {
+ return _pretty.prettifyTargets;
+ }
+});
+Object.defineProperty(exports, "unreleasedLabels", {
+ enumerable: true,
+ get: function () {
+ return _targets.unreleasedLabels;
+ }
+});
+
+var _browserslist = require("browserslist");
+
+var _helperValidatorOption = require("@babel/helper-validator-option");
+
+var _nativeModules = require("@babel/compat-data/native-modules");
+
+var _utils = require("./utils");
+
+var _targets = require("./targets");
+
+var _options = require("./options");
+
+var _pretty = require("./pretty");
+
+var _debug = require("./debug");
+
+var _filterItems = require("./filter-items");
+
+const ESM_SUPPORT = _nativeModules["es6.module"];
+const v = new _helperValidatorOption.OptionValidator("@babel/helper-compilation-targets");
+
+function validateTargetNames(targets) {
+ const validTargets = Object.keys(_options.TargetNames);
+
+ for (const target of Object.keys(targets)) {
+ if (!(target in _options.TargetNames)) {
+ throw new Error(v.formatMessage(`'${target}' is not a valid target
+- Did you mean '${(0, _helperValidatorOption.findSuggestion)(target, validTargets)}'?`));
+ }
+ }
+
+ return targets;
+}
+
+function isBrowsersQueryValid(browsers) {
+ return typeof browsers === "string" || Array.isArray(browsers) && browsers.every(b => typeof b === "string");
+}
+
+function validateBrowsers(browsers) {
+ v.invariant(browsers === undefined || isBrowsersQueryValid(browsers), `'${String(browsers)}' is not a valid browserslist query`);
+ return browsers;
+}
+
+function getLowestVersions(browsers) {
+ return browsers.reduce((all, browser) => {
+ const [browserName, browserVersion] = browser.split(" ");
+ const normalizedBrowserName = _targets.browserNameMap[browserName];
+
+ if (!normalizedBrowserName) {
+ return all;
+ }
+
+ try {
+ const splitVersion = browserVersion.split("-")[0].toLowerCase();
+ const isSplitUnreleased = (0, _utils.isUnreleasedVersion)(splitVersion, browserName);
+
+ if (!all[normalizedBrowserName]) {
+ all[normalizedBrowserName] = isSplitUnreleased ? splitVersion : (0, _utils.semverify)(splitVersion);
+ return all;
+ }
+
+ const version = all[normalizedBrowserName];
+ const isUnreleased = (0, _utils.isUnreleasedVersion)(version, browserName);
+
+ if (isUnreleased && isSplitUnreleased) {
+ all[normalizedBrowserName] = (0, _utils.getLowestUnreleased)(version, splitVersion, browserName);
+ } else if (isUnreleased) {
+ all[normalizedBrowserName] = (0, _utils.semverify)(splitVersion);
+ } else if (!isUnreleased && !isSplitUnreleased) {
+ const parsedBrowserVersion = (0, _utils.semverify)(splitVersion);
+ all[normalizedBrowserName] = (0, _utils.semverMin)(version, parsedBrowserVersion);
+ }
+ } catch (e) {}
+
+ return all;
+ }, {});
+}
+
+function outputDecimalWarning(decimalTargets) {
+ if (!decimalTargets.length) {
+ return;
+ }
+
+ console.warn("Warning, the following targets are using a decimal version:\n");
+ decimalTargets.forEach(({
+ target,
+ value
+ }) => console.warn(` ${target}: ${value}`));
+ console.warn(`
+We recommend using a string for minor/patch versions to avoid numbers like 6.10
+getting parsed as 6.1, which can lead to unexpected behavior.
+`);
+}
+
+function semverifyTarget(target, value) {
+ try {
+ return (0, _utils.semverify)(value);
+ } catch (error) {
+ throw new Error(v.formatMessage(`'${value}' is not a valid value for 'targets.${target}'.`));
+ }
+}
+
+const targetParserMap = {
+ __default(target, value) {
+ const version = (0, _utils.isUnreleasedVersion)(value, target) ? value.toLowerCase() : semverifyTarget(target, value);
+ return [target, version];
+ },
+
+ node(target, value) {
+ const parsed = value === true || value === "current" ? process.versions.node : semverifyTarget(target, value);
+ return [target, parsed];
+ }
+
+};
+
+function generateTargets(inputTargets) {
+ const input = Object.assign({}, inputTargets);
+ delete input.esmodules;
+ delete input.browsers;
+ return input;
+}
+
+function resolveTargets(queries, env) {
+ const resolved = _browserslist(queries, {
+ mobileToDesktop: true,
+ env
+ });
+
+ return getLowestVersions(resolved);
+}
+
+function getTargets(inputTargets = {}, options = {}) {
+ var _browsers;
+
+ let {
+ browsers,
+ esmodules
+ } = inputTargets;
+ const {
+ configPath = "."
+ } = options;
+ validateBrowsers(browsers);
+ const input = generateTargets(inputTargets);
+ let targets = validateTargetNames(input);
+ const shouldParseBrowsers = !!browsers;
+ const hasTargets = shouldParseBrowsers || Object.keys(targets).length > 0;
+ const shouldSearchForConfig = !options.ignoreBrowserslistConfig && !hasTargets;
+
+ if (!browsers && shouldSearchForConfig) {
+ browsers = _browserslist.loadConfig({
+ config: options.configFile,
+ path: configPath,
+ env: options.browserslistEnv
+ });
+
+ if (browsers == null) {
+ {
+ browsers = [];
+ }
+ }
+ }
+
+ if (esmodules && (esmodules !== "intersect" || !((_browsers = browsers) != null && _browsers.length))) {
+ browsers = Object.keys(ESM_SUPPORT).map(browser => `${browser} >= ${ESM_SUPPORT[browser]}`).join(", ");
+ esmodules = false;
+ }
+
+ if (browsers) {
+ const queryBrowsers = resolveTargets(browsers, options.browserslistEnv);
+
+ if (esmodules === "intersect") {
+ for (const browser of Object.keys(queryBrowsers)) {
+ const version = queryBrowsers[browser];
+
+ if (ESM_SUPPORT[browser]) {
+ queryBrowsers[browser] = (0, _utils.getHighestUnreleased)(version, (0, _utils.semverify)(ESM_SUPPORT[browser]), browser);
+ } else {
+ delete queryBrowsers[browser];
+ }
+ }
+ }
+
+ targets = Object.assign(queryBrowsers, targets);
+ }
+
+ const result = {};
+ const decimalWarnings = [];
+
+ for (const target of Object.keys(targets).sort()) {
+ var _targetParserMap$targ;
+
+ const value = targets[target];
+
+ if (typeof value === "number" && value % 1 !== 0) {
+ decimalWarnings.push({
+ target,
+ value
+ });
+ }
+
+ const parser = (_targetParserMap$targ = targetParserMap[target]) != null ? _targetParserMap$targ : targetParserMap.__default;
+ const [parsedTarget, parsedValue] = parser(target, value);
+
+ if (parsedValue) {
+ result[parsedTarget] = parsedValue;
+ }
+ }
+
+ outputDecimalWarning(decimalWarnings);
+ return result;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/options.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/options.js
new file mode 100644
index 0000000000..cbf4de04af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/options.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.TargetNames = void 0;
+const TargetNames = {
+ node: "node",
+ chrome: "chrome",
+ opera: "opera",
+ edge: "edge",
+ firefox: "firefox",
+ safari: "safari",
+ ie: "ie",
+ ios: "ios",
+ android: "android",
+ electron: "electron",
+ samsung: "samsung",
+ rhino: "rhino"
+};
+exports.TargetNames = TargetNames; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/pretty.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/pretty.js
new file mode 100644
index 0000000000..88df640064
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/pretty.js
@@ -0,0 +1,47 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.prettifyTargets = prettifyTargets;
+exports.prettifyVersion = prettifyVersion;
+
+var _semver = require("semver");
+
+var _targets = require("./targets");
+
+function prettifyVersion(version) {
+ if (typeof version !== "string") {
+ return version;
+ }
+
+ const parts = [_semver.major(version)];
+
+ const minor = _semver.minor(version);
+
+ const patch = _semver.patch(version);
+
+ if (minor || patch) {
+ parts.push(minor);
+ }
+
+ if (patch) {
+ parts.push(patch);
+ }
+
+ return parts.join(".");
+}
+
+function prettifyTargets(targets) {
+ return Object.keys(targets).reduce((results, target) => {
+ let value = targets[target];
+ const unreleasedLabel = _targets.unreleasedLabels[target];
+
+ if (typeof value === "string" && unreleasedLabel !== value) {
+ value = prettifyVersion(value);
+ }
+
+ results[target] = value;
+ return results;
+ }, {});
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/targets.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/targets.js
new file mode 100644
index 0000000000..3cbaeac98e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/targets.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.unreleasedLabels = exports.browserNameMap = void 0;
+const unreleasedLabels = {
+ safari: "tp"
+};
+exports.unreleasedLabels = unreleasedLabels;
+const browserNameMap = {
+ and_chr: "chrome",
+ and_ff: "firefox",
+ android: "android",
+ chrome: "chrome",
+ edge: "edge",
+ firefox: "firefox",
+ ie: "ie",
+ ie_mob: "ie",
+ ios_saf: "ios",
+ node: "node",
+ op_mob: "opera",
+ opera: "opera",
+ safari: "safari",
+ samsung: "samsung"
+};
+exports.browserNameMap = browserNameMap; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/types.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/types.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/types.js
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js
new file mode 100644
index 0000000000..711a84f433
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/lib/utils.js
@@ -0,0 +1,69 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.getHighestUnreleased = getHighestUnreleased;
+exports.getLowestImplementedVersion = getLowestImplementedVersion;
+exports.getLowestUnreleased = getLowestUnreleased;
+exports.isUnreleasedVersion = isUnreleasedVersion;
+exports.semverMin = semverMin;
+exports.semverify = semverify;
+
+var _semver = require("semver");
+
+var _helperValidatorOption = require("@babel/helper-validator-option");
+
+var _targets = require("./targets");
+
+const versionRegExp = /^(\d+|\d+.\d+)$/;
+const v = new _helperValidatorOption.OptionValidator("@babel/helper-compilation-targets");
+
+function semverMin(first, second) {
+ return first && _semver.lt(first, second) ? first : second;
+}
+
+function semverify(version) {
+ if (typeof version === "string" && _semver.valid(version)) {
+ return version;
+ }
+
+ v.invariant(typeof version === "number" || typeof version === "string" && versionRegExp.test(version), `'${version}' is not a valid version`);
+ const split = version.toString().split(".");
+
+ while (split.length < 3) {
+ split.push("0");
+ }
+
+ return split.join(".");
+}
+
+function isUnreleasedVersion(version, env) {
+ const unreleasedLabel = _targets.unreleasedLabels[env];
+ return !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase();
+}
+
+function getLowestUnreleased(a, b, env) {
+ const unreleasedLabel = _targets.unreleasedLabels[env];
+ const hasUnreleased = [a, b].some(item => item === unreleasedLabel);
+
+ if (hasUnreleased) {
+ return a === hasUnreleased ? b : a || b;
+ }
+
+ return semverMin(a, b);
+}
+
+function getHighestUnreleased(a, b, env) {
+ return getLowestUnreleased(a, b, env) === a ? b : a;
+}
+
+function getLowestImplementedVersion(plugin, environment) {
+ const result = plugin[environment];
+
+ if (!result && environment === "android") {
+ return plugin.chrome;
+ }
+
+ return result;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/LICENSE
new file mode 100644
index 0000000000..19129e315f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/README.md
new file mode 100644
index 0000000000..2293a14fdc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/README.md
@@ -0,0 +1,443 @@
+semver(1) -- The semantic versioner for npm
+===========================================
+
+## Install
+
+```bash
+npm install semver
+````
+
+## Usage
+
+As a node module:
+
+```js
+const semver = require('semver')
+
+semver.valid('1.2.3') // '1.2.3'
+semver.valid('a.b.c') // null
+semver.clean(' =v1.2.3 ') // '1.2.3'
+semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
+semver.gt('1.2.3', '9.8.7') // false
+semver.lt('1.2.3', '9.8.7') // true
+semver.minVersion('>=1.0.0') // '1.0.0'
+semver.valid(semver.coerce('v2')) // '2.0.0'
+semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
+```
+
+As a command-line utility:
+
+```
+$ semver -h
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+ Print versions that match the specified range.
+
+-i --increment [<level>]
+ Increment a version by the specified level. Level can
+ be one of: major, minor, patch, premajor, preminor,
+ prepatch, or prerelease. Default level is 'patch'.
+ Only one version may be specified.
+
+--preid <identifier>
+ Identifier to be used to prefix premajor, preminor,
+ prepatch or prerelease version increments.
+
+-l --loose
+ Interpret versions and ranges loosely
+
+-p --include-prerelease
+ Always include prerelease versions in range matching
+
+-c --coerce
+ Coerce a string into SemVer if possible
+ (does not imply --loose)
+
+--rtl
+ Coerce version strings right to left
+
+--ltr
+ Coerce version strings left to right (default)
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.
+```
+
+## Versions
+
+A "version" is described by the `v2.0.0` specification found at
+<https://semver.org/>.
+
+A leading `"="` or `"v"` character is stripped off and ignored.
+
+## Ranges
+
+A `version range` is a set of `comparators` which specify versions
+that satisfy the range.
+
+A `comparator` is composed of an `operator` and a `version`. The set
+of primitive `operators` is:
+
+* `<` Less than
+* `<=` Less than or equal to
+* `>` Greater than
+* `>=` Greater than or equal to
+* `=` Equal. If no operator is specified, then equality is assumed,
+ so this operator is optional, but MAY be included.
+
+For example, the comparator `>=1.2.7` would match the versions
+`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
+or `1.1.0`.
+
+Comparators can be joined by whitespace to form a `comparator set`,
+which is satisfied by the **intersection** of all of the comparators
+it includes.
+
+A range is composed of one or more comparator sets, joined by `||`. A
+version matches a range if and only if every comparator in at least
+one of the `||`-separated comparator sets is satisfied by the version.
+
+For example, the range `>=1.2.7 <1.3.0` would match the versions
+`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
+or `1.1.0`.
+
+The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
+`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
+
+### Prerelease Tags
+
+If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
+it will only be allowed to satisfy comparator sets if at least one
+comparator with the same `[major, minor, patch]` tuple also has a
+prerelease tag.
+
+For example, the range `>1.2.3-alpha.3` would be allowed to match the
+version `1.2.3-alpha.7`, but it would *not* be satisfied by
+`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
+than" `1.2.3-alpha.3` according to the SemVer sort rules. The version
+range only accepts prerelease tags on the `1.2.3` version. The
+version `3.4.5` *would* satisfy the range, because it does not have a
+prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
+
+The purpose for this behavior is twofold. First, prerelease versions
+frequently are updated very quickly, and contain many breaking changes
+that are (by the author's design) not yet fit for public consumption.
+Therefore, by default, they are excluded from range matching
+semantics.
+
+Second, a user who has opted into using a prerelease version has
+clearly indicated the intent to use *that specific* set of
+alpha/beta/rc versions. By including a prerelease tag in the range,
+the user is indicating that they are aware of the risk. However, it
+is still not appropriate to assume that they have opted into taking a
+similar risk on the *next* set of prerelease versions.
+
+Note that this behavior can be suppressed (treating all prerelease
+versions as if they were normal versions, for the purpose of range
+matching) by setting the `includePrerelease` flag on the options
+object to any
+[functions](https://github.com/npm/node-semver#functions) that do
+range matching.
+
+#### Prerelease Identifiers
+
+The method `.inc` takes an additional `identifier` string argument that
+will append the value of the string as a prerelease identifier:
+
+```javascript
+semver.inc('1.2.3', 'prerelease', 'beta')
+// '1.2.4-beta.0'
+```
+
+command-line example:
+
+```bash
+$ semver 1.2.3 -i prerelease --preid beta
+1.2.4-beta.0
+```
+
+Which then can be used to increment further:
+
+```bash
+$ semver 1.2.4-beta.0 -i prerelease
+1.2.4-beta.1
+```
+
+### Advanced Range Syntax
+
+Advanced range syntax desugars to primitive comparators in
+deterministic ways.
+
+Advanced ranges may be combined in the same way as primitive
+comparators using white space or `||`.
+
+#### Hyphen Ranges `X.Y.Z - A.B.C`
+
+Specifies an inclusive set.
+
+* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
+
+If a partial version is provided as the first version in the inclusive
+range, then the missing pieces are replaced with zeroes.
+
+* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
+
+If a partial version is provided as the second version in the
+inclusive range, then all versions that start with the supplied parts
+of the tuple are accepted, but nothing that would be greater than the
+provided tuple parts.
+
+* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0`
+* `1.2.3 - 2` := `>=1.2.3 <3.0.0`
+
+#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
+
+Any of `X`, `x`, or `*` may be used to "stand in" for one of the
+numeric values in the `[major, minor, patch]` tuple.
+
+* `*` := `>=0.0.0` (Any version satisfies)
+* `1.x` := `>=1.0.0 <2.0.0` (Matching major version)
+* `1.2.x` := `>=1.2.0 <1.3.0` (Matching major and minor versions)
+
+A partial version range is treated as an X-Range, so the special
+character is in fact optional.
+
+* `""` (empty string) := `*` := `>=0.0.0`
+* `1` := `1.x.x` := `>=1.0.0 <2.0.0`
+* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0`
+
+#### Tilde Ranges `~1.2.3` `~1.2` `~1`
+
+Allows patch-level changes if a minor version is specified on the
+comparator. Allows minor-level changes if not.
+
+* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0`
+* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0` (Same as `1.2.x`)
+* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0` (Same as `1.x`)
+* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0`
+* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0` (Same as `0.2.x`)
+* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0` (Same as `0.x`)
+* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+
+#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
+
+Allows changes that do not modify the left-most non-zero element in the
+`[major, minor, patch]` tuple. In other words, this allows patch and
+minor updates for versions `1.0.0` and above, patch updates for
+versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
+
+Many authors treat a `0.x` version as if the `x` were the major
+"breaking-change" indicator.
+
+Caret ranges are ideal when an author may make breaking changes
+between `0.2.4` and `0.3.0` releases, which is a common practice.
+However, it presumes that there will *not* be breaking changes between
+`0.2.4` and `0.2.5`. It allows for changes that are presumed to be
+additive (but non-breaking), according to commonly observed practices.
+
+* `^1.2.3` := `>=1.2.3 <2.0.0`
+* `^0.2.3` := `>=0.2.3 <0.3.0`
+* `^0.0.3` := `>=0.0.3 <0.0.4`
+* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0` Note that prereleases in
+ the `1.2.3` version will be allowed, if they are greater than or
+ equal to `beta.2`. So, `1.2.3-beta.4` would be allowed, but
+ `1.2.4-beta.2` would not, because it is a prerelease of a
+ different `[major, minor, patch]` tuple.
+* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4` Note that prereleases in the
+ `0.0.3` version *only* will be allowed, if they are greater than or
+ equal to `beta`. So, `0.0.3-pr.2` would be allowed.
+
+When parsing caret ranges, a missing `patch` value desugars to the
+number `0`, but will allow flexibility within that value, even if the
+major and minor versions are both `0`.
+
+* `^1.2.x` := `>=1.2.0 <2.0.0`
+* `^0.0.x` := `>=0.0.0 <0.1.0`
+* `^0.0` := `>=0.0.0 <0.1.0`
+
+A missing `minor` and `patch` values will desugar to zero, but also
+allow flexibility within those values, even if the major version is
+zero.
+
+* `^1.x` := `>=1.0.0 <2.0.0`
+* `^0.x` := `>=0.0.0 <1.0.0`
+
+### Range Grammar
+
+Putting all this together, here is a Backus-Naur grammar for ranges,
+for the benefit of parser authors:
+
+```bnf
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
+```
+
+## Functions
+
+All methods and classes take a final `options` object argument. All
+options in this object are `false` by default. The options supported
+are:
+
+- `loose` Be more forgiving about not-quite-valid semver strings.
+ (Any resulting output will always be 100% strict compliant, of
+ course.) For backwards compatibility reasons, if the `options`
+ argument is a boolean value instead of an object, it is interpreted
+ to be the `loose` param.
+- `includePrerelease` Set to suppress the [default
+ behavior](https://github.com/npm/node-semver#prerelease-tags) of
+ excluding prerelease tagged versions from ranges unless they are
+ explicitly opted into.
+
+Strict-mode Comparators and Ranges will be strict about the SemVer
+strings that they parse.
+
+* `valid(v)`: Return the parsed version, or null if it's not valid.
+* `inc(v, release)`: Return the version incremented by the release
+ type (`major`, `premajor`, `minor`, `preminor`, `patch`,
+ `prepatch`, or `prerelease`), or null if it's not valid
+ * `premajor` in one call will bump the version up to the next major
+ version and down to a prerelease of that major version.
+ `preminor`, and `prepatch` work the same way.
+ * If called from a non-prerelease version, the `prerelease` will work the
+ same as `prepatch`. It increments the patch version, then makes a
+ prerelease. If the input version is already a prerelease it simply
+ increments it.
+* `prerelease(v)`: Returns an array of prerelease components, or null
+ if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
+* `major(v)`: Return the major version number.
+* `minor(v)`: Return the minor version number.
+* `patch(v)`: Return the patch version number.
+* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
+ or comparators intersect.
+* `parse(v)`: Attempt to parse a string as a semantic version, returning either
+ a `SemVer` object or `null`.
+
+### Comparison
+
+* `gt(v1, v2)`: `v1 > v2`
+* `gte(v1, v2)`: `v1 >= v2`
+* `lt(v1, v2)`: `v1 < v2`
+* `lte(v1, v2)`: `v1 <= v2`
+* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
+ even if they're not the exact same string. You already know how to
+ compare strings.
+* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
+* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
+ the corresponding function above. `"==="` and `"!=="` do simple
+ string comparison, but are included for completeness. Throws if an
+ invalid comparison string is provided.
+* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `rcompare(v1, v2)`: The reverse of compare. Sorts an array of versions
+ in descending order when passed to `Array.sort()`.
+* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
+ are equal. Sorts in ascending order if passed to `Array.sort()`.
+ `v2` is greater. Sorts in ascending order if passed to `Array.sort()`.
+* `diff(v1, v2)`: Returns difference between two versions by the release type
+ (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
+ or null if the versions are the same.
+
+### Comparators
+
+* `intersects(comparator)`: Return true if the comparators intersect
+
+### Ranges
+
+* `validRange(range)`: Return the valid range or null if it's not valid
+* `satisfies(version, range)`: Return true if the version satisfies the
+ range.
+* `maxSatisfying(versions, range)`: Return the highest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minSatisfying(versions, range)`: Return the lowest version in the list
+ that satisfies the range, or `null` if none of them do.
+* `minVersion(range)`: Return the lowest version that can possibly match
+ the given range.
+* `gtr(version, range)`: Return `true` if version is greater than all the
+ versions possible in the range.
+* `ltr(version, range)`: Return `true` if version is less than all the
+ versions possible in the range.
+* `outside(version, range, hilo)`: Return true if the version is outside
+ the bounds of the range in either the high or low direction. The
+ `hilo` argument must be either the string `'>'` or `'<'`. (This is
+ the function called by `gtr` and `ltr`.)
+* `intersects(range)`: Return true if any of the ranges comparators intersect
+
+Note that, since ranges may be non-contiguous, a version might not be
+greater than a range, less than a range, *or* satisfy a range! For
+example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
+until `2.0.0`, so the version `1.2.10` would not be greater than the
+range (because `2.0.1` satisfies, which is higher), nor less than the
+range (since `1.2.8` satisfies, which is lower), and it also does not
+satisfy the range.
+
+If you want to know if a version satisfies or does not satisfy a
+range, use the `satisfies(version, range)` function.
+
+### Coercion
+
+* `coerce(version, options)`: Coerces a string to semver if possible
+
+This aims to provide a very forgiving translation of a non-semver string to
+semver. It looks for the first digit in a string, and consumes all
+remaining characters which satisfy at least a partial semver (e.g., `1`,
+`1.2`, `1.2.3`) up to the max permitted length (256 characters). Longer
+versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`). All
+surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
+`3.4.0`). Only text which lacks digits will fail coercion (`version one`
+is not valid). The maximum length for any semver component considered for
+coercion is 16 characters; longer components will be ignored
+(`10000000000000000.4.7.4` becomes `4.7.4`). The maximum value for any
+semver component is `Integer.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
+components are invalid (`9999999999999999.4.7.4` is likely invalid).
+
+If the `options.rtl` flag is set, then `coerce` will return the right-most
+coercible tuple that does not share an ending index with a longer coercible
+tuple. For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
+`4.0.0`. `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
+any other overlapping SemVer tuple.
+
+### Clean
+
+* `clean(version)`: Clean a string to be a valid semver if possible
+
+This will return a cleaned and trimmed semver version. If the provided version is not valid a null will be returned. This does not work for ranges.
+
+ex.
+* `s.clean(' = v 2.1.5foo')`: `null`
+* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean(' = v 2.1.5-foo')`: `null`
+* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
+* `s.clean('=v2.1.5')`: `'2.1.5'`
+* `s.clean(' =v2.1.5')`: `2.1.5`
+* `s.clean(' 2.1.5 ')`: `'2.1.5'`
+* `s.clean('~1.0.0')`: `null`
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js
new file mode 100755
index 0000000000..666034a75d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/bin/semver.js
@@ -0,0 +1,174 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+var argv = process.argv.slice(2)
+
+var versions = []
+
+var range = []
+
+var inc = null
+
+var version = require('../package.json').version
+
+var loose = false
+
+var includePrerelease = false
+
+var coerce = false
+
+var rtl = false
+
+var identifier
+
+var semver = require('../semver')
+
+var reverse = false
+
+var options = {}
+
+main()
+
+function main () {
+ if (!argv.length) return help()
+ while (argv.length) {
+ var a = argv.shift()
+ var indexOfEqualSign = a.indexOf('=')
+ if (indexOfEqualSign !== -1) {
+ a = a.slice(0, indexOfEqualSign)
+ argv.unshift(a.slice(indexOfEqualSign + 1))
+ }
+ switch (a) {
+ case '-rv': case '-rev': case '--rev': case '--reverse':
+ reverse = true
+ break
+ case '-l': case '--loose':
+ loose = true
+ break
+ case '-p': case '--include-prerelease':
+ includePrerelease = true
+ break
+ case '-v': case '--version':
+ versions.push(argv.shift())
+ break
+ case '-i': case '--inc': case '--increment':
+ switch (argv[0]) {
+ case 'major': case 'minor': case 'patch': case 'prerelease':
+ case 'premajor': case 'preminor': case 'prepatch':
+ inc = argv.shift()
+ break
+ default:
+ inc = 'patch'
+ break
+ }
+ break
+ case '--preid':
+ identifier = argv.shift()
+ break
+ case '-r': case '--range':
+ range.push(argv.shift())
+ break
+ case '-c': case '--coerce':
+ coerce = true
+ break
+ case '--rtl':
+ rtl = true
+ break
+ case '--ltr':
+ rtl = false
+ break
+ case '-h': case '--help': case '-?':
+ return help()
+ default:
+ versions.push(a)
+ break
+ }
+ }
+
+ var options = { loose: loose, includePrerelease: includePrerelease, rtl: rtl }
+
+ versions = versions.map(function (v) {
+ return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+ }).filter(function (v) {
+ return semver.valid(v)
+ })
+ if (!versions.length) return fail()
+ if (inc && (versions.length !== 1 || range.length)) { return failInc() }
+
+ for (var i = 0, l = range.length; i < l; i++) {
+ versions = versions.filter(function (v) {
+ return semver.satisfies(v, range[i], options)
+ })
+ if (!versions.length) return fail()
+ }
+ return success(versions)
+}
+
+function failInc () {
+ console.error('--inc can only be used on a single version with no range')
+ fail()
+}
+
+function fail () { process.exit(1) }
+
+function success () {
+ var compare = reverse ? 'rcompare' : 'compare'
+ versions.sort(function (a, b) {
+ return semver[compare](a, b, options)
+ }).map(function (v) {
+ return semver.clean(v, options)
+ }).map(function (v) {
+ return inc ? semver.inc(v, inc, options, identifier) : v
+ }).forEach(function (v, i, _) { console.log(v) })
+}
+
+function help () {
+ console.log(['SemVer ' + version,
+ '',
+ 'A JavaScript implementation of the https://semver.org/ specification',
+ 'Copyright Isaac Z. Schlueter',
+ '',
+ 'Usage: semver [options] <version> [<version> [...]]',
+ 'Prints valid versions sorted by SemVer precedence',
+ '',
+ 'Options:',
+ '-r --range <range>',
+ ' Print versions that match the specified range.',
+ '',
+ '-i --increment [<level>]',
+ ' Increment a version by the specified level. Level can',
+ ' be one of: major, minor, patch, premajor, preminor,',
+ " prepatch, or prerelease. Default level is 'patch'.",
+ ' Only one version may be specified.',
+ '',
+ '--preid <identifier>',
+ ' Identifier to be used to prefix premajor, preminor,',
+ ' prepatch or prerelease version increments.',
+ '',
+ '-l --loose',
+ ' Interpret versions and ranges loosely',
+ '',
+ '-p --include-prerelease',
+ ' Always include prerelease versions in range matching',
+ '',
+ '-c --coerce',
+ ' Coerce a string into SemVer if possible',
+ ' (does not imply --loose)',
+ '',
+ '--rtl',
+ ' Coerce version strings right to left',
+ '',
+ '--ltr',
+ ' Coerce version strings left to right (default)',
+ '',
+ 'Program exits successfully if any valid version satisfies',
+ 'all supplied ranges, and prints all satisfying versions.',
+ '',
+ 'If no satisfying versions are found, then exits failure.',
+ '',
+ 'Versions are printed in ascending order, so supplying',
+ 'multiple versions to the utility will just sort them.'
+ ].join('\n'))
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json
new file mode 100644
index 0000000000..bdd442f500
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "semver",
+ "version": "6.3.0",
+ "description": "The semantic version parser used by npm.",
+ "main": "semver.js",
+ "scripts": {
+ "test": "tap",
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "postpublish": "git push origin --follow-tags"
+ },
+ "devDependencies": {
+ "tap": "^14.3.1"
+ },
+ "license": "ISC",
+ "repository": "https://github.com/npm/node-semver",
+ "bin": {
+ "semver": "./bin/semver.js"
+ },
+ "files": [
+ "bin",
+ "range.bnf",
+ "semver.js"
+ ],
+ "tap": {
+ "check-coverage": true
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/range.bnf b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/range.bnf
new file mode 100644
index 0000000000..d4c6ae0d76
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/range.bnf
@@ -0,0 +1,16 @@
+range-set ::= range ( logical-or range ) *
+logical-or ::= ( ' ' ) * '||' ( ' ' ) *
+range ::= hyphen | simple ( ' ' simple ) * | ''
+hyphen ::= partial ' - ' partial
+simple ::= primitive | partial | tilde | caret
+primitive ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
+partial ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
+xr ::= 'x' | 'X' | '*' | nr
+nr ::= '0' | [1-9] ( [0-9] ) *
+tilde ::= '~' partial
+caret ::= '^' partial
+qualifier ::= ( '-' pre )? ( '+' build )?
+pre ::= parts
+build ::= parts
+parts ::= part ( '.' part ) *
+part ::= nr | [-0-9A-Za-z]+
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/semver.js b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/semver.js
new file mode 100644
index 0000000000..636fa4365a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/node_modules/semver/semver.js
@@ -0,0 +1,1596 @@
+exports = module.exports = SemVer
+
+var debug
+/* istanbul ignore next */
+if (typeof process === 'object' &&
+ process.env &&
+ process.env.NODE_DEBUG &&
+ /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function () {
+ var args = Array.prototype.slice.call(arguments, 0)
+ args.unshift('SEMVER')
+ console.log.apply(console, args)
+ }
+} else {
+ debug = function () {}
+}
+
+// Note: this is the semver.org version of the spec that it implements
+// Not necessarily the package version of this code.
+exports.SEMVER_SPEC_VERSION = '2.0.0'
+
+var MAX_LENGTH = 256
+var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */ 9007199254740991
+
+// Max safe segment length for coercion.
+var MAX_SAFE_COMPONENT_LENGTH = 16
+
+// The actual regexps go on exports.re
+var re = exports.re = []
+var src = exports.src = []
+var t = exports.tokens = {}
+var R = 0
+
+function tok (n) {
+ t[n] = R++
+}
+
+// The following Regular Expressions can be used for tokenizing,
+// validating, and parsing SemVer version strings.
+
+// ## Numeric Identifier
+// A single `0`, or a non-zero digit followed by zero or more digits.
+
+tok('NUMERICIDENTIFIER')
+src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*'
+tok('NUMERICIDENTIFIERLOOSE')
+src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'
+
+// ## Non-numeric Identifier
+// Zero or more digits, followed by a letter or hyphen, and then zero or
+// more letters, digits, or hyphens.
+
+tok('NONNUMERICIDENTIFIER')
+src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'
+
+// ## Main Version
+// Three dot-separated numeric identifiers.
+
+tok('MAINVERSION')
+src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIER] + ')'
+
+tok('MAINVERSIONLOOSE')
+src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' +
+ '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'
+
+// ## Pre-release Version Identifier
+// A numeric identifier, or a non-numeric identifier.
+
+tok('PRERELEASEIDENTIFIER')
+src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+tok('PRERELEASEIDENTIFIERLOOSE')
+src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +
+ '|' + src[t.NONNUMERICIDENTIFIER] + ')'
+
+// ## Pre-release Version
+// Hyphen, followed by one or more dot-separated pre-release version
+// identifiers.
+
+tok('PRERELEASE')
+src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'
+
+tok('PRERELEASELOOSE')
+src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +
+ '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'
+
+// ## Build Metadata Identifier
+// Any combination of digits, letters, or hyphens.
+
+tok('BUILDIDENTIFIER')
+src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'
+
+// ## Build Metadata
+// Plus sign, followed by one or more period-separated build metadata
+// identifiers.
+
+tok('BUILD')
+src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] +
+ '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'
+
+// ## Full Version String
+// A main version, followed optionally by a pre-release version and
+// build metadata.
+
+// Note that the only major, minor, patch, and pre-release sections of
+// the version string are capturing groups. The build metadata is not a
+// capturing group, because it should not ever be used in version
+// comparison.
+
+tok('FULL')
+tok('FULLPLAIN')
+src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +
+ src[t.PRERELEASE] + '?' +
+ src[t.BUILD] + '?'
+
+src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'
+
+// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+// common in the npm registry.
+tok('LOOSEPLAIN')
+src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] +
+ src[t.PRERELEASELOOSE] + '?' +
+ src[t.BUILD] + '?'
+
+tok('LOOSE')
+src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'
+
+tok('GTLT')
+src[t.GTLT] = '((?:<|>)?=?)'
+
+// Something like "2.*" or "1.2.x".
+// Note that "x.x" is a valid xRange identifer, meaning "any version"
+// Only the first item is strictly required.
+tok('XRANGEIDENTIFIERLOOSE')
+src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'
+tok('XRANGEIDENTIFIER')
+src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*'
+
+tok('XRANGEPLAIN')
+src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' +
+ '(?:' + src[t.PRERELEASE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGEPLAINLOOSE')
+src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +
+ '(?:' + src[t.PRERELEASELOOSE] + ')?' +
+ src[t.BUILD] + '?' +
+ ')?)?'
+
+tok('XRANGE')
+src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$'
+tok('XRANGELOOSE')
+src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Coercion.
+// Extract anything that could conceivably be a part of a valid semver
+tok('COERCE')
+src[t.COERCE] = '(^|[^\\d])' +
+ '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +
+ '(?:$|[^\\d])'
+tok('COERCERTL')
+re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')
+
+// Tilde ranges.
+// Meaning is "reasonably at or greater than"
+tok('LONETILDE')
+src[t.LONETILDE] = '(?:~>?)'
+
+tok('TILDETRIM')
+src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+'
+re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')
+var tildeTrimReplace = '$1~'
+
+tok('TILDE')
+src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'
+tok('TILDELOOSE')
+src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// Caret ranges.
+// Meaning is "at least and backwards compatible with"
+tok('LONECARET')
+src[t.LONECARET] = '(?:\\^)'
+
+tok('CARETTRIM')
+src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+'
+re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')
+var caretTrimReplace = '$1^'
+
+tok('CARET')
+src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'
+tok('CARETLOOSE')
+src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'
+
+// A simple gt/lt/eq thing, or just "" to indicate "any version"
+tok('COMPARATORLOOSE')
+src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'
+tok('COMPARATOR')
+src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'
+
+// An expression to strip any whitespace between the gtlt and the thing
+// it modifies, so that `> 1.2.3` ==> `>1.2.3`
+tok('COMPARATORTRIM')
+src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] +
+ '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'
+
+// this one has to use the /g flag
+re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')
+var comparatorTrimReplace = '$1$2$3'
+
+// Something like `1.2.3 - 1.2.4`
+// Note that these all use the loose form, because they'll be
+// checked against either the strict or loose comparator form
+// later.
+tok('HYPHENRANGE')
+src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAIN] + ')' +
+ '\\s*$'
+
+tok('HYPHENRANGELOOSE')
+src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s+-\\s+' +
+ '(' + src[t.XRANGEPLAINLOOSE] + ')' +
+ '\\s*$'
+
+// Star ranges basically just allow anything at all.
+tok('STAR')
+src[t.STAR] = '(<|>)?=?\\s*\\*'
+
+// Compile to actual regexp objects.
+// All are flag-free, unless they were created above with a flag.
+for (var i = 0; i < R; i++) {
+ debug(i, src[i])
+ if (!re[i]) {
+ re[i] = new RegExp(src[i])
+ }
+}
+
+exports.parse = parse
+function parse (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null
+ }
+
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL]
+ if (!r.test(version)) {
+ return null
+ }
+
+ try {
+ return new SemVer(version, options)
+ } catch (er) {
+ return null
+ }
+}
+
+exports.valid = valid
+function valid (version, options) {
+ var v = parse(version, options)
+ return v ? v.version : null
+}
+
+exports.clean = clean
+function clean (version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options)
+ return s ? s.version : null
+}
+
+exports.SemVer = SemVer
+
+function SemVer (version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version
+ } else {
+ version = version.version
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options)
+ }
+
+ debug('SemVer', version, options)
+ this.options = options
+ this.loose = !!options.loose
+
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version)
+ }
+
+ this.raw = version
+
+ // these are actually numbers
+ this.major = +m[1]
+ this.minor = +m[2]
+ this.patch = +m[3]
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version')
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version')
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version')
+ }
+
+ // numberify any prerelease numeric ids
+ if (!m[4]) {
+ this.prerelease = []
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num
+ }
+ }
+ return id
+ })
+ }
+
+ this.build = m[5] ? m[5].split('.') : []
+ this.format()
+}
+
+SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.')
+ }
+ return this.version
+}
+
+SemVer.prototype.toString = function () {
+ return this.version
+}
+
+SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other)
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return this.compareMain(other) || this.comparePre(other)
+}
+
+SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ return compareIdentifiers(this.major, other.major) ||
+ compareIdentifiers(this.minor, other.minor) ||
+ compareIdentifiers(this.patch, other.patch)
+}
+
+SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ // NOT having a prerelease is > having one
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0
+ }
+
+ var i = 0
+ do {
+ var a = this.prerelease[i]
+ var b = other.prerelease[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options)
+ }
+
+ var i = 0
+ do {
+ var a = this.build[i]
+ var b = other.build[i]
+ debug('prerelease compare', i, a, b)
+ if (a === undefined && b === undefined) {
+ return 0
+ } else if (b === undefined) {
+ return 1
+ } else if (a === undefined) {
+ return -1
+ } else if (a === b) {
+ continue
+ } else {
+ return compareIdentifiers(a, b)
+ }
+ } while (++i)
+}
+
+// preminor will bump the version up to the next minor release, and immediately
+// down to pre-release. premajor and prepatch work the same way.
+SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor = 0
+ this.major++
+ this.inc('pre', identifier)
+ break
+ case 'preminor':
+ this.prerelease.length = 0
+ this.patch = 0
+ this.minor++
+ this.inc('pre', identifier)
+ break
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0
+ this.inc('patch', identifier)
+ this.inc('pre', identifier)
+ break
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier)
+ }
+ this.inc('pre', identifier)
+ break
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 ||
+ this.patch !== 0 ||
+ this.prerelease.length === 0) {
+ this.major++
+ }
+ this.minor = 0
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++
+ }
+ this.patch = 0
+ this.prerelease = []
+ break
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++
+ }
+ this.prerelease = []
+ break
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0]
+ } else {
+ var i = this.prerelease.length
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++
+ i = -2
+ }
+ }
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0)
+ }
+ }
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0]
+ }
+ } else {
+ this.prerelease = [identifier, 0]
+ }
+ }
+ break
+
+ default:
+ throw new Error('invalid increment argument: ' + release)
+ }
+ this.format()
+ this.raw = this.version
+ return this
+}
+
+exports.inc = inc
+function inc (version, release, loose, identifier) {
+ if (typeof (loose) === 'string') {
+ identifier = loose
+ loose = undefined
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version
+ } catch (er) {
+ return null
+ }
+}
+
+exports.diff = diff
+function diff (version1, version2) {
+ if (eq(version1, version2)) {
+ return null
+ } else {
+ var v1 = parse(version1)
+ var v2 = parse(version2)
+ var prefix = ''
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre'
+ var defaultResult = 'prerelease'
+ }
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key
+ }
+ }
+ }
+ return defaultResult // may be undefined
+ }
+}
+
+exports.compareIdentifiers = compareIdentifiers
+
+var numeric = /^[0-9]+$/
+function compareIdentifiers (a, b) {
+ var anum = numeric.test(a)
+ var bnum = numeric.test(b)
+
+ if (anum && bnum) {
+ a = +a
+ b = +b
+ }
+
+ return a === b ? 0
+ : (anum && !bnum) ? -1
+ : (bnum && !anum) ? 1
+ : a < b ? -1
+ : 1
+}
+
+exports.rcompareIdentifiers = rcompareIdentifiers
+function rcompareIdentifiers (a, b) {
+ return compareIdentifiers(b, a)
+}
+
+exports.major = major
+function major (a, loose) {
+ return new SemVer(a, loose).major
+}
+
+exports.minor = minor
+function minor (a, loose) {
+ return new SemVer(a, loose).minor
+}
+
+exports.patch = patch
+function patch (a, loose) {
+ return new SemVer(a, loose).patch
+}
+
+exports.compare = compare
+function compare (a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose))
+}
+
+exports.compareLoose = compareLoose
+function compareLoose (a, b) {
+ return compare(a, b, true)
+}
+
+exports.compareBuild = compareBuild
+function compareBuild (a, b, loose) {
+ var versionA = new SemVer(a, loose)
+ var versionB = new SemVer(b, loose)
+ return versionA.compare(versionB) || versionA.compareBuild(versionB)
+}
+
+exports.rcompare = rcompare
+function rcompare (a, b, loose) {
+ return compare(b, a, loose)
+}
+
+exports.sort = sort
+function sort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose)
+ })
+}
+
+exports.rsort = rsort
+function rsort (list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose)
+ })
+}
+
+exports.gt = gt
+function gt (a, b, loose) {
+ return compare(a, b, loose) > 0
+}
+
+exports.lt = lt
+function lt (a, b, loose) {
+ return compare(a, b, loose) < 0
+}
+
+exports.eq = eq
+function eq (a, b, loose) {
+ return compare(a, b, loose) === 0
+}
+
+exports.neq = neq
+function neq (a, b, loose) {
+ return compare(a, b, loose) !== 0
+}
+
+exports.gte = gte
+function gte (a, b, loose) {
+ return compare(a, b, loose) >= 0
+}
+
+exports.lte = lte
+function lte (a, b, loose) {
+ return compare(a, b, loose) <= 0
+}
+
+exports.cmp = cmp
+function cmp (a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a === b
+
+ case '!==':
+ if (typeof a === 'object')
+ a = a.version
+ if (typeof b === 'object')
+ b = b.version
+ return a !== b
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose)
+
+ case '!=':
+ return neq(a, b, loose)
+
+ case '>':
+ return gt(a, b, loose)
+
+ case '>=':
+ return gte(a, b, loose)
+
+ case '<':
+ return lt(a, b, loose)
+
+ case '<=':
+ return lte(a, b, loose)
+
+ default:
+ throw new TypeError('Invalid operator: ' + op)
+ }
+}
+
+exports.Comparator = Comparator
+function Comparator (comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp
+ } else {
+ comp = comp.value
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options)
+ }
+
+ debug('comparator', comp, options)
+ this.options = options
+ this.loose = !!options.loose
+ this.parse(comp)
+
+ if (this.semver === ANY) {
+ this.value = ''
+ } else {
+ this.value = this.operator + this.semver.version
+ }
+
+ debug('comp', this)
+}
+
+var ANY = {}
+Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var m = comp.match(r)
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp)
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : ''
+ if (this.operator === '=') {
+ this.operator = ''
+ }
+
+ // if it literally is just '>' or '' then allow anything.
+ if (!m[2]) {
+ this.semver = ANY
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose)
+ }
+}
+
+Comparator.prototype.toString = function () {
+ return this.value
+}
+
+Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose)
+
+ if (this.semver === ANY || version === ANY) {
+ return true
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options)
+}
+
+Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required')
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ var rangeTmp
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true
+ }
+ rangeTmp = new Range(comp.value, options)
+ return satisfies(this.value, rangeTmp, options)
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true
+ }
+ rangeTmp = new Range(this.value, options)
+ return satisfies(comp.semver, rangeTmp, options)
+ }
+
+ var sameDirectionIncreasing =
+ (this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '>=' || comp.operator === '>')
+ var sameDirectionDecreasing =
+ (this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '<=' || comp.operator === '<')
+ var sameSemVer = this.semver.version === comp.semver.version
+ var differentDirectionsInclusive =
+ (this.operator === '>=' || this.operator === '<=') &&
+ (comp.operator === '>=' || comp.operator === '<=')
+ var oppositeDirectionsLessThan =
+ cmp(this.semver, '<', comp.semver, options) &&
+ ((this.operator === '>=' || this.operator === '>') &&
+ (comp.operator === '<=' || comp.operator === '<'))
+ var oppositeDirectionsGreaterThan =
+ cmp(this.semver, '>', comp.semver, options) &&
+ ((this.operator === '<=' || this.operator === '<') &&
+ (comp.operator === '>=' || comp.operator === '>'))
+
+ return sameDirectionIncreasing || sameDirectionDecreasing ||
+ (sameSemVer && differentDirectionsInclusive) ||
+ oppositeDirectionsLessThan || oppositeDirectionsGreaterThan
+}
+
+exports.Range = Range
+function Range (range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ }
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose &&
+ range.includePrerelease === !!options.includePrerelease) {
+ return range
+ } else {
+ return new Range(range.raw, options)
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options)
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options)
+ }
+
+ this.options = options
+ this.loose = !!options.loose
+ this.includePrerelease = !!options.includePrerelease
+
+ // First, split based on boolean or ||
+ this.raw = range
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim())
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length
+ })
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range)
+ }
+
+ this.format()
+}
+
+Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim()
+ }).join('||').trim()
+ return this.range
+}
+
+Range.prototype.toString = function () {
+ return this.range
+}
+
+Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose
+ range = range.trim()
+ // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
+ range = range.replace(hr, hyphenReplace)
+ debug('hyphen replace', range)
+ // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
+ debug('comparator trim', range, re[t.COMPARATORTRIM])
+
+ // `~ 1.2.3` => `~1.2.3`
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
+
+ // `^ 1.2.3` => `^1.2.3`
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace)
+
+ // normalize spaces
+ range = range.split(/\s+/).join(' ')
+
+ // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options)
+ }, this).join(' ').split(/\s+/)
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe)
+ })
+ }
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options)
+ }, this)
+
+ return set
+}
+
+Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required')
+ }
+
+ return this.set.some(function (thisComparators) {
+ return (
+ isSatisfiable(thisComparators, options) &&
+ range.set.some(function (rangeComparators) {
+ return (
+ isSatisfiable(rangeComparators, options) &&
+ thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options)
+ })
+ })
+ )
+ })
+ )
+ })
+}
+
+// take a set of comparators and determine whether there
+// exists a version which can satisfy it
+function isSatisfiable (comparators, options) {
+ var result = true
+ var remainingComparators = comparators.slice()
+ var testComparator = remainingComparators.pop()
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options)
+ })
+
+ testComparator = remainingComparators.pop()
+ }
+
+ return result
+}
+
+// Mostly just for testing and legacy API reasons
+exports.toComparators = toComparators
+function toComparators (range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value
+ }).join(' ').trim().split(' ')
+ })
+}
+
+// comprised of xranges, tildes, stars, and gtlt's at this point.
+// already replaced the hyphen ranges
+// turn into a set of JUST comparators.
+function parseComparator (comp, options) {
+ debug('comp', comp, options)
+ comp = replaceCarets(comp, options)
+ debug('caret', comp)
+ comp = replaceTildes(comp, options)
+ debug('tildes', comp)
+ comp = replaceXRanges(comp, options)
+ debug('xrange', comp)
+ comp = replaceStars(comp, options)
+ debug('stars', comp)
+ return comp
+}
+
+function isX (id) {
+ return !id || id.toLowerCase() === 'x' || id === '*'
+}
+
+// ~, ~> --> * (any, kinda silly)
+// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+function replaceTildes (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options)
+ }).join(' ')
+}
+
+function replaceTilde (comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else if (pr) {
+ debug('replaceTilde pr', pr)
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+
+ debug('tilde return', ret)
+ return ret
+ })
+}
+
+// ^ --> * (any, kinda silly)
+// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+// ^1.2.3 --> >=1.2.3 <2.0.0
+// ^1.2.0 --> >=1.2.0 <2.0.0
+function replaceCarets (comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options)
+ }).join(' ')
+}
+
+function replaceCaret (comp, options) {
+ debug('caret', comp, options)
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr)
+ var ret
+
+ if (isX(M)) {
+ ret = ''
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr)
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ } else {
+ debug('no pr')
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + m + '.' + (+p + 1)
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + M + '.' + (+m + 1) + '.0'
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p +
+ ' <' + (+M + 1) + '.0.0'
+ }
+ }
+
+ debug('caret return', ret)
+ return ret
+ })
+}
+
+function replaceXRanges (comp, options) {
+ debug('replaceXRanges', comp, options)
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options)
+ }).join(' ')
+}
+
+function replaceXRange (comp, options) {
+ comp = comp.trim()
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr)
+ var xM = isX(M)
+ var xm = xM || isX(m)
+ var xp = xm || isX(p)
+ var anyX = xp
+
+ if (gtlt === '=' && anyX) {
+ gtlt = ''
+ }
+
+ // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+ pr = options.includePrerelease ? '-0' : ''
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0'
+ } else {
+ // nothing is forbidden
+ ret = '*'
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0
+ }
+ p = 0
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>='
+ if (xm) {
+ M = +M + 1
+ m = 0
+ p = 0
+ } else {
+ m = +m + 1
+ p = 0
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<'
+ if (xm) {
+ M = +M + 1
+ } else {
+ m = +m + 1
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr +
+ ' <' + M + '.' + (+m + 1) + '.0' + pr
+ }
+
+ debug('xRange return', ret)
+
+ return ret
+ })
+}
+
+// Because * is AND-ed with everything else in the comparator,
+// and '' means "any version", just remove the *s entirely.
+function replaceStars (comp, options) {
+ debug('replaceStars', comp, options)
+ // Looseness is ignored here. star is always as loose as it gets!
+ return comp.trim().replace(re[t.STAR], '')
+}
+
+// This function is passed to string.replace(re[t.HYPHENRANGE])
+// M, m, patch, prerelease, build
+// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+// 1.2 - 3.4 => >=1.2.0 <3.5.0
+function hyphenReplace ($0,
+ from, fM, fm, fp, fpr, fb,
+ to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = ''
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0'
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0'
+ } else {
+ from = '>=' + from
+ }
+
+ if (isX(tM)) {
+ to = ''
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0'
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0'
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr
+ } else {
+ to = '<=' + to
+ }
+
+ return (from + ' ' + to).trim()
+}
+
+// if ANY of the sets match ALL of its comparators, then pass
+Range.prototype.test = function (version) {
+ if (!version) {
+ return false
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options)
+ } catch (er) {
+ return false
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true
+ }
+ }
+ return false
+}
+
+function testSet (set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver)
+ if (set[i].semver === ANY) {
+ continue
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver
+ if (allowed.major === version.major &&
+ allowed.minor === version.minor &&
+ allowed.patch === version.patch) {
+ return true
+ }
+ }
+ }
+
+ // Version has a -pre, but it's not one of the ones we like.
+ return false
+ }
+
+ return true
+}
+
+exports.satisfies = satisfies
+function satisfies (version, range, options) {
+ try {
+ range = new Range(range, options)
+ } catch (er) {
+ return false
+ }
+ return range.test(version)
+}
+
+exports.maxSatisfying = maxSatisfying
+function maxSatisfying (versions, range, options) {
+ var max = null
+ var maxSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v
+ maxSV = new SemVer(max, options)
+ }
+ }
+ })
+ return max
+}
+
+exports.minSatisfying = minSatisfying
+function minSatisfying (versions, range, options) {
+ var min = null
+ var minSV = null
+ try {
+ var rangeObj = new Range(range, options)
+ } catch (er) {
+ return null
+ }
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v
+ minSV = new SemVer(min, options)
+ }
+ }
+ })
+ return min
+}
+
+exports.minVersion = minVersion
+function minVersion (range, loose) {
+ range = new Range(range, loose)
+
+ var minver = new SemVer('0.0.0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = new SemVer('0.0.0-0')
+ if (range.test(minver)) {
+ return minver
+ }
+
+ minver = null
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version)
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++
+ } else {
+ compver.prerelease.push(0)
+ }
+ compver.raw = compver.format()
+ /* fallthrough */
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver
+ }
+ break
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break
+ /* istanbul ignore next */
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator)
+ }
+ })
+ }
+
+ if (minver && range.test(minver)) {
+ return minver
+ }
+
+ return null
+}
+
+exports.validRange = validRange
+function validRange (range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*'
+ } catch (er) {
+ return null
+ }
+}
+
+// Determine if version is less than all the versions possible in the range
+exports.ltr = ltr
+function ltr (version, range, options) {
+ return outside(version, range, '<', options)
+}
+
+// Determine if version is greater than all the versions possible in the range.
+exports.gtr = gtr
+function gtr (version, range, options) {
+ return outside(version, range, '>', options)
+}
+
+exports.outside = outside
+function outside (version, range, hilo, options) {
+ version = new SemVer(version, options)
+ range = new Range(range, options)
+
+ var gtfn, ltefn, ltfn, comp, ecomp
+ switch (hilo) {
+ case '>':
+ gtfn = gt
+ ltefn = lte
+ ltfn = lt
+ comp = '>'
+ ecomp = '>='
+ break
+ case '<':
+ gtfn = lt
+ ltefn = gte
+ ltfn = gt
+ comp = '<'
+ ecomp = '<='
+ break
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"')
+ }
+
+ // If it satisifes the range it is not outside
+ if (satisfies(version, range, options)) {
+ return false
+ }
+
+ // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i]
+
+ var high = null
+ var low = null
+
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0')
+ }
+ high = high || comparator
+ low = low || comparator
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator
+ }
+ })
+
+ // If the edge version comparator has a operator then our version
+ // isn't outside it
+ if (high.operator === comp || high.operator === ecomp) {
+ return false
+ }
+
+ // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+ if ((!low.operator || low.operator === comp) &&
+ ltefn(version, low.semver)) {
+ return false
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false
+ }
+ }
+ return true
+}
+
+exports.prerelease = prerelease
+function prerelease (version, options) {
+ var parsed = parse(version, options)
+ return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
+}
+
+exports.intersects = intersects
+function intersects (r1, r2, options) {
+ r1 = new Range(r1, options)
+ r2 = new Range(r2, options)
+ return r1.intersects(r2)
+}
+
+exports.coerce = coerce
+function coerce (version, options) {
+ if (version instanceof SemVer) {
+ return version
+ }
+
+ if (typeof version === 'number') {
+ version = String(version)
+ }
+
+ if (typeof version !== 'string') {
+ return null
+ }
+
+ options = options || {}
+
+ var match = null
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE])
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next
+ while ((next = re[t.COERCERTL].exec(version)) &&
+ (!match || match.index + match[0].length !== version.length)
+ ) {
+ if (!match ||
+ next.index + next[0].length !== match.index + match[0].length) {
+ match = next
+ }
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
+ }
+ // leave it in a clean state
+ re[t.COERCERTL].lastIndex = -1
+ }
+
+ if (match === null) {
+ return null
+ }
+
+ return parse(match[2] +
+ '.' + (match[3] || '0') +
+ '.' + (match[4] || '0'), options)
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json
new file mode 100644
index 0000000000..e6284e0dca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-compilation-targets/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@babel/helper-compilation-targets",
+ "version": "7.16.3",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "license": "MIT",
+ "description": "Helper functions on Babel compilation targets",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-compilation-targets"
+ },
+ "main": "./lib/index.js",
+ "exports": {
+ ".": "./lib/index.js"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "keywords": [
+ "babel",
+ "babel-plugin"
+ ],
+ "dependencies": {
+ "@babel/compat-data": "^7.16.0",
+ "@babel/helper-validator-option": "^7.14.5",
+ "browserslist": "^4.17.5",
+ "semver": "^6.3.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.16.0",
+ "@babel/helper-plugin-test-runner": "^7.16.0",
+ "@types/semver": "^5.5.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/README.md
new file mode 100644
index 0000000000..36a65931b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-function-name
+
+> Helper function to change the property 'name' of every function
+
+See our website [@babel/helper-function-name](https://babeljs.io/docs/en/babel-helper-function-name) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-function-name
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-function-name --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js
new file mode 100644
index 0000000000..59e88e9b59
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/lib/index.js
@@ -0,0 +1,188 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+var _helperGetFunctionArity = require("@babel/helper-get-function-arity");
+
+var _template = require("@babel/template");
+
+var _t = require("@babel/types");
+
+const {
+ NOT_LOCAL_BINDING,
+ cloneNode,
+ identifier,
+ isAssignmentExpression,
+ isFunction,
+ isIdentifier,
+ isLiteral,
+ isNullLiteral,
+ isObjectMethod,
+ isObjectProperty,
+ isRegExpLiteral,
+ isTemplateLiteral,
+ isVariableDeclarator,
+ toBindingIdentifierName
+} = _t;
+const buildPropertyMethodAssignmentWrapper = (0, _template.default)(`
+ (function (FUNCTION_KEY) {
+ function FUNCTION_ID() {
+ return FUNCTION_KEY.apply(this, arguments);
+ }
+
+ FUNCTION_ID.toString = function () {
+ return FUNCTION_KEY.toString();
+ }
+
+ return FUNCTION_ID;
+ })(FUNCTION)
+`);
+const buildGeneratorPropertyMethodAssignmentWrapper = (0, _template.default)(`
+ (function (FUNCTION_KEY) {
+ function* FUNCTION_ID() {
+ return yield* FUNCTION_KEY.apply(this, arguments);
+ }
+
+ FUNCTION_ID.toString = function () {
+ return FUNCTION_KEY.toString();
+ };
+
+ return FUNCTION_ID;
+ })(FUNCTION)
+`);
+const visitor = {
+ "ReferencedIdentifier|BindingIdentifier"(path, state) {
+ if (path.node.name !== state.name) return;
+ const localDeclar = path.scope.getBindingIdentifier(state.name);
+ if (localDeclar !== state.outerDeclar) return;
+ state.selfReference = true;
+ path.stop();
+ }
+
+};
+
+function getNameFromLiteralId(id) {
+ if (isNullLiteral(id)) {
+ return "null";
+ }
+
+ if (isRegExpLiteral(id)) {
+ return `_${id.pattern}_${id.flags}`;
+ }
+
+ if (isTemplateLiteral(id)) {
+ return id.quasis.map(quasi => quasi.value.raw).join("");
+ }
+
+ if (id.value !== undefined) {
+ return id.value + "";
+ }
+
+ return "";
+}
+
+function wrap(state, method, id, scope) {
+ if (state.selfReference) {
+ if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {
+ scope.rename(id.name);
+ } else {
+ if (!isFunction(method)) return;
+ let build = buildPropertyMethodAssignmentWrapper;
+
+ if (method.generator) {
+ build = buildGeneratorPropertyMethodAssignmentWrapper;
+ }
+
+ const template = build({
+ FUNCTION: method,
+ FUNCTION_ID: id,
+ FUNCTION_KEY: scope.generateUidIdentifier(id.name)
+ }).expression;
+ const params = template.callee.body.body[0].params;
+
+ for (let i = 0, len = (0, _helperGetFunctionArity.default)(method); i < len; i++) {
+ params.push(scope.generateUidIdentifier("x"));
+ }
+
+ return template;
+ }
+ }
+
+ method.id = id;
+ scope.getProgramParent().references[id.name] = true;
+}
+
+function visit(node, name, scope) {
+ const state = {
+ selfAssignment: false,
+ selfReference: false,
+ outerDeclar: scope.getBindingIdentifier(name),
+ references: [],
+ name: name
+ };
+ const binding = scope.getOwnBinding(name);
+
+ if (binding) {
+ if (binding.kind === "param") {
+ state.selfReference = true;
+ } else {}
+ } else if (state.outerDeclar || scope.hasGlobal(name)) {
+ scope.traverse(node, visitor, state);
+ }
+
+ return state;
+}
+
+function _default({
+ node,
+ parent,
+ scope,
+ id
+}, localBinding = false) {
+ if (node.id) return;
+
+ if ((isObjectProperty(parent) || isObjectMethod(parent, {
+ kind: "method"
+ })) && (!parent.computed || isLiteral(parent.key))) {
+ id = parent.key;
+ } else if (isVariableDeclarator(parent)) {
+ id = parent.id;
+
+ if (isIdentifier(id) && !localBinding) {
+ const binding = scope.parent.getBinding(id.name);
+
+ if (binding && binding.constant && scope.getBinding(id.name) === binding) {
+ node.id = cloneNode(id);
+ node.id[NOT_LOCAL_BINDING] = true;
+ return;
+ }
+ }
+ } else if (isAssignmentExpression(parent, {
+ operator: "="
+ })) {
+ id = parent.left;
+ } else if (!id) {
+ return;
+ }
+
+ let name;
+
+ if (id && isLiteral(id)) {
+ name = getNameFromLiteralId(id);
+ } else if (id && isIdentifier(id)) {
+ name = id.name;
+ }
+
+ if (name === undefined) {
+ return;
+ }
+
+ name = toBindingIdentifierName(name);
+ id = identifier(name);
+ id[NOT_LOCAL_BINDING] = true;
+ const state = visit(node, name, scope);
+ return wrap(state, node, id, scope) || node;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json
new file mode 100644
index 0000000000..ff34b5c38a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-function-name/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "@babel/helper-function-name",
+ "version": "7.16.0",
+ "description": "Helper function to change the property 'name' of every function",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-function-name"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-function-name",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-get-function-arity": "^7.16.0",
+ "@babel/template": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/README.md
new file mode 100644
index 0000000000..8fa48c13e7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-get-function-arity
+
+> Helper function to get function arity
+
+See our website [@babel/helper-get-function-arity](https://babeljs.io/docs/en/babel-helper-get-function-arity) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-get-function-arity
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-get-function-arity --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/lib/index.js
new file mode 100644
index 0000000000..61e22edd29
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/lib/index.js
@@ -0,0 +1,27 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+var _t = require("@babel/types");
+
+const {
+ isAssignmentPattern,
+ isRestElement
+} = _t;
+
+function _default(node) {
+ const params = node.params;
+
+ for (let i = 0; i < params.length; i++) {
+ const param = params[i];
+
+ if (isAssignmentPattern(param) || isRestElement(param)) {
+ return i;
+ }
+ }
+
+ return params.length;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json
new file mode 100644
index 0000000000..e7b4936eb6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-get-function-arity/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@babel/helper-get-function-arity",
+ "version": "7.16.0",
+ "description": "Helper function to get function arity",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-get-function-arity"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-get-function-arity",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/README.md
new file mode 100644
index 0000000000..d3eb8fc4c9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-hoist-variables
+
+> Helper function to hoist variables
+
+See our website [@babel/helper-hoist-variables](https://babeljs.io/docs/en/babel-helper-hoist-variables) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-hoist-variables
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-hoist-variables --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/lib/index.js
new file mode 100644
index 0000000000..31fb8470e6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/lib/index.js
@@ -0,0 +1,58 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = hoistVariables;
+
+var _t = require("@babel/types");
+
+const {
+ assignmentExpression,
+ expressionStatement,
+ identifier
+} = _t;
+const visitor = {
+ Scope(path, state) {
+ if (state.kind === "let") path.skip();
+ },
+
+ FunctionParent(path) {
+ path.skip();
+ },
+
+ VariableDeclaration(path, state) {
+ if (state.kind && path.node.kind !== state.kind) return;
+ const nodes = [];
+ const declarations = path.get("declarations");
+ let firstId;
+
+ for (const declar of declarations) {
+ firstId = declar.node.id;
+
+ if (declar.node.init) {
+ nodes.push(expressionStatement(assignmentExpression("=", declar.node.id, declar.node.init)));
+ }
+
+ for (const name of Object.keys(declar.getBindingIdentifiers())) {
+ state.emit(identifier(name), name, declar.node.init !== null);
+ }
+ }
+
+ if (path.parentPath.isFor({
+ left: path.node
+ })) {
+ path.replaceWith(firstId);
+ } else {
+ path.replaceWithMultiple(nodes);
+ }
+ }
+
+};
+
+function hoistVariables(path, emit, kind = "var") {
+ path.traverse(visitor, {
+ kind,
+ emit
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json
new file mode 100644
index 0000000000..24cb242a3c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-hoist-variables/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/helper-hoist-variables",
+ "version": "7.16.0",
+ "description": "Helper function to hoist variables",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-hoist-variables"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-hoist-variables",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "TODO": "The @babel/traverse dependency is only needed for the NodePath TS type. We can consider exporting it from @babel/core.",
+ "devDependencies": {
+ "@babel/traverse": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/README.md
new file mode 100644
index 0000000000..01c551d6a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-member-expression-to-functions
+
+> Helper function to replace certain member expressions with function calls
+
+See our website [@babel/helper-member-expression-to-functions](https://babeljs.io/docs/en/babel-helper-member-expression-to-functions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-member-expression-to-functions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-member-expression-to-functions --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/lib/index.js
new file mode 100644
index 0000000000..564a056deb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/lib/index.js
@@ -0,0 +1,453 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var _t = require('@babel/types');
+
+function _interopNamespace(e) {
+ if (e && e.__esModule) return e;
+ var n = Object.create(null);
+ if (e) {
+ Object.keys(e).forEach(function (k) {
+ if (k !== 'default') {
+ var d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: function () {
+ return e[k];
+ }
+ });
+ }
+ });
+ }
+ n['default'] = e;
+ return Object.freeze(n);
+}
+
+var _t__namespace = /*#__PURE__*/_interopNamespace(_t);
+
+function willPathCastToBoolean(path) {
+ const maybeWrapped = path;
+ const {
+ node,
+ parentPath
+ } = maybeWrapped;
+
+ if (parentPath.isLogicalExpression()) {
+ const {
+ operator,
+ right
+ } = parentPath.node;
+
+ if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
+ return willPathCastToBoolean(parentPath);
+ }
+ }
+
+ if (parentPath.isSequenceExpression()) {
+ const {
+ expressions
+ } = parentPath.node;
+
+ if (expressions[expressions.length - 1] === node) {
+ return willPathCastToBoolean(parentPath);
+ } else {
+ return true;
+ }
+ }
+
+ return parentPath.isConditional({
+ test: node
+ }) || parentPath.isUnaryExpression({
+ operator: "!"
+ }) || parentPath.isLoop({
+ test: node
+ });
+}
+
+const {
+ LOGICAL_OPERATORS,
+ arrowFunctionExpression,
+ assignmentExpression,
+ binaryExpression,
+ booleanLiteral,
+ callExpression,
+ cloneNode,
+ conditionalExpression,
+ identifier,
+ isMemberExpression,
+ isOptionalCallExpression,
+ isOptionalMemberExpression,
+ isUpdateExpression,
+ logicalExpression,
+ memberExpression,
+ nullLiteral,
+ numericLiteral,
+ optionalCallExpression,
+ optionalMemberExpression,
+ sequenceExpression,
+ unaryExpression
+} = _t__namespace;
+
+class AssignmentMemoiser {
+ constructor() {
+ this._map = void 0;
+ this._map = new WeakMap();
+ }
+
+ has(key) {
+ return this._map.has(key);
+ }
+
+ get(key) {
+ if (!this.has(key)) return;
+
+ const record = this._map.get(key);
+
+ const {
+ value
+ } = record;
+ record.count--;
+
+ if (record.count === 0) {
+ return assignmentExpression("=", value, key);
+ }
+
+ return value;
+ }
+
+ set(key, value, count) {
+ return this._map.set(key, {
+ count,
+ value
+ });
+ }
+
+}
+
+function toNonOptional(path, base) {
+ const {
+ node
+ } = path;
+
+ if (isOptionalMemberExpression(node)) {
+ return memberExpression(base, node.property, node.computed);
+ }
+
+ if (path.isOptionalCallExpression()) {
+ const callee = path.get("callee");
+
+ if (path.node.optional && callee.isOptionalMemberExpression()) {
+ const {
+ object
+ } = callee.node;
+ const context = path.scope.maybeGenerateMemoised(object) || object;
+ callee.get("object").replaceWith(assignmentExpression("=", context, object));
+ return callExpression(memberExpression(base, identifier("call")), [context, ...path.node.arguments]);
+ }
+
+ return callExpression(base, path.node.arguments);
+ }
+
+ return path.node;
+}
+
+function isInDetachedTree(path) {
+ while (path) {
+ if (path.isProgram()) break;
+ const {
+ parentPath,
+ container,
+ listKey
+ } = path;
+ const parentNode = parentPath.node;
+
+ if (listKey) {
+ if (container !== parentNode[listKey]) return true;
+ } else {
+ if (container !== parentNode) return true;
+ }
+
+ path = parentPath;
+ }
+
+ return false;
+}
+
+const handle = {
+ memoise() {},
+
+ handle(member, noDocumentAll) {
+ const {
+ node,
+ parent,
+ parentPath,
+ scope
+ } = member;
+
+ if (member.isOptionalMemberExpression()) {
+ if (isInDetachedTree(member)) return;
+ const endPath = member.find(({
+ node,
+ parent
+ }) => {
+ if (isOptionalMemberExpression(parent)) {
+ return parent.optional || parent.object !== node;
+ }
+
+ if (isOptionalCallExpression(parent)) {
+ return node !== member.node && parent.optional || parent.callee !== node;
+ }
+
+ return true;
+ });
+
+ if (scope.path.isPattern()) {
+ endPath.replaceWith(callExpression(arrowFunctionExpression([], endPath.node), []));
+ return;
+ }
+
+ const willEndPathCastToBoolean = willPathCastToBoolean(endPath);
+ const rootParentPath = endPath.parentPath;
+
+ if (rootParentPath.isUpdateExpression({
+ argument: node
+ }) || rootParentPath.isAssignmentExpression({
+ left: node
+ })) {
+ throw member.buildCodeFrameError(`can't handle assignment`);
+ }
+
+ const isDeleteOperation = rootParentPath.isUnaryExpression({
+ operator: "delete"
+ });
+
+ if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) {
+ throw member.buildCodeFrameError(`can't delete a private class element`);
+ }
+
+ let startingOptional = member;
+
+ for (;;) {
+ if (startingOptional.isOptionalMemberExpression()) {
+ if (startingOptional.node.optional) break;
+ startingOptional = startingOptional.get("object");
+ continue;
+ } else if (startingOptional.isOptionalCallExpression()) {
+ if (startingOptional.node.optional) break;
+ startingOptional = startingOptional.get("callee");
+ continue;
+ }
+
+ throw new Error(`Internal error: unexpected ${startingOptional.node.type}`);
+ }
+
+ const startingProp = startingOptional.isOptionalMemberExpression() ? "object" : "callee";
+ const startingNode = startingOptional.node[startingProp];
+ const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);
+ const baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode;
+ const parentIsOptionalCall = parentPath.isOptionalCallExpression({
+ callee: node
+ });
+
+ const isOptionalCall = parent => parentIsOptionalCall;
+
+ const parentIsCall = parentPath.isCallExpression({
+ callee: node
+ });
+ startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));
+
+ if (isOptionalCall()) {
+ if (parent.optional) {
+ parentPath.replaceWith(this.optionalCall(member, parent.arguments));
+ } else {
+ parentPath.replaceWith(this.call(member, parent.arguments));
+ }
+ } else if (parentIsCall) {
+ member.replaceWith(this.boundGet(member));
+ } else {
+ member.replaceWith(this.get(member));
+ }
+
+ let regular = member.node;
+
+ for (let current = member; current !== endPath;) {
+ const parentPath = current.parentPath;
+
+ if (parentPath === endPath && isOptionalCall() && parent.optional) {
+ regular = parentPath.node;
+ break;
+ }
+
+ regular = toNonOptional(parentPath, regular);
+ current = parentPath;
+ }
+
+ let context;
+ const endParentPath = endPath.parentPath;
+
+ if (isMemberExpression(regular) && endParentPath.isOptionalCallExpression({
+ callee: endPath.node,
+ optional: true
+ })) {
+ const {
+ object
+ } = regular;
+ context = member.scope.maybeGenerateMemoised(object);
+
+ if (context) {
+ regular.object = assignmentExpression("=", context, object);
+ }
+ }
+
+ let replacementPath = endPath;
+
+ if (isDeleteOperation) {
+ replacementPath = endParentPath;
+ regular = endParentPath.node;
+ }
+
+ const baseMemoised = baseNeedsMemoised ? assignmentExpression("=", cloneNode(baseRef), cloneNode(startingNode)) : cloneNode(baseRef);
+
+ if (willEndPathCastToBoolean) {
+ let nonNullishCheck;
+
+ if (noDocumentAll) {
+ nonNullishCheck = binaryExpression("!=", baseMemoised, nullLiteral());
+ } else {
+ nonNullishCheck = logicalExpression("&&", binaryExpression("!==", baseMemoised, nullLiteral()), binaryExpression("!==", cloneNode(baseRef), scope.buildUndefinedNode()));
+ }
+
+ replacementPath.replaceWith(logicalExpression("&&", nonNullishCheck, regular));
+ } else {
+ let nullishCheck;
+
+ if (noDocumentAll) {
+ nullishCheck = binaryExpression("==", baseMemoised, nullLiteral());
+ } else {
+ nullishCheck = logicalExpression("||", binaryExpression("===", baseMemoised, nullLiteral()), binaryExpression("===", cloneNode(baseRef), scope.buildUndefinedNode()));
+ }
+
+ replacementPath.replaceWith(conditionalExpression(nullishCheck, isDeleteOperation ? booleanLiteral(true) : scope.buildUndefinedNode(), regular));
+ }
+
+ if (context) {
+ const endParent = endParentPath.node;
+ endParentPath.replaceWith(optionalCallExpression(optionalMemberExpression(endParent.callee, identifier("call"), false, true), [cloneNode(context), ...endParent.arguments], false));
+ }
+
+ return;
+ }
+
+ if (isUpdateExpression(parent, {
+ argument: node
+ })) {
+ if (this.simpleSet) {
+ member.replaceWith(this.simpleSet(member));
+ return;
+ }
+
+ const {
+ operator,
+ prefix
+ } = parent;
+ this.memoise(member, 2);
+ const value = binaryExpression(operator[0], unaryExpression("+", this.get(member)), numericLiteral(1));
+
+ if (prefix) {
+ parentPath.replaceWith(this.set(member, value));
+ } else {
+ const {
+ scope
+ } = member;
+ const ref = scope.generateUidIdentifierBasedOnNode(node);
+ scope.push({
+ id: ref
+ });
+ value.left = assignmentExpression("=", cloneNode(ref), value.left);
+ parentPath.replaceWith(sequenceExpression([this.set(member, value), cloneNode(ref)]));
+ }
+
+ return;
+ }
+
+ if (parentPath.isAssignmentExpression({
+ left: node
+ })) {
+ if (this.simpleSet) {
+ member.replaceWith(this.simpleSet(member));
+ return;
+ }
+
+ const {
+ operator,
+ right: value
+ } = parentPath.node;
+
+ if (operator === "=") {
+ parentPath.replaceWith(this.set(member, value));
+ } else {
+ const operatorTrunc = operator.slice(0, -1);
+
+ if (LOGICAL_OPERATORS.includes(operatorTrunc)) {
+ this.memoise(member, 1);
+ parentPath.replaceWith(logicalExpression(operatorTrunc, this.get(member), this.set(member, value)));
+ } else {
+ this.memoise(member, 2);
+ parentPath.replaceWith(this.set(member, binaryExpression(operatorTrunc, this.get(member), value)));
+ }
+ }
+
+ return;
+ }
+
+ if (parentPath.isCallExpression({
+ callee: node
+ })) {
+ parentPath.replaceWith(this.call(member, parentPath.node.arguments));
+ return;
+ }
+
+ if (parentPath.isOptionalCallExpression({
+ callee: node
+ })) {
+ if (scope.path.isPattern()) {
+ parentPath.replaceWith(callExpression(arrowFunctionExpression([], parentPath.node), []));
+ return;
+ }
+
+ parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments));
+ return;
+ }
+
+ if (parentPath.isForXStatement({
+ left: node
+ }) || parentPath.isObjectProperty({
+ value: node
+ }) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({
+ left: node
+ }) && parentPath.parentPath.isObjectProperty({
+ value: parent
+ }) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({
+ left: node
+ }) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) {
+ member.replaceWith(this.destructureSet(member));
+ return;
+ }
+
+ if (parentPath.isTaggedTemplateExpression()) {
+ member.replaceWith(this.boundGet(member));
+ } else {
+ member.replaceWith(this.get(member));
+ }
+ }
+
+};
+function memberExpressionToFunctions(path, visitor, state) {
+ path.traverse(visitor, Object.assign({}, handle, state, {
+ memoiser: new AssignmentMemoiser()
+ }));
+}
+
+exports.default = memberExpressionToFunctions;
+//# sourceMappingURL=index.js.map
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/package.json
new file mode 100644
index 0000000000..17dc04e333
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-member-expression-to-functions/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@babel/helper-member-expression-to-functions",
+ "version": "7.16.0",
+ "description": "Helper function to replace certain member expressions with function calls",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-member-expression-to-functions"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-member-expression-to-functions",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "devDependencies": {
+ "@babel/traverse": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/README.md
new file mode 100644
index 0000000000..dfc0bb88cf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-module-imports
+
+> Babel helper functions for inserting module loads
+
+See our website [@babel/helper-module-imports](https://babeljs.io/docs/en/babel-helper-module-imports) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-module-imports
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-module-imports --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js
new file mode 100644
index 0000000000..8a1800e64c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-builder.js
@@ -0,0 +1,162 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+const {
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ identifier,
+ importDeclaration,
+ importDefaultSpecifier,
+ importNamespaceSpecifier,
+ importSpecifier,
+ memberExpression,
+ stringLiteral,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+class ImportBuilder {
+ constructor(importedSource, scope, hub) {
+ this._statements = [];
+ this._resultName = null;
+ this._scope = null;
+ this._hub = null;
+ this._importedSource = void 0;
+ this._scope = scope;
+ this._hub = hub;
+ this._importedSource = importedSource;
+ }
+
+ done() {
+ return {
+ statements: this._statements,
+ resultName: this._resultName
+ };
+ }
+
+ import() {
+ this._statements.push(importDeclaration([], stringLiteral(this._importedSource)));
+
+ return this;
+ }
+
+ require() {
+ this._statements.push(expressionStatement(callExpression(identifier("require"), [stringLiteral(this._importedSource)])));
+
+ return this;
+ }
+
+ namespace(name = "namespace") {
+ const local = this._scope.generateUidIdentifier(name);
+
+ const statement = this._statements[this._statements.length - 1];
+
+ _assert(statement.type === "ImportDeclaration");
+
+ _assert(statement.specifiers.length === 0);
+
+ statement.specifiers = [importNamespaceSpecifier(local)];
+ this._resultName = cloneNode(local);
+ return this;
+ }
+
+ default(name) {
+ name = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+
+ _assert(statement.type === "ImportDeclaration");
+
+ _assert(statement.specifiers.length === 0);
+
+ statement.specifiers = [importDefaultSpecifier(name)];
+ this._resultName = cloneNode(name);
+ return this;
+ }
+
+ named(name, importName) {
+ if (importName === "default") return this.default(name);
+ name = this._scope.generateUidIdentifier(name);
+ const statement = this._statements[this._statements.length - 1];
+
+ _assert(statement.type === "ImportDeclaration");
+
+ _assert(statement.specifiers.length === 0);
+
+ statement.specifiers = [importSpecifier(name, identifier(importName))];
+ this._resultName = cloneNode(name);
+ return this;
+ }
+
+ var(name) {
+ name = this._scope.generateUidIdentifier(name);
+ let statement = this._statements[this._statements.length - 1];
+
+ if (statement.type !== "ExpressionStatement") {
+ _assert(this._resultName);
+
+ statement = expressionStatement(this._resultName);
+
+ this._statements.push(statement);
+ }
+
+ this._statements[this._statements.length - 1] = variableDeclaration("var", [variableDeclarator(name, statement.expression)]);
+ this._resultName = cloneNode(name);
+ return this;
+ }
+
+ defaultInterop() {
+ return this._interop(this._hub.addHelper("interopRequireDefault"));
+ }
+
+ wildcardInterop() {
+ return this._interop(this._hub.addHelper("interopRequireWildcard"));
+ }
+
+ _interop(callee) {
+ const statement = this._statements[this._statements.length - 1];
+
+ if (statement.type === "ExpressionStatement") {
+ statement.expression = callExpression(callee, [statement.expression]);
+ } else if (statement.type === "VariableDeclaration") {
+ _assert(statement.declarations.length === 1);
+
+ statement.declarations[0].init = callExpression(callee, [statement.declarations[0].init]);
+ } else {
+ _assert.fail("Unexpected type.");
+ }
+
+ return this;
+ }
+
+ prop(name) {
+ const statement = this._statements[this._statements.length - 1];
+
+ if (statement.type === "ExpressionStatement") {
+ statement.expression = memberExpression(statement.expression, identifier(name));
+ } else if (statement.type === "VariableDeclaration") {
+ _assert(statement.declarations.length === 1);
+
+ statement.declarations[0].init = memberExpression(statement.declarations[0].init, identifier(name));
+ } else {
+ _assert.fail("Unexpected type:" + statement.type);
+ }
+
+ return this;
+ }
+
+ read(name) {
+ this._resultName = memberExpression(this._resultName, identifier(name));
+ }
+
+}
+
+exports.default = ImportBuilder; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js
new file mode 100644
index 0000000000..adb9627ef3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/import-injector.js
@@ -0,0 +1,290 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+var _importBuilder = require("./import-builder");
+
+var _isModule = require("./is-module");
+
+const {
+ numericLiteral,
+ sequenceExpression
+} = _t;
+
+class ImportInjector {
+ constructor(path, importedSource, opts) {
+ this._defaultOpts = {
+ importedSource: null,
+ importedType: "commonjs",
+ importedInterop: "babel",
+ importingInterop: "babel",
+ ensureLiveReference: false,
+ ensureNoContext: false,
+ importPosition: "before"
+ };
+ const programPath = path.find(p => p.isProgram());
+ this._programPath = programPath;
+ this._programScope = programPath.scope;
+ this._hub = programPath.hub;
+ this._defaultOpts = this._applyDefaults(importedSource, opts, true);
+ }
+
+ addDefault(importedSourceIn, opts) {
+ return this.addNamed("default", importedSourceIn, opts);
+ }
+
+ addNamed(importName, importedSourceIn, opts) {
+ _assert(typeof importName === "string");
+
+ return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);
+ }
+
+ addNamespace(importedSourceIn, opts) {
+ return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);
+ }
+
+ addSideEffect(importedSourceIn, opts) {
+ return this._generateImport(this._applyDefaults(importedSourceIn, opts), false);
+ }
+
+ _applyDefaults(importedSource, opts, isInit = false) {
+ const optsList = [];
+
+ if (typeof importedSource === "string") {
+ optsList.push({
+ importedSource
+ });
+ optsList.push(opts);
+ } else {
+ _assert(!opts, "Unexpected secondary arguments.");
+
+ optsList.push(importedSource);
+ }
+
+ const newOpts = Object.assign({}, this._defaultOpts);
+
+ for (const opts of optsList) {
+ if (!opts) continue;
+ Object.keys(newOpts).forEach(key => {
+ if (opts[key] !== undefined) newOpts[key] = opts[key];
+ });
+
+ if (!isInit) {
+ if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;
+ if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;
+ }
+ }
+
+ return newOpts;
+ }
+
+ _generateImport(opts, importName) {
+ const isDefault = importName === "default";
+ const isNamed = !!importName && !isDefault;
+ const isNamespace = importName === null;
+ const {
+ importedSource,
+ importedType,
+ importedInterop,
+ importingInterop,
+ ensureLiveReference,
+ ensureNoContext,
+ nameHint,
+ importPosition,
+ blockHoist
+ } = opts;
+ let name = nameHint || importName;
+ const isMod = (0, _isModule.default)(this._programPath);
+ const isModuleForNode = isMod && importingInterop === "node";
+ const isModuleForBabel = isMod && importingInterop === "babel";
+
+ if (importPosition === "after" && !isMod) {
+ throw new Error(`"importPosition": "after" is only supported in modules`);
+ }
+
+ const builder = new _importBuilder.default(importedSource, this._programScope, this._hub);
+
+ if (importedType === "es6") {
+ if (!isModuleForNode && !isModuleForBabel) {
+ throw new Error("Cannot import an ES6 module from CommonJS");
+ }
+
+ builder.import();
+
+ if (isNamespace) {
+ builder.namespace(nameHint || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.named(name, importName);
+ }
+ } else if (importedType !== "commonjs") {
+ throw new Error(`Unexpected interopType "${importedType}"`);
+ } else if (importedInterop === "babel") {
+ if (isModuleForNode) {
+ name = name !== "default" ? name : importedSource;
+ const es6Default = `${importedSource}$es6Default`;
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(es6Default).var(name || importedSource).wildcardInterop();
+ } else if (isDefault) {
+ if (ensureLiveReference) {
+ builder.default(es6Default).var(name || importedSource).defaultInterop().read("default");
+ } else {
+ builder.default(es6Default).var(name).defaultInterop().prop(importName);
+ }
+ } else if (isNamed) {
+ builder.default(es6Default).read(importName);
+ }
+ } else if (isModuleForBabel) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.namespace(name || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.named(name, importName);
+ }
+ } else {
+ builder.require();
+
+ if (isNamespace) {
+ builder.var(name || importedSource).wildcardInterop();
+ } else if ((isDefault || isNamed) && ensureLiveReference) {
+ if (isDefault) {
+ name = name !== "default" ? name : importedSource;
+ builder.var(name).read(importName);
+ builder.defaultInterop();
+ } else {
+ builder.var(importedSource).read(importName);
+ }
+ } else if (isDefault) {
+ builder.var(name).defaultInterop().prop(importName);
+ } else if (isNamed) {
+ builder.var(name).prop(importName);
+ }
+ }
+ } else if (importedInterop === "compiled") {
+ if (isModuleForNode) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(name || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.default(importedSource).read(name);
+ }
+ } else if (isModuleForBabel) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.namespace(name || importedSource);
+ } else if (isDefault || isNamed) {
+ builder.named(name, importName);
+ }
+ } else {
+ builder.require();
+
+ if (isNamespace) {
+ builder.var(name || importedSource);
+ } else if (isDefault || isNamed) {
+ if (ensureLiveReference) {
+ builder.var(importedSource).read(name);
+ } else {
+ builder.prop(importName).var(name);
+ }
+ }
+ }
+ } else if (importedInterop === "uncompiled") {
+ if (isDefault && ensureLiveReference) {
+ throw new Error("No live reference for commonjs default");
+ }
+
+ if (isModuleForNode) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(name || importedSource);
+ } else if (isDefault) {
+ builder.default(name);
+ } else if (isNamed) {
+ builder.default(importedSource).read(name);
+ }
+ } else if (isModuleForBabel) {
+ builder.import();
+
+ if (isNamespace) {
+ builder.default(name || importedSource);
+ } else if (isDefault) {
+ builder.default(name);
+ } else if (isNamed) {
+ builder.named(name, importName);
+ }
+ } else {
+ builder.require();
+
+ if (isNamespace) {
+ builder.var(name || importedSource);
+ } else if (isDefault) {
+ builder.var(name);
+ } else if (isNamed) {
+ if (ensureLiveReference) {
+ builder.var(importedSource).read(name);
+ } else {
+ builder.var(name).prop(importName);
+ }
+ }
+ }
+ } else {
+ throw new Error(`Unknown importedInterop "${importedInterop}".`);
+ }
+
+ const {
+ statements,
+ resultName
+ } = builder.done();
+
+ this._insertStatements(statements, importPosition, blockHoist);
+
+ if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") {
+ return sequenceExpression([numericLiteral(0), resultName]);
+ }
+
+ return resultName;
+ }
+
+ _insertStatements(statements, importPosition = "before", blockHoist = 3) {
+ const body = this._programPath.get("body");
+
+ if (importPosition === "after") {
+ for (let i = body.length - 1; i >= 0; i--) {
+ if (body[i].isImportDeclaration()) {
+ body[i].insertAfter(statements);
+ return;
+ }
+ }
+ } else {
+ statements.forEach(node => {
+ node._blockHoist = blockHoist;
+ });
+ const targetPath = body.find(p => {
+ const val = p.node._blockHoist;
+ return Number.isFinite(val) && val < 4;
+ });
+
+ if (targetPath) {
+ targetPath.insertBefore(statements);
+ return;
+ }
+ }
+
+ this._programPath.unshiftContainer("body", statements);
+ }
+
+}
+
+exports.default = ImportInjector; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/index.js
new file mode 100644
index 0000000000..a3d7921ca3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/index.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ImportInjector", {
+ enumerable: true,
+ get: function () {
+ return _importInjector.default;
+ }
+});
+exports.addDefault = addDefault;
+exports.addNamed = addNamed;
+exports.addNamespace = addNamespace;
+exports.addSideEffect = addSideEffect;
+Object.defineProperty(exports, "isModule", {
+ enumerable: true,
+ get: function () {
+ return _isModule.default;
+ }
+});
+
+var _importInjector = require("./import-injector");
+
+var _isModule = require("./is-module");
+
+function addDefault(path, importedSource, opts) {
+ return new _importInjector.default(path).addDefault(importedSource, opts);
+}
+
+function addNamed(path, name, importedSource, opts) {
+ return new _importInjector.default(path).addNamed(name, importedSource, opts);
+}
+
+function addNamespace(path, importedSource, opts) {
+ return new _importInjector.default(path).addNamespace(importedSource, opts);
+}
+
+function addSideEffect(path, importedSource, opts) {
+ return new _importInjector.default(path).addSideEffect(importedSource, opts);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/is-module.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/is-module.js
new file mode 100644
index 0000000000..ad9e399540
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/lib/is-module.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isModule;
+
+function isModule(path) {
+ const {
+ sourceType
+ } = path.node;
+
+ if (sourceType !== "module" && sourceType !== "script") {
+ throw path.buildCodeFrameError(`Unknown sourceType "${sourceType}", cannot transform.`);
+ }
+
+ return path.node.sourceType === "module";
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json
new file mode 100644
index 0000000000..1dc2637e98
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-imports/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/helper-module-imports",
+ "version": "7.16.0",
+ "description": "Babel helper functions for inserting module loads",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-module-imports",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-module-imports"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.16.0",
+ "@babel/traverse": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/README.md
new file mode 100644
index 0000000000..243ce295d8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-module-transforms
+
+> Babel helper functions for implementing ES6 module transformations
+
+See our website [@babel/helper-module-transforms](https://babeljs.io/docs/en/babel-helper-module-transforms) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-module-transforms
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-module-transforms --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/get-module-name.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/get-module-name.js
new file mode 100644
index 0000000000..87c2b83590
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/get-module-name.js
@@ -0,0 +1,54 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getModuleName;
+{
+ const originalGetModuleName = getModuleName;
+
+ exports.default = getModuleName = function getModuleName(rootOpts, pluginOpts) {
+ var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo;
+
+ return originalGetModuleName(rootOpts, {
+ moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId,
+ moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds,
+ getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId,
+ moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot
+ });
+ };
+}
+
+function getModuleName(rootOpts, pluginOpts) {
+ const {
+ filename,
+ filenameRelative = filename,
+ sourceRoot = pluginOpts.moduleRoot
+ } = rootOpts;
+ const {
+ moduleId,
+ moduleIds = !!moduleId,
+ getModuleId,
+ moduleRoot = sourceRoot
+ } = pluginOpts;
+ if (!moduleIds) return null;
+
+ if (moduleId != null && !getModuleId) {
+ return moduleId;
+ }
+
+ let moduleName = moduleRoot != null ? moduleRoot + "/" : "";
+
+ if (filenameRelative) {
+ const sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : "";
+ moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.(\w*?)$/, "");
+ }
+
+ moduleName = moduleName.replace(/\\/g, "/");
+
+ if (getModuleId) {
+ return getModuleId(moduleName) || moduleName;
+ } else {
+ return moduleName;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js
new file mode 100644
index 0000000000..3418688031
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/index.js
@@ -0,0 +1,416 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.buildNamespaceInitStatements = buildNamespaceInitStatements;
+exports.ensureStatementsHoisted = ensureStatementsHoisted;
+Object.defineProperty(exports, "getModuleName", {
+ enumerable: true,
+ get: function () {
+ return _getModuleName.default;
+ }
+});
+Object.defineProperty(exports, "hasExports", {
+ enumerable: true,
+ get: function () {
+ return _normalizeAndLoadMetadata.hasExports;
+ }
+});
+Object.defineProperty(exports, "isModule", {
+ enumerable: true,
+ get: function () {
+ return _helperModuleImports.isModule;
+ }
+});
+Object.defineProperty(exports, "isSideEffectImport", {
+ enumerable: true,
+ get: function () {
+ return _normalizeAndLoadMetadata.isSideEffectImport;
+ }
+});
+exports.rewriteModuleStatementsAndPrepareHeader = rewriteModuleStatementsAndPrepareHeader;
+Object.defineProperty(exports, "rewriteThis", {
+ enumerable: true,
+ get: function () {
+ return _rewriteThis.default;
+ }
+});
+exports.wrapInterop = wrapInterop;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+var _template = require("@babel/template");
+
+var _helperModuleImports = require("@babel/helper-module-imports");
+
+var _rewriteThis = require("./rewrite-this");
+
+var _rewriteLiveReferences = require("./rewrite-live-references");
+
+var _normalizeAndLoadMetadata = require("./normalize-and-load-metadata");
+
+var _getModuleName = require("./get-module-name");
+
+const {
+ booleanLiteral,
+ callExpression,
+ cloneNode,
+ directive,
+ directiveLiteral,
+ expressionStatement,
+ identifier,
+ isIdentifier,
+ memberExpression,
+ stringLiteral,
+ valueToNode,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function rewriteModuleStatementsAndPrepareHeader(path, {
+ loose,
+ exportName,
+ strict,
+ allowTopLevelThis,
+ strictMode,
+ noInterop,
+ importInterop = noInterop ? "none" : "babel",
+ lazy,
+ esNamespaceOnly,
+ constantReexports = loose,
+ enumerableModuleMeta = loose,
+ noIncompleteNsImportDetection
+}) {
+ (0, _normalizeAndLoadMetadata.validateImportInteropOption)(importInterop);
+
+ _assert((0, _helperModuleImports.isModule)(path), "Cannot process module statements in a script");
+
+ path.node.sourceType = "script";
+ const meta = (0, _normalizeAndLoadMetadata.default)(path, exportName, {
+ importInterop,
+ initializeReexports: constantReexports,
+ lazy,
+ esNamespaceOnly
+ });
+
+ if (!allowTopLevelThis) {
+ (0, _rewriteThis.default)(path);
+ }
+
+ (0, _rewriteLiveReferences.default)(path, meta);
+
+ if (strictMode !== false) {
+ const hasStrict = path.node.directives.some(directive => {
+ return directive.value.value === "use strict";
+ });
+
+ if (!hasStrict) {
+ path.unshiftContainer("directives", directive(directiveLiteral("use strict")));
+ }
+ }
+
+ const headers = [];
+
+ if ((0, _normalizeAndLoadMetadata.hasExports)(meta) && !strict) {
+ headers.push(buildESModuleHeader(meta, enumerableModuleMeta));
+ }
+
+ const nameList = buildExportNameListDeclaration(path, meta);
+
+ if (nameList) {
+ meta.exportNameListName = nameList.name;
+ headers.push(nameList.statement);
+ }
+
+ headers.push(...buildExportInitializationStatements(path, meta, constantReexports, noIncompleteNsImportDetection));
+ return {
+ meta,
+ headers
+ };
+}
+
+function ensureStatementsHoisted(statements) {
+ statements.forEach(header => {
+ header._blockHoist = 3;
+ });
+}
+
+function wrapInterop(programPath, expr, type) {
+ if (type === "none") {
+ return null;
+ }
+
+ if (type === "node-namespace") {
+ return callExpression(programPath.hub.addHelper("interopRequireWildcard"), [expr, booleanLiteral(true)]);
+ } else if (type === "node-default") {
+ return null;
+ }
+
+ let helper;
+
+ if (type === "default") {
+ helper = "interopRequireDefault";
+ } else if (type === "namespace") {
+ helper = "interopRequireWildcard";
+ } else {
+ throw new Error(`Unknown interop: ${type}`);
+ }
+
+ return callExpression(programPath.hub.addHelper(helper), [expr]);
+}
+
+function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports = false) {
+ const statements = [];
+ let srcNamespace = identifier(sourceMetadata.name);
+ if (sourceMetadata.lazy) srcNamespace = callExpression(srcNamespace, []);
+
+ for (const localName of sourceMetadata.importsNamespace) {
+ if (localName === sourceMetadata.name) continue;
+ statements.push(_template.default.statement`var NAME = SOURCE;`({
+ NAME: localName,
+ SOURCE: cloneNode(srcNamespace)
+ }));
+ }
+
+ if (constantReexports) {
+ statements.push(...buildReexportsFromMeta(metadata, sourceMetadata, true));
+ }
+
+ for (const exportName of sourceMetadata.reexportNamespace) {
+ statements.push((sourceMetadata.lazy ? _template.default.statement`
+ Object.defineProperty(EXPORTS, "NAME", {
+ enumerable: true,
+ get: function() {
+ return NAMESPACE;
+ }
+ });
+ ` : _template.default.statement`EXPORTS.NAME = NAMESPACE;`)({
+ EXPORTS: metadata.exportName,
+ NAME: exportName,
+ NAMESPACE: cloneNode(srcNamespace)
+ }));
+ }
+
+ if (sourceMetadata.reexportAll) {
+ const statement = buildNamespaceReexport(metadata, cloneNode(srcNamespace), constantReexports);
+ statement.loc = sourceMetadata.reexportAll.loc;
+ statements.push(statement);
+ }
+
+ return statements;
+}
+
+const ReexportTemplate = {
+ constant: _template.default.statement`EXPORTS.EXPORT_NAME = NAMESPACE_IMPORT;`,
+ constantComputed: _template.default.statement`EXPORTS["EXPORT_NAME"] = NAMESPACE_IMPORT;`,
+ spec: _template.default.statement`
+ Object.defineProperty(EXPORTS, "EXPORT_NAME", {
+ enumerable: true,
+ get: function() {
+ return NAMESPACE_IMPORT;
+ },
+ });
+ `
+};
+
+const buildReexportsFromMeta = (meta, metadata, constantReexports) => {
+ const namespace = metadata.lazy ? callExpression(identifier(metadata.name), []) : identifier(metadata.name);
+ const {
+ stringSpecifiers
+ } = meta;
+ return Array.from(metadata.reexports, ([exportName, importName]) => {
+ let NAMESPACE_IMPORT = cloneNode(namespace);
+
+ if (importName === "default" && metadata.interop === "node-default") {} else if (stringSpecifiers.has(importName)) {
+ NAMESPACE_IMPORT = memberExpression(NAMESPACE_IMPORT, stringLiteral(importName), true);
+ } else {
+ NAMESPACE_IMPORT = memberExpression(NAMESPACE_IMPORT, identifier(importName));
+ }
+
+ const astNodes = {
+ EXPORTS: meta.exportName,
+ EXPORT_NAME: exportName,
+ NAMESPACE_IMPORT
+ };
+
+ if (constantReexports || isIdentifier(NAMESPACE_IMPORT)) {
+ if (stringSpecifiers.has(exportName)) {
+ return ReexportTemplate.constantComputed(astNodes);
+ } else {
+ return ReexportTemplate.constant(astNodes);
+ }
+ } else {
+ return ReexportTemplate.spec(astNodes);
+ }
+ });
+};
+
+function buildESModuleHeader(metadata, enumerableModuleMeta = false) {
+ return (enumerableModuleMeta ? _template.default.statement`
+ EXPORTS.__esModule = true;
+ ` : _template.default.statement`
+ Object.defineProperty(EXPORTS, "__esModule", {
+ value: true,
+ });
+ `)({
+ EXPORTS: metadata.exportName
+ });
+}
+
+function buildNamespaceReexport(metadata, namespace, constantReexports) {
+ return (constantReexports ? _template.default.statement`
+ Object.keys(NAMESPACE).forEach(function(key) {
+ if (key === "default" || key === "__esModule") return;
+ VERIFY_NAME_LIST;
+ if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
+
+ EXPORTS[key] = NAMESPACE[key];
+ });
+ ` : _template.default.statement`
+ Object.keys(NAMESPACE).forEach(function(key) {
+ if (key === "default" || key === "__esModule") return;
+ VERIFY_NAME_LIST;
+ if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;
+
+ Object.defineProperty(EXPORTS, key, {
+ enumerable: true,
+ get: function() {
+ return NAMESPACE[key];
+ },
+ });
+ });
+ `)({
+ NAMESPACE: namespace,
+ EXPORTS: metadata.exportName,
+ VERIFY_NAME_LIST: metadata.exportNameListName ? (0, _template.default)`
+ if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;
+ `({
+ EXPORTS_LIST: metadata.exportNameListName
+ }) : null
+ });
+}
+
+function buildExportNameListDeclaration(programPath, metadata) {
+ const exportedVars = Object.create(null);
+
+ for (const data of metadata.local.values()) {
+ for (const name of data.names) {
+ exportedVars[name] = true;
+ }
+ }
+
+ let hasReexport = false;
+
+ for (const data of metadata.source.values()) {
+ for (const exportName of data.reexports.keys()) {
+ exportedVars[exportName] = true;
+ }
+
+ for (const exportName of data.reexportNamespace) {
+ exportedVars[exportName] = true;
+ }
+
+ hasReexport = hasReexport || !!data.reexportAll;
+ }
+
+ if (!hasReexport || Object.keys(exportedVars).length === 0) return null;
+ const name = programPath.scope.generateUidIdentifier("exportNames");
+ delete exportedVars.default;
+ return {
+ name: name.name,
+ statement: variableDeclaration("var", [variableDeclarator(name, valueToNode(exportedVars))])
+ };
+}
+
+function buildExportInitializationStatements(programPath, metadata, constantReexports = false, noIncompleteNsImportDetection = false) {
+ const initStatements = [];
+
+ for (const [localName, data] of metadata.local) {
+ if (data.kind === "import") {} else if (data.kind === "hoisted") {
+ initStatements.push([data.names[0], buildInitStatement(metadata, data.names, identifier(localName))]);
+ } else if (!noIncompleteNsImportDetection) {
+ for (const exportName of data.names) {
+ initStatements.push([exportName, null]);
+ }
+ }
+ }
+
+ for (const data of metadata.source.values()) {
+ if (!constantReexports) {
+ const reexportsStatements = buildReexportsFromMeta(metadata, data, false);
+ const reexports = [...data.reexports.keys()];
+
+ for (let i = 0; i < reexportsStatements.length; i++) {
+ initStatements.push([reexports[i], reexportsStatements[i]]);
+ }
+ }
+
+ if (!noIncompleteNsImportDetection) {
+ for (const exportName of data.reexportNamespace) {
+ initStatements.push([exportName, null]);
+ }
+ }
+ }
+
+ initStatements.sort((a, b) => a[0] > b[0] ? 1 : -1);
+ const results = [];
+
+ if (noIncompleteNsImportDetection) {
+ for (const [, initStatement] of initStatements) {
+ results.push(initStatement);
+ }
+ } else {
+ const chunkSize = 100;
+
+ for (let i = 0, uninitializedExportNames = []; i < initStatements.length; i += chunkSize) {
+ for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) {
+ const [exportName, initStatement] = initStatements[i + j];
+
+ if (initStatement !== null) {
+ if (uninitializedExportNames.length > 0) {
+ results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
+ uninitializedExportNames = [];
+ }
+
+ results.push(initStatement);
+ } else {
+ uninitializedExportNames.push(exportName);
+ }
+ }
+
+ if (uninitializedExportNames.length > 0) {
+ results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
+ }
+ }
+ }
+
+ return results;
+}
+
+const InitTemplate = {
+ computed: _template.default.expression`EXPORTS["NAME"] = VALUE`,
+ default: _template.default.expression`EXPORTS.NAME = VALUE`
+};
+
+function buildInitStatement(metadata, exportNames, initExpr) {
+ const {
+ stringSpecifiers,
+ exportName: EXPORTS
+ } = metadata;
+ return expressionStatement(exportNames.reduce((acc, exportName) => {
+ const params = {
+ EXPORTS,
+ NAME: exportName,
+ VALUE: acc
+ };
+
+ if (stringSpecifiers.has(exportName)) {
+ return InitTemplate.computed(params);
+ } else {
+ return InitTemplate.default(params);
+ }
+ }, initExpr));
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
new file mode 100644
index 0000000000..f98ee95e0f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/normalize-and-load-metadata.js
@@ -0,0 +1,398 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = normalizeModuleAndLoadMetadata;
+exports.hasExports = hasExports;
+exports.isSideEffectImport = isSideEffectImport;
+exports.validateImportInteropOption = validateImportInteropOption;
+
+var _path = require("path");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration");
+
+function hasExports(metadata) {
+ return metadata.hasExports;
+}
+
+function isSideEffectImport(source) {
+ return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll;
+}
+
+function validateImportInteropOption(importInterop) {
+ if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") {
+ throw new Error(`.importInterop must be one of "none", "babel", "node", or a function returning one of those values (received ${importInterop}).`);
+ }
+
+ return importInterop;
+}
+
+function resolveImportInterop(importInterop, source) {
+ if (typeof importInterop === "function") {
+ return validateImportInteropOption(importInterop(source));
+ }
+
+ return importInterop;
+}
+
+function normalizeModuleAndLoadMetadata(programPath, exportName, {
+ importInterop,
+ initializeReexports = false,
+ lazy = false,
+ esNamespaceOnly = false
+}) {
+ if (!exportName) {
+ exportName = programPath.scope.generateUidIdentifier("exports").name;
+ }
+
+ const stringSpecifiers = new Set();
+ nameAnonymousExports(programPath);
+ const {
+ local,
+ source,
+ hasExports
+ } = getModuleMetadata(programPath, {
+ initializeReexports,
+ lazy
+ }, stringSpecifiers);
+ removeModuleDeclarations(programPath);
+
+ for (const [, metadata] of source) {
+ if (metadata.importsNamespace.size > 0) {
+ metadata.name = metadata.importsNamespace.values().next().value;
+ }
+
+ const resolvedInterop = resolveImportInterop(importInterop, metadata.source);
+
+ if (resolvedInterop === "none") {
+ metadata.interop = "none";
+ } else if (resolvedInterop === "node" && metadata.interop === "namespace") {
+ metadata.interop = "node-namespace";
+ } else if (resolvedInterop === "node" && metadata.interop === "default") {
+ metadata.interop = "node-default";
+ } else if (esNamespaceOnly && metadata.interop === "namespace") {
+ metadata.interop = "default";
+ }
+ }
+
+ return {
+ exportName,
+ exportNameListName: null,
+ hasExports,
+ local,
+ source,
+ stringSpecifiers
+ };
+}
+
+function getExportSpecifierName(path, stringSpecifiers) {
+ if (path.isIdentifier()) {
+ return path.node.name;
+ } else if (path.isStringLiteral()) {
+ const stringValue = path.node.value;
+
+ if (!(0, _helperValidatorIdentifier.isIdentifierName)(stringValue)) {
+ stringSpecifiers.add(stringValue);
+ }
+
+ return stringValue;
+ } else {
+ throw new Error(`Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`);
+ }
+}
+
+function assertExportSpecifier(path) {
+ if (path.isExportSpecifier()) {
+ return;
+ } else if (path.isExportNamespaceSpecifier()) {
+ throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-proposal-export-namespace-from`.");
+ } else {
+ throw path.buildCodeFrameError("Unexpected export specifier type");
+ }
+}
+
+function getModuleMetadata(programPath, {
+ lazy,
+ initializeReexports
+}, stringSpecifiers) {
+ const localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers);
+ const sourceData = new Map();
+
+ const getData = sourceNode => {
+ const source = sourceNode.value;
+ let data = sourceData.get(source);
+
+ if (!data) {
+ data = {
+ name: programPath.scope.generateUidIdentifier((0, _path.basename)(source, (0, _path.extname)(source))).name,
+ interop: "none",
+ loc: null,
+ imports: new Map(),
+ importsNamespace: new Set(),
+ reexports: new Map(),
+ reexportNamespace: new Set(),
+ reexportAll: null,
+ lazy: false,
+ source
+ };
+ sourceData.set(source, data);
+ }
+
+ return data;
+ };
+
+ let hasExports = false;
+ programPath.get("body").forEach(child => {
+ if (child.isImportDeclaration()) {
+ const data = getData(child.node.source);
+ if (!data.loc) data.loc = child.node.loc;
+ child.get("specifiers").forEach(spec => {
+ if (spec.isImportDefaultSpecifier()) {
+ const localName = spec.get("local").node.name;
+ data.imports.set(localName, "default");
+ const reexport = localData.get(localName);
+
+ if (reexport) {
+ localData.delete(localName);
+ reexport.names.forEach(name => {
+ data.reexports.set(name, "default");
+ });
+ }
+ } else if (spec.isImportNamespaceSpecifier()) {
+ const localName = spec.get("local").node.name;
+ data.importsNamespace.add(localName);
+ const reexport = localData.get(localName);
+
+ if (reexport) {
+ localData.delete(localName);
+ reexport.names.forEach(name => {
+ data.reexportNamespace.add(name);
+ });
+ }
+ } else if (spec.isImportSpecifier()) {
+ const importName = getExportSpecifierName(spec.get("imported"), stringSpecifiers);
+ const localName = spec.get("local").node.name;
+ data.imports.set(localName, importName);
+ const reexport = localData.get(localName);
+
+ if (reexport) {
+ localData.delete(localName);
+ reexport.names.forEach(name => {
+ data.reexports.set(name, importName);
+ });
+ }
+ }
+ });
+ } else if (child.isExportAllDeclaration()) {
+ hasExports = true;
+ const data = getData(child.node.source);
+ if (!data.loc) data.loc = child.node.loc;
+ data.reexportAll = {
+ loc: child.node.loc
+ };
+ } else if (child.isExportNamedDeclaration() && child.node.source) {
+ hasExports = true;
+ const data = getData(child.node.source);
+ if (!data.loc) data.loc = child.node.loc;
+ child.get("specifiers").forEach(spec => {
+ assertExportSpecifier(spec);
+ const importName = getExportSpecifierName(spec.get("local"), stringSpecifiers);
+ const exportName = getExportSpecifierName(spec.get("exported"), stringSpecifiers);
+ data.reexports.set(exportName, importName);
+
+ if (exportName === "__esModule") {
+ throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".');
+ }
+ });
+ } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) {
+ hasExports = true;
+ }
+ });
+
+ for (const metadata of sourceData.values()) {
+ let needsDefault = false;
+ let needsNamed = false;
+
+ if (metadata.importsNamespace.size > 0) {
+ needsDefault = true;
+ needsNamed = true;
+ }
+
+ if (metadata.reexportAll) {
+ needsNamed = true;
+ }
+
+ for (const importName of metadata.imports.values()) {
+ if (importName === "default") needsDefault = true;else needsNamed = true;
+ }
+
+ for (const importName of metadata.reexports.values()) {
+ if (importName === "default") needsDefault = true;else needsNamed = true;
+ }
+
+ if (needsDefault && needsNamed) {
+ metadata.interop = "namespace";
+ } else if (needsDefault) {
+ metadata.interop = "default";
+ }
+ }
+
+ for (const [source, metadata] of sourceData) {
+ if (lazy !== false && !(isSideEffectImport(metadata) || metadata.reexportAll)) {
+ if (lazy === true) {
+ metadata.lazy = !/\./.test(source);
+ } else if (Array.isArray(lazy)) {
+ metadata.lazy = lazy.indexOf(source) !== -1;
+ } else if (typeof lazy === "function") {
+ metadata.lazy = lazy(source);
+ } else {
+ throw new Error(`.lazy must be a boolean, string array, or function`);
+ }
+ }
+ }
+
+ return {
+ hasExports,
+ local: localData,
+ source: sourceData
+ };
+}
+
+function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) {
+ const bindingKindLookup = new Map();
+ programPath.get("body").forEach(child => {
+ let kind;
+
+ if (child.isImportDeclaration()) {
+ kind = "import";
+ } else {
+ if (child.isExportDefaultDeclaration()) child = child.get("declaration");
+
+ if (child.isExportNamedDeclaration()) {
+ if (child.node.declaration) {
+ child = child.get("declaration");
+ } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) {
+ child.get("specifiers").forEach(spec => {
+ assertExportSpecifier(spec);
+ bindingKindLookup.set(spec.get("local").node.name, "block");
+ });
+ return;
+ }
+ }
+
+ if (child.isFunctionDeclaration()) {
+ kind = "hoisted";
+ } else if (child.isClassDeclaration()) {
+ kind = "block";
+ } else if (child.isVariableDeclaration({
+ kind: "var"
+ })) {
+ kind = "var";
+ } else if (child.isVariableDeclaration()) {
+ kind = "block";
+ } else {
+ return;
+ }
+ }
+
+ Object.keys(child.getOuterBindingIdentifiers()).forEach(name => {
+ bindingKindLookup.set(name, kind);
+ });
+ });
+ const localMetadata = new Map();
+
+ const getLocalMetadata = idPath => {
+ const localName = idPath.node.name;
+ let metadata = localMetadata.get(localName);
+
+ if (!metadata) {
+ const kind = bindingKindLookup.get(localName);
+
+ if (kind === undefined) {
+ throw idPath.buildCodeFrameError(`Exporting local "${localName}", which is not declared.`);
+ }
+
+ metadata = {
+ names: [],
+ kind
+ };
+ localMetadata.set(localName, metadata);
+ }
+
+ return metadata;
+ };
+
+ programPath.get("body").forEach(child => {
+ if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) {
+ if (child.node.declaration) {
+ const declaration = child.get("declaration");
+ const ids = declaration.getOuterBindingIdentifierPaths();
+ Object.keys(ids).forEach(name => {
+ if (name === "__esModule") {
+ throw declaration.buildCodeFrameError('Illegal export "__esModule".');
+ }
+
+ getLocalMetadata(ids[name]).names.push(name);
+ });
+ } else {
+ child.get("specifiers").forEach(spec => {
+ const local = spec.get("local");
+ const exported = spec.get("exported");
+ const localMetadata = getLocalMetadata(local);
+ const exportName = getExportSpecifierName(exported, stringSpecifiers);
+
+ if (exportName === "__esModule") {
+ throw exported.buildCodeFrameError('Illegal export "__esModule".');
+ }
+
+ localMetadata.names.push(exportName);
+ });
+ }
+ } else if (child.isExportDefaultDeclaration()) {
+ const declaration = child.get("declaration");
+
+ if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
+ getLocalMetadata(declaration.get("id")).names.push("default");
+ } else {
+ throw declaration.buildCodeFrameError("Unexpected default expression export.");
+ }
+ }
+ });
+ return localMetadata;
+}
+
+function nameAnonymousExports(programPath) {
+ programPath.get("body").forEach(child => {
+ if (!child.isExportDefaultDeclaration()) return;
+ (0, _helperSplitExportDeclaration.default)(child);
+ });
+}
+
+function removeModuleDeclarations(programPath) {
+ programPath.get("body").forEach(child => {
+ if (child.isImportDeclaration()) {
+ child.remove();
+ } else if (child.isExportNamedDeclaration()) {
+ if (child.node.declaration) {
+ child.node.declaration._blockHoist = child.node._blockHoist;
+ child.replaceWith(child.node.declaration);
+ } else {
+ child.remove();
+ }
+ } else if (child.isExportDefaultDeclaration()) {
+ const declaration = child.get("declaration");
+
+ if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
+ declaration._blockHoist = child.node._blockHoist;
+ child.replaceWith(declaration);
+ } else {
+ throw declaration.buildCodeFrameError("Unexpected default expression export.");
+ }
+ } else if (child.isExportAllDeclaration()) {
+ child.remove();
+ }
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js
new file mode 100644
index 0000000000..8173fd57f2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-live-references.js
@@ -0,0 +1,360 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = rewriteLiveReferences;
+
+var _assert = require("assert");
+
+var _t = require("@babel/types");
+
+var _template = require("@babel/template");
+
+var _helperSimpleAccess = require("@babel/helper-simple-access");
+
+const {
+ assignmentExpression,
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ getOuterBindingIdentifiers,
+ identifier,
+ isMemberExpression,
+ isVariableDeclaration,
+ jsxIdentifier,
+ jsxMemberExpression,
+ memberExpression,
+ numericLiteral,
+ sequenceExpression,
+ stringLiteral,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function isInType(path) {
+ do {
+ switch (path.parent.type) {
+ case "TSTypeAnnotation":
+ case "TSTypeAliasDeclaration":
+ case "TSTypeReference":
+ case "TypeAnnotation":
+ case "TypeAlias":
+ return true;
+
+ case "ExportSpecifier":
+ return path.parentPath.parent.exportKind === "type";
+
+ default:
+ if (path.parentPath.isStatement() || path.parentPath.isExpression()) {
+ return false;
+ }
+
+ }
+ } while (path = path.parentPath);
+}
+
+function rewriteLiveReferences(programPath, metadata) {
+ const imported = new Map();
+ const exported = new Map();
+
+ const requeueInParent = path => {
+ programPath.requeue(path);
+ };
+
+ for (const [source, data] of metadata.source) {
+ for (const [localName, importName] of data.imports) {
+ imported.set(localName, [source, importName, null]);
+ }
+
+ for (const localName of data.importsNamespace) {
+ imported.set(localName, [source, null, localName]);
+ }
+ }
+
+ for (const [local, data] of metadata.local) {
+ let exportMeta = exported.get(local);
+
+ if (!exportMeta) {
+ exportMeta = [];
+ exported.set(local, exportMeta);
+ }
+
+ exportMeta.push(...data.names);
+ }
+
+ const rewriteBindingInitVisitorState = {
+ metadata,
+ requeueInParent,
+ scope: programPath.scope,
+ exported
+ };
+ programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState);
+ (0, _helperSimpleAccess.default)(programPath, new Set([...Array.from(imported.keys()), ...Array.from(exported.keys())]));
+ const rewriteReferencesVisitorState = {
+ seen: new WeakSet(),
+ metadata,
+ requeueInParent,
+ scope: programPath.scope,
+ imported,
+ exported,
+ buildImportReference: ([source, importName, localName], identNode) => {
+ const meta = metadata.source.get(source);
+
+ if (localName) {
+ if (meta.lazy) identNode = callExpression(identNode, []);
+ return identNode;
+ }
+
+ let namespace = identifier(meta.name);
+ if (meta.lazy) namespace = callExpression(namespace, []);
+
+ if (importName === "default" && meta.interop === "node-default") {
+ return namespace;
+ }
+
+ const computed = metadata.stringSpecifiers.has(importName);
+ return memberExpression(namespace, computed ? stringLiteral(importName) : identifier(importName), computed);
+ }
+ };
+ programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState);
+}
+
+const rewriteBindingInitVisitor = {
+ Scope(path) {
+ path.skip();
+ },
+
+ ClassDeclaration(path) {
+ const {
+ requeueInParent,
+ exported,
+ metadata
+ } = this;
+ const {
+ id
+ } = path.node;
+ if (!id) throw new Error("Expected class to have a name");
+ const localName = id.name;
+ const exportNames = exported.get(localName) || [];
+
+ if (exportNames.length > 0) {
+ const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName)));
+ statement._blockHoist = path.node._blockHoist;
+ requeueInParent(path.insertAfter(statement)[0]);
+ }
+ },
+
+ VariableDeclaration(path) {
+ const {
+ requeueInParent,
+ exported,
+ metadata
+ } = this;
+ Object.keys(path.getOuterBindingIdentifiers()).forEach(localName => {
+ const exportNames = exported.get(localName) || [];
+
+ if (exportNames.length > 0) {
+ const statement = expressionStatement(buildBindingExportAssignmentExpression(metadata, exportNames, identifier(localName)));
+ statement._blockHoist = path.node._blockHoist;
+ requeueInParent(path.insertAfter(statement)[0]);
+ }
+ });
+ }
+
+};
+
+const buildBindingExportAssignmentExpression = (metadata, exportNames, localExpr) => {
+ return (exportNames || []).reduce((expr, exportName) => {
+ const {
+ stringSpecifiers
+ } = metadata;
+ const computed = stringSpecifiers.has(exportName);
+ return assignmentExpression("=", memberExpression(identifier(metadata.exportName), computed ? stringLiteral(exportName) : identifier(exportName), computed), expr);
+ }, localExpr);
+};
+
+const buildImportThrow = localName => {
+ return _template.default.expression.ast`
+ (function() {
+ throw new Error('"' + '${localName}' + '" is read-only.');
+ })()
+ `;
+};
+
+const rewriteReferencesVisitor = {
+ ReferencedIdentifier(path) {
+ const {
+ seen,
+ buildImportReference,
+ scope,
+ imported,
+ requeueInParent
+ } = this;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const localName = path.node.name;
+ const importData = imported.get(localName);
+
+ if (importData) {
+ if (isInType(path)) {
+ throw path.buildCodeFrameError(`Cannot transform the imported binding "${localName}" since it's also used in a type annotation. ` + `Please strip type annotations using @babel/preset-typescript or @babel/preset-flow.`);
+ }
+
+ const localBinding = path.scope.getBinding(localName);
+ const rootBinding = scope.getBinding(localName);
+ if (rootBinding !== localBinding) return;
+ const ref = buildImportReference(importData, path.node);
+ ref.loc = path.node.loc;
+
+ if ((path.parentPath.isCallExpression({
+ callee: path.node
+ }) || path.parentPath.isOptionalCallExpression({
+ callee: path.node
+ }) || path.parentPath.isTaggedTemplateExpression({
+ tag: path.node
+ })) && isMemberExpression(ref)) {
+ path.replaceWith(sequenceExpression([numericLiteral(0), ref]));
+ } else if (path.isJSXIdentifier() && isMemberExpression(ref)) {
+ const {
+ object,
+ property
+ } = ref;
+ path.replaceWith(jsxMemberExpression(jsxIdentifier(object.name), jsxIdentifier(property.name)));
+ } else {
+ path.replaceWith(ref);
+ }
+
+ requeueInParent(path);
+ path.skip();
+ }
+ },
+
+ AssignmentExpression: {
+ exit(path) {
+ const {
+ scope,
+ seen,
+ imported,
+ exported,
+ requeueInParent,
+ buildImportReference
+ } = this;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const left = path.get("left");
+ if (left.isMemberExpression()) return;
+
+ if (left.isIdentifier()) {
+ const localName = left.node.name;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ const exportedNames = exported.get(localName);
+ const importData = imported.get(localName);
+
+ if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
+ _assert(path.node.operator === "=", "Path was not simplified");
+
+ const assignment = path.node;
+
+ if (importData) {
+ assignment.left = buildImportReference(importData, assignment.left);
+ assignment.right = sequenceExpression([assignment.right, buildImportThrow(localName)]);
+ }
+
+ path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment));
+ requeueInParent(path);
+ }
+ } else {
+ const ids = left.getOuterBindingIdentifiers();
+ const programScopeIds = Object.keys(ids).filter(localName => scope.getBinding(localName) === path.scope.getBinding(localName));
+ const id = programScopeIds.find(localName => imported.has(localName));
+
+ if (id) {
+ path.node.right = sequenceExpression([path.node.right, buildImportThrow(id)]);
+ }
+
+ const items = [];
+ programScopeIds.forEach(localName => {
+ const exportedNames = exported.get(localName) || [];
+
+ if (exportedNames.length > 0) {
+ items.push(buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier(localName)));
+ }
+ });
+
+ if (items.length > 0) {
+ let node = sequenceExpression(items);
+
+ if (path.parentPath.isExpressionStatement()) {
+ node = expressionStatement(node);
+ node._blockHoist = path.parentPath.node._blockHoist;
+ }
+
+ const statement = path.insertAfter(node)[0];
+ requeueInParent(statement);
+ }
+ }
+ }
+
+ },
+
+ "ForOfStatement|ForInStatement"(path) {
+ const {
+ scope,
+ node
+ } = path;
+ const {
+ left
+ } = node;
+ const {
+ exported,
+ imported,
+ scope: programScope
+ } = this;
+
+ if (!isVariableDeclaration(left)) {
+ let didTransformExport = false,
+ importConstViolationName;
+ const loopBodyScope = path.get("body").scope;
+
+ for (const name of Object.keys(getOuterBindingIdentifiers(left))) {
+ if (programScope.getBinding(name) === scope.getBinding(name)) {
+ if (exported.has(name)) {
+ didTransformExport = true;
+
+ if (loopBodyScope.hasOwnBinding(name)) {
+ loopBodyScope.rename(name);
+ }
+ }
+
+ if (imported.has(name) && !importConstViolationName) {
+ importConstViolationName = name;
+ }
+ }
+ }
+
+ if (!didTransformExport && !importConstViolationName) {
+ return;
+ }
+
+ path.ensureBlock();
+ const bodyPath = path.get("body");
+ const newLoopId = scope.generateUidIdentifierBasedOnNode(left);
+ path.get("left").replaceWith(variableDeclaration("let", [variableDeclarator(cloneNode(newLoopId))]));
+ scope.registerDeclaration(path.get("left"));
+
+ if (didTransformExport) {
+ bodyPath.unshiftContainer("body", expressionStatement(assignmentExpression("=", left, newLoopId)));
+ }
+
+ if (importConstViolationName) {
+ bodyPath.unshiftContainer("body", expressionStatement(buildImportThrow(importConstViolationName)));
+ }
+ }
+ }
+
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js
new file mode 100644
index 0000000000..0f32b201db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/lib/rewrite-this.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = rewriteThis;
+
+var _helperReplaceSupers = require("@babel/helper-replace-supers");
+
+var _traverse = require("@babel/traverse");
+
+var _t = require("@babel/types");
+
+const {
+ numericLiteral,
+ unaryExpression
+} = _t;
+
+function rewriteThis(programPath) {
+ (0, _traverse.default)(programPath.node, Object.assign({}, rewriteThisVisitor, {
+ noScope: true
+ }));
+}
+
+const rewriteThisVisitor = _traverse.default.visitors.merge([_helperReplaceSupers.environmentVisitor, {
+ ThisExpression(path) {
+ path.replaceWith(unaryExpression("void", numericLiteral(0), true));
+ }
+
+}]); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json
new file mode 100644
index 0000000000..a24dca288c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-module-transforms/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@babel/helper-module-transforms",
+ "version": "7.16.0",
+ "description": "Babel helper functions for implementing ES6 module transformations",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-module-transforms",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-module-transforms"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.16.0",
+ "@babel/helper-replace-supers": "^7.16.0",
+ "@babel/helper-simple-access": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/README.md
new file mode 100644
index 0000000000..3fdbc9bf18
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-optimise-call-expression
+
+> Helper function to optimise call expression
+
+See our website [@babel/helper-optimise-call-expression](https://babeljs.io/docs/en/babel-helper-optimise-call-expression) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-optimise-call-expression
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-optimise-call-expression --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/lib/index.js
new file mode 100644
index 0000000000..c5a27e1ec0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/lib/index.js
@@ -0,0 +1,36 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = optimiseCallExpression;
+
+var _t = require("@babel/types");
+
+const {
+ callExpression,
+ identifier,
+ isIdentifier,
+ isSpreadElement,
+ memberExpression,
+ optionalCallExpression,
+ optionalMemberExpression
+} = _t;
+
+function optimiseCallExpression(callee, thisNode, args, optional) {
+ if (args.length === 1 && isSpreadElement(args[0]) && isIdentifier(args[0].argument, {
+ name: "arguments"
+ })) {
+ if (optional) {
+ return optionalCallExpression(optionalMemberExpression(callee, identifier("apply"), false, true), [thisNode, args[0].argument], false);
+ }
+
+ return callExpression(memberExpression(callee, identifier("apply")), [thisNode, args[0].argument]);
+ } else {
+ if (optional) {
+ return optionalCallExpression(optionalMemberExpression(callee, identifier("call"), false, true), [thisNode, ...args], false);
+ }
+
+ return callExpression(memberExpression(callee, identifier("call")), [thisNode, ...args]);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/package.json
new file mode 100644
index 0000000000..19ad3f3ddf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-optimise-call-expression/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@babel/helper-optimise-call-expression",
+ "version": "7.16.0",
+ "description": "Helper function to optimise call expression",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-optimise-call-expression"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-optimise-call-expression",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "devDependencies": {
+ "@babel/generator": "^7.16.0",
+ "@babel/parser": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/README.md
new file mode 100644
index 0000000000..54975ea774
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-plugin-utils
+
+> General utilities for plugins to use
+
+See our website [@babel/helper-plugin-utils](https://babeljs.io/docs/en/babel-helper-plugin-utils) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-plugin-utils
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-plugin-utils --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js
new file mode 100644
index 0000000000..0ba1be0221
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/lib/index.js
@@ -0,0 +1,90 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.declare = declare;
+
+function declare(builder) {
+ return (api, options, dirname) => {
+ var _clonedApi2;
+
+ let clonedApi;
+
+ for (const name of Object.keys(apiPolyfills)) {
+ var _clonedApi;
+
+ if (api[name]) continue;
+ clonedApi = (_clonedApi = clonedApi) != null ? _clonedApi : copyApiObject(api);
+ clonedApi[name] = apiPolyfills[name](clonedApi);
+ }
+
+ return builder((_clonedApi2 = clonedApi) != null ? _clonedApi2 : api, options || {}, dirname);
+ };
+}
+
+const apiPolyfills = {
+ assertVersion: api => range => {
+ throwVersionError(range, api.version);
+ },
+ targets: () => () => {
+ return {};
+ },
+ assumption: () => () => {}
+};
+
+function copyApiObject(api) {
+ let proto = null;
+
+ if (typeof api.version === "string" && /^7\./.test(api.version)) {
+ proto = Object.getPrototypeOf(api);
+
+ if (proto && (!has(proto, "version") || !has(proto, "transform") || !has(proto, "template") || !has(proto, "types"))) {
+ proto = null;
+ }
+ }
+
+ return Object.assign({}, proto, api);
+}
+
+function has(obj, key) {
+ return Object.prototype.hasOwnProperty.call(obj, key);
+}
+
+function throwVersionError(range, version) {
+ if (typeof range === "number") {
+ if (!Number.isInteger(range)) {
+ throw new Error("Expected string or integer value.");
+ }
+
+ range = `^${range}.0.0-0`;
+ }
+
+ if (typeof range !== "string") {
+ throw new Error("Expected string or integer value.");
+ }
+
+ const limit = Error.stackTraceLimit;
+
+ if (typeof limit === "number" && limit < 25) {
+ Error.stackTraceLimit = 25;
+ }
+
+ let err;
+
+ if (version.slice(0, 2) === "7.") {
+ err = new Error(`Requires Babel "^7.0.0-beta.41", but was loaded with "${version}". ` + `You'll need to update your @babel/core version.`);
+ } else {
+ err = new Error(`Requires Babel "${range}", but was loaded with "${version}". ` + `If you are sure you have a compatible version of @babel/core, ` + `it is likely that something in your build process is loading the ` + `wrong version. Inspect the stack trace of this error to look for ` + `the first entry that doesn't mention "@babel/core" or "babel-core" ` + `to see what is calling Babel.`);
+ }
+
+ if (typeof limit === "number") {
+ Error.stackTraceLimit = limit;
+ }
+
+ throw Object.assign(err, {
+ code: "BABEL_VERSION_UNSUPPORTED",
+ version,
+ range
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json
new file mode 100644
index 0000000000..237e8ad738
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-plugin-utils/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "@babel/helper-plugin-utils",
+ "version": "7.14.5",
+ "description": "General utilities for plugins to use",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-plugin-utils",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-plugin-utils"
+ },
+ "main": "./lib/index.js",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/README.md
new file mode 100644
index 0000000000..774e0fa49b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-replace-supers
+
+> Helper function to replace supers
+
+See our website [@babel/helper-replace-supers](https://babeljs.io/docs/en/babel-helper-replace-supers) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-replace-supers
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-replace-supers --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/lib/index.js
new file mode 100644
index 0000000000..ce1f2647ae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/lib/index.js
@@ -0,0 +1,293 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.environmentVisitor = exports.default = void 0;
+exports.skipAllButComputedKey = skipAllButComputedKey;
+
+var _traverse = require("@babel/traverse");
+
+var _helperMemberExpressionToFunctions = require("@babel/helper-member-expression-to-functions");
+
+var _helperOptimiseCallExpression = require("@babel/helper-optimise-call-expression");
+
+var _t = require("@babel/types");
+
+const {
+ VISITOR_KEYS,
+ assignmentExpression,
+ booleanLiteral,
+ callExpression,
+ cloneNode,
+ identifier,
+ memberExpression,
+ sequenceExpression,
+ staticBlock,
+ stringLiteral,
+ thisExpression
+} = _t;
+
+function getPrototypeOfExpression(objectRef, isStatic, file, isPrivateMethod) {
+ objectRef = cloneNode(objectRef);
+ const targetRef = isStatic || isPrivateMethod ? objectRef : memberExpression(objectRef, identifier("prototype"));
+ return callExpression(file.addHelper("getPrototypeOf"), [targetRef]);
+}
+
+function skipAllButComputedKey(path) {
+ if (!path.node.computed) {
+ path.skip();
+ return;
+ }
+
+ const keys = VISITOR_KEYS[path.type];
+
+ for (const key of keys) {
+ if (key !== "key") path.skipKey(key);
+ }
+}
+
+const environmentVisitor = {
+ [`${staticBlock ? "StaticBlock|" : ""}ClassPrivateProperty|TypeAnnotation`](path) {
+ path.skip();
+ },
+
+ Function(path) {
+ if (path.isMethod()) return;
+ if (path.isArrowFunctionExpression()) return;
+ path.skip();
+ },
+
+ "Method|ClassProperty"(path) {
+ skipAllButComputedKey(path);
+ }
+
+};
+exports.environmentVisitor = environmentVisitor;
+
+const visitor = _traverse.default.visitors.merge([environmentVisitor, {
+ Super(path, state) {
+ const {
+ node,
+ parentPath
+ } = path;
+ if (!parentPath.isMemberExpression({
+ object: node
+ })) return;
+ state.handle(parentPath);
+ }
+
+}]);
+
+const unshadowSuperBindingVisitor = _traverse.default.visitors.merge([environmentVisitor, {
+ Scopable(path, {
+ refName
+ }) {
+ const binding = path.scope.getOwnBinding(refName);
+
+ if (binding && binding.identifier.name === refName) {
+ path.scope.rename(refName);
+ }
+ }
+
+}]);
+
+const specHandlers = {
+ memoise(superMember, count) {
+ const {
+ scope,
+ node
+ } = superMember;
+ const {
+ computed,
+ property
+ } = node;
+
+ if (!computed) {
+ return;
+ }
+
+ const memo = scope.maybeGenerateMemoised(property);
+
+ if (!memo) {
+ return;
+ }
+
+ this.memoiser.set(property, memo, count);
+ },
+
+ prop(superMember) {
+ const {
+ computed,
+ property
+ } = superMember.node;
+
+ if (this.memoiser.has(property)) {
+ return cloneNode(this.memoiser.get(property));
+ }
+
+ if (computed) {
+ return cloneNode(property);
+ }
+
+ return stringLiteral(property.name);
+ },
+
+ get(superMember) {
+ return this._get(superMember, this._getThisRefs());
+ },
+
+ _get(superMember, thisRefs) {
+ const proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod);
+ return callExpression(this.file.addHelper("get"), [thisRefs.memo ? sequenceExpression([thisRefs.memo, proto]) : proto, this.prop(superMember), thisRefs.this]);
+ },
+
+ _getThisRefs() {
+ if (!this.isDerivedConstructor) {
+ return {
+ this: thisExpression()
+ };
+ }
+
+ const thisRef = this.scope.generateDeclaredUidIdentifier("thisSuper");
+ return {
+ memo: assignmentExpression("=", thisRef, thisExpression()),
+ this: cloneNode(thisRef)
+ };
+ },
+
+ set(superMember, value) {
+ const thisRefs = this._getThisRefs();
+
+ const proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod);
+ return callExpression(this.file.addHelper("set"), [thisRefs.memo ? sequenceExpression([thisRefs.memo, proto]) : proto, this.prop(superMember), value, thisRefs.this, booleanLiteral(superMember.isInStrictMode())]);
+ },
+
+ destructureSet(superMember) {
+ throw superMember.buildCodeFrameError(`Destructuring to a super field is not supported yet.`);
+ },
+
+ call(superMember, args) {
+ const thisRefs = this._getThisRefs();
+
+ return (0, _helperOptimiseCallExpression.default)(this._get(superMember, thisRefs), cloneNode(thisRefs.this), args, false);
+ },
+
+ optionalCall(superMember, args) {
+ const thisRefs = this._getThisRefs();
+
+ return (0, _helperOptimiseCallExpression.default)(this._get(superMember, thisRefs), cloneNode(thisRefs.this), args, true);
+ }
+
+};
+const looseHandlers = Object.assign({}, specHandlers, {
+ prop(superMember) {
+ const {
+ property
+ } = superMember.node;
+
+ if (this.memoiser.has(property)) {
+ return cloneNode(this.memoiser.get(property));
+ }
+
+ return cloneNode(property);
+ },
+
+ get(superMember) {
+ const {
+ isStatic,
+ getSuperRef
+ } = this;
+ const {
+ computed
+ } = superMember.node;
+ const prop = this.prop(superMember);
+ let object;
+
+ if (isStatic) {
+ var _getSuperRef;
+
+ object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : memberExpression(identifier("Function"), identifier("prototype"));
+ } else {
+ var _getSuperRef2;
+
+ object = memberExpression((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : identifier("Object"), identifier("prototype"));
+ }
+
+ return memberExpression(object, prop, computed);
+ },
+
+ set(superMember, value) {
+ const {
+ computed
+ } = superMember.node;
+ const prop = this.prop(superMember);
+ return assignmentExpression("=", memberExpression(thisExpression(), prop, computed), value);
+ },
+
+ destructureSet(superMember) {
+ const {
+ computed
+ } = superMember.node;
+ const prop = this.prop(superMember);
+ return memberExpression(thisExpression(), prop, computed);
+ },
+
+ call(superMember, args) {
+ return (0, _helperOptimiseCallExpression.default)(this.get(superMember), thisExpression(), args, false);
+ },
+
+ optionalCall(superMember, args) {
+ return (0, _helperOptimiseCallExpression.default)(this.get(superMember), thisExpression(), args, true);
+ }
+
+});
+
+class ReplaceSupers {
+ constructor(opts) {
+ var _opts$constantSuper;
+
+ const path = opts.methodPath;
+ this.methodPath = path;
+ this.isDerivedConstructor = path.isClassMethod({
+ kind: "constructor"
+ }) && !!opts.superRef;
+ this.isStatic = path.isObjectMethod() || path.node.static || (path.isStaticBlock == null ? void 0 : path.isStaticBlock());
+ this.isPrivateMethod = path.isPrivate() && path.isMethod();
+ this.file = opts.file;
+ this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose;
+ this.opts = opts;
+ }
+
+ getObjectRef() {
+ return cloneNode(this.opts.objectRef || this.opts.getObjectRef());
+ }
+
+ getSuperRef() {
+ if (this.opts.superRef) return cloneNode(this.opts.superRef);
+ if (this.opts.getSuperRef) return cloneNode(this.opts.getSuperRef());
+ }
+
+ replace() {
+ if (this.opts.refToPreserve) {
+ this.methodPath.traverse(unshadowSuperBindingVisitor, {
+ refName: this.opts.refToPreserve.name
+ });
+ }
+
+ const handler = this.constantSuper ? looseHandlers : specHandlers;
+ (0, _helperMemberExpressionToFunctions.default)(this.methodPath, visitor, Object.assign({
+ file: this.file,
+ scope: this.methodPath.scope,
+ isDerivedConstructor: this.isDerivedConstructor,
+ isStatic: this.isStatic,
+ isPrivateMethod: this.isPrivateMethod,
+ getObjectRef: this.getObjectRef.bind(this),
+ getSuperRef: this.getSuperRef.bind(this),
+ boundGet: handler.get
+ }, handler));
+ }
+
+}
+
+exports.default = ReplaceSupers; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/package.json
new file mode 100644
index 0000000000..78e5c777d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-replace-supers/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@babel/helper-replace-supers",
+ "version": "7.16.0",
+ "description": "Helper function to replace supers",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-replace-supers"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-replace-supers",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-member-expression-to-functions": "^7.16.0",
+ "@babel/helper-optimise-call-expression": "^7.16.0",
+ "@babel/traverse": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/README.md
new file mode 100644
index 0000000000..1e15dfa24d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-simple-access
+
+> Babel helper for ensuring that access to a given value is performed through simple accesses
+
+See our website [@babel/helper-simple-access](https://babeljs.io/docs/en/babel-helper-simple-access) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-simple-access
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-simple-access --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js
new file mode 100644
index 0000000000..69bacda62d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/lib/index.js
@@ -0,0 +1,93 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = simplifyAccess;
+
+var _t = require("@babel/types");
+
+const {
+ LOGICAL_OPERATORS,
+ assignmentExpression,
+ binaryExpression,
+ cloneNode,
+ identifier,
+ logicalExpression,
+ numericLiteral,
+ sequenceExpression,
+ unaryExpression
+} = _t;
+
+function simplifyAccess(path, bindingNames) {
+ path.traverse(simpleAssignmentVisitor, {
+ scope: path.scope,
+ bindingNames,
+ seen: new WeakSet()
+ });
+}
+
+const simpleAssignmentVisitor = {
+ UpdateExpression: {
+ exit(path) {
+ const {
+ scope,
+ bindingNames
+ } = this;
+ const arg = path.get("argument");
+ if (!arg.isIdentifier()) return;
+ const localName = arg.node.name;
+ if (!bindingNames.has(localName)) return;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) {
+ const operator = path.node.operator == "++" ? "+=" : "-=";
+ path.replaceWith(assignmentExpression(operator, arg.node, numericLiteral(1)));
+ } else if (path.node.prefix) {
+ path.replaceWith(assignmentExpression("=", identifier(localName), binaryExpression(path.node.operator[0], unaryExpression("+", arg.node), numericLiteral(1))));
+ } else {
+ const old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old");
+ const varName = old.name;
+ path.scope.push({
+ id: old
+ });
+ const binary = binaryExpression(path.node.operator[0], identifier(varName), numericLiteral(1));
+ path.replaceWith(sequenceExpression([assignmentExpression("=", identifier(varName), unaryExpression("+", arg.node)), assignmentExpression("=", cloneNode(arg.node), binary), identifier(varName)]));
+ }
+ }
+
+ },
+ AssignmentExpression: {
+ exit(path) {
+ const {
+ scope,
+ seen,
+ bindingNames
+ } = this;
+ if (path.node.operator === "=") return;
+ if (seen.has(path.node)) return;
+ seen.add(path.node);
+ const left = path.get("left");
+ if (!left.isIdentifier()) return;
+ const localName = left.node.name;
+ if (!bindingNames.has(localName)) return;
+
+ if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
+ return;
+ }
+
+ const operator = path.node.operator.slice(0, -1);
+
+ if (LOGICAL_OPERATORS.includes(operator)) {
+ path.replaceWith(logicalExpression(operator, path.node.left, assignmentExpression("=", cloneNode(path.node.left), path.node.right)));
+ } else {
+ path.node.right = binaryExpression(operator, cloneNode(path.node.left), path.node.right);
+ path.node.operator = "=";
+ }
+ }
+
+ }
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json
new file mode 100644
index 0000000000..48d405f65e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-simple-access/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@babel/helper-simple-access",
+ "version": "7.16.0",
+ "description": "Babel helper for ensuring that access to a given value is performed through simple accesses",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-simple-access",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-simple-access"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "devDependencies": {
+ "@babel/traverse": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/README.md
new file mode 100644
index 0000000000..a6f5404604
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-split-export-declaration
+
+>
+
+See our website [@babel/helper-split-export-declaration](https://babeljs.io/docs/en/babel-helper-split-export-declaration) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-split-export-declaration
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-split-export-declaration --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js
new file mode 100644
index 0000000000..6007f89c28
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/lib/index.js
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = splitExportDeclaration;
+
+var _t = require("@babel/types");
+
+const {
+ cloneNode,
+ exportNamedDeclaration,
+ exportSpecifier,
+ identifier,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function splitExportDeclaration(exportDeclaration) {
+ if (!exportDeclaration.isExportDeclaration()) {
+ throw new Error("Only export declarations can be split.");
+ }
+
+ const isDefault = exportDeclaration.isExportDefaultDeclaration();
+ const declaration = exportDeclaration.get("declaration");
+ const isClassDeclaration = declaration.isClassDeclaration();
+
+ if (isDefault) {
+ const standaloneDeclaration = declaration.isFunctionDeclaration() || isClassDeclaration;
+ const scope = declaration.isScope() ? declaration.scope.parent : declaration.scope;
+ let id = declaration.node.id;
+ let needBindingRegistration = false;
+
+ if (!id) {
+ needBindingRegistration = true;
+ id = scope.generateUidIdentifier("default");
+
+ if (standaloneDeclaration || declaration.isFunctionExpression() || declaration.isClassExpression()) {
+ declaration.node.id = cloneNode(id);
+ }
+ }
+
+ const updatedDeclaration = standaloneDeclaration ? declaration : variableDeclaration("var", [variableDeclarator(cloneNode(id), declaration.node)]);
+ const updatedExportDeclaration = exportNamedDeclaration(null, [exportSpecifier(cloneNode(id), identifier("default"))]);
+ exportDeclaration.insertAfter(updatedExportDeclaration);
+ exportDeclaration.replaceWith(updatedDeclaration);
+
+ if (needBindingRegistration) {
+ scope.registerDeclaration(exportDeclaration);
+ }
+
+ return exportDeclaration;
+ }
+
+ if (exportDeclaration.get("specifiers").length > 0) {
+ throw new Error("It doesn't make sense to split exported specifiers.");
+ }
+
+ const bindingIdentifiers = declaration.getOuterBindingIdentifiers();
+ const specifiers = Object.keys(bindingIdentifiers).map(name => {
+ return exportSpecifier(identifier(name), identifier(name));
+ });
+ const aliasDeclar = exportNamedDeclaration(null, specifiers);
+ exportDeclaration.insertAfter(aliasDeclar);
+ exportDeclaration.replaceWith(declaration.node);
+ return exportDeclaration;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json
new file mode 100644
index 0000000000..04db2155e7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-split-export-declaration/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@babel/helper-split-export-declaration",
+ "version": "7.16.0",
+ "description": "",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-split-export-declaration"
+ },
+ "homepage": "https://babel.dev/docs/en/next/babel-helper-split-export-declaration",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/README.md
new file mode 100644
index 0000000000..6733576a8c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-identifier
+
+> Validate identifier/keywords name
+
+See our website [@babel/helper-validator-identifier](https://babeljs.io/docs/en/babel-helper-validator-identifier) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-validator-identifier
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-identifier --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/identifier.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/identifier.js
new file mode 100644
index 0000000000..b8a5d9a67f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/identifier.js
@@ -0,0 +1,84 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isIdentifierStart = isIdentifierStart;
+exports.isIdentifierChar = isIdentifierChar;
+exports.isIdentifierName = isIdentifierName;
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+
+ return false;
+}
+
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+
+function isIdentifierName(name) {
+ let isFirst = true;
+
+ for (let i = 0; i < name.length; i++) {
+ let cp = name.charCodeAt(i);
+
+ if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
+ const trail = name.charCodeAt(++i);
+
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+
+ if (isFirst) {
+ isFirst = false;
+
+ if (!isIdentifierStart(cp)) {
+ return false;
+ }
+ } else if (!isIdentifierChar(cp)) {
+ return false;
+ }
+ }
+
+ return !isFirst;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/index.js
new file mode 100644
index 0000000000..7b623c90a6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/index.js
@@ -0,0 +1,57 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "isIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierName;
+ }
+});
+Object.defineProperty(exports, "isIdentifierChar", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierChar;
+ }
+});
+Object.defineProperty(exports, "isIdentifierStart", {
+ enumerable: true,
+ get: function () {
+ return _identifier.isIdentifierStart;
+ }
+});
+Object.defineProperty(exports, "isReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindOnlyReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictBindReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictBindReservedWord;
+ }
+});
+Object.defineProperty(exports, "isStrictReservedWord", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isStrictReservedWord;
+ }
+});
+Object.defineProperty(exports, "isKeyword", {
+ enumerable: true,
+ get: function () {
+ return _keyword.isKeyword;
+ }
+});
+
+var _identifier = require("./identifier");
+
+var _keyword = require("./keyword"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/keyword.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/keyword.js
new file mode 100644
index 0000000000..110cee4002
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/lib/keyword.js
@@ -0,0 +1,38 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isReservedWord = isReservedWord;
+exports.isStrictReservedWord = isStrictReservedWord;
+exports.isStrictBindOnlyReservedWord = isStrictBindOnlyReservedWord;
+exports.isStrictBindReservedWord = isStrictBindReservedWord;
+exports.isKeyword = isKeyword;
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+
+function isKeyword(word) {
+ return keywords.has(word);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json
new file mode 100644
index 0000000000..0efb119c4b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "@babel/helper-validator-identifier",
+ "version": "7.15.7",
+ "description": "Validate identifier/keywords name",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-identifier"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": "./lib/index.js",
+ "devDependencies": {
+ "@unicode/unicode-14.0.0": "^1.2.1",
+ "charcodes": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
new file mode 100644
index 0000000000..f644d77df9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-identifier/scripts/generate-identifier-regex.js
@@ -0,0 +1,75 @@
+"use strict";
+
+// Always use the latest available version of Unicode!
+// https://tc39.github.io/ecma262/#sec-conformance
+const version = "14.0.0";
+
+const start = require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Start/code-points.js").filter(function (ch) {
+ return ch > 0x7f;
+});
+let last = -1;
+const cont = [0x200c, 0x200d].concat(
+ require("@unicode/unicode-" +
+ version +
+ "/Binary_Property/ID_Continue/code-points.js").filter(function (ch) {
+ return ch > 0x7f && search(start, ch, last + 1) == -1;
+ })
+);
+
+function search(arr, ch, starting) {
+ for (let i = starting; arr[i] <= ch && i < arr.length; last = i++) {
+ if (arr[i] === ch) return i;
+ }
+ return -1;
+}
+
+function pad(str, width) {
+ while (str.length < width) str = "0" + str;
+ return str;
+}
+
+function esc(code) {
+ const hex = code.toString(16);
+ if (hex.length <= 2) return "\\x" + pad(hex, 2);
+ else return "\\u" + pad(hex, 4);
+}
+
+function generate(chars) {
+ const astral = [];
+ let re = "";
+ for (let i = 0, at = 0x10000; i < chars.length; i++) {
+ const from = chars[i];
+ let to = from;
+ while (i < chars.length - 1 && chars[i + 1] == to + 1) {
+ i++;
+ to++;
+ }
+ if (to <= 0xffff) {
+ if (from == to) re += esc(from);
+ else if (from + 1 == to) re += esc(from) + esc(to);
+ else re += esc(from) + "-" + esc(to);
+ } else {
+ astral.push(from - at, to - from);
+ at = to;
+ }
+ }
+ return { nonASCII: re, astral: astral };
+}
+
+const startData = generate(start);
+const contData = generate(cont);
+
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierStartChars = "' + startData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log('let nonASCIIidentifierChars = "' + contData.nonASCII + '";');
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierStartCodes = " + JSON.stringify(startData.astral) + ";"
+);
+console.log("/* prettier-ignore */");
+console.log(
+ "const astralIdentifierCodes = " + JSON.stringify(contData.astral) + ";"
+);
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/README.md b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/README.md
new file mode 100644
index 0000000000..b8b9e854b3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/README.md
@@ -0,0 +1,19 @@
+# @babel/helper-validator-option
+
+> Validate plugin/preset options
+
+See our website [@babel/helper-validator-option](https://babeljs.io/docs/en/babel-helper-validator-option) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helper-validator-option
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helper-validator-option --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/find-suggestion.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/find-suggestion.js
new file mode 100644
index 0000000000..019ea931de
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/find-suggestion.js
@@ -0,0 +1,45 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.findSuggestion = findSuggestion;
+const {
+ min
+} = Math;
+
+function levenshtein(a, b) {
+ let t = [],
+ u = [],
+ i,
+ j;
+ const m = a.length,
+ n = b.length;
+
+ if (!m) {
+ return n;
+ }
+
+ if (!n) {
+ return m;
+ }
+
+ for (j = 0; j <= n; j++) {
+ t[j] = j;
+ }
+
+ for (i = 1; i <= m; i++) {
+ for (u = [i], j = 1; j <= n; j++) {
+ u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : min(t[j - 1], t[j], u[j - 1]) + 1;
+ }
+
+ t = u;
+ }
+
+ return u[n];
+}
+
+function findSuggestion(str, arr) {
+ const distances = arr.map(el => levenshtein(el, str));
+ return arr[distances.indexOf(min(...distances))];
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/index.js
new file mode 100644
index 0000000000..8afe861228
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/index.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "OptionValidator", {
+ enumerable: true,
+ get: function () {
+ return _validator.OptionValidator;
+ }
+});
+Object.defineProperty(exports, "findSuggestion", {
+ enumerable: true,
+ get: function () {
+ return _findSuggestion.findSuggestion;
+ }
+});
+
+var _validator = require("./validator");
+
+var _findSuggestion = require("./find-suggestion"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/validator.js b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/validator.js
new file mode 100644
index 0000000000..5b4bad1dc6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/lib/validator.js
@@ -0,0 +1,58 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.OptionValidator = void 0;
+
+var _findSuggestion = require("./find-suggestion");
+
+class OptionValidator {
+ constructor(descriptor) {
+ this.descriptor = descriptor;
+ }
+
+ validateTopLevelOptions(options, TopLevelOptionShape) {
+ const validOptionNames = Object.keys(TopLevelOptionShape);
+
+ for (const option of Object.keys(options)) {
+ if (!validOptionNames.includes(option)) {
+ throw new Error(this.formatMessage(`'${option}' is not a valid top-level option.
+- Did you mean '${(0, _findSuggestion.findSuggestion)(option, validOptionNames)}'?`));
+ }
+ }
+ }
+
+ validateBooleanOption(name, value, defaultValue) {
+ if (value === undefined) {
+ return defaultValue;
+ } else {
+ this.invariant(typeof value === "boolean", `'${name}' option must be a boolean.`);
+ }
+
+ return value;
+ }
+
+ validateStringOption(name, value, defaultValue) {
+ if (value === undefined) {
+ return defaultValue;
+ } else {
+ this.invariant(typeof value === "string", `'${name}' option must be a string.`);
+ }
+
+ return value;
+ }
+
+ invariant(condition, message) {
+ if (!condition) {
+ throw new Error(this.formatMessage(message));
+ }
+ }
+
+ formatMessage(message) {
+ return `${this.descriptor}: ${message}`;
+ }
+
+}
+
+exports.OptionValidator = OptionValidator; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json
new file mode 100644
index 0000000000..077bbfb688
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helper-validator-option/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "@babel/helper-validator-option",
+ "version": "7.14.5",
+ "description": "Validate plugin/preset options",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helper-validator-option"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "exports": "./lib/index.js",
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/LICENSE b/tools/node_modules/eslint/node_modules/@babel/helpers/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/README.md b/tools/node_modules/eslint/node_modules/@babel/helpers/README.md
new file mode 100644
index 0000000000..3b79dbf550
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/README.md
@@ -0,0 +1,19 @@
+# @babel/helpers
+
+> Collection of helper functions used by Babel transforms.
+
+See our website [@babel/helpers](https://babeljs.io/docs/en/babel-helpers) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/helpers
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/helpers --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js
new file mode 100644
index 0000000000..ae99e8f7c4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers-generated.js
@@ -0,0 +1,34 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.wrapRegExp = exports.typeof = exports.objectSpread2 = exports.jsx = exports.asyncIterator = void 0;
+
+var _template = require("@babel/template");
+
+const asyncIterator = {
+ minVersion: "7.15.9",
+ ast: () => _template.default.program.ast('\nexport default function _asyncIterator(iterable) {\n var method,\n async,\n sync,\n retry = 2;\n if (typeof Symbol !== "undefined") {\n async = Symbol.asyncIterator;\n sync = Symbol.iterator;\n }\n while (retry--) {\n if (async && (method = iterable[async]) != null) {\n return method.call(iterable);\n }\n if (sync && (method = iterable[sync]) != null) {\n return new AsyncFromSyncIterator(method.call(iterable));\n }\n async = "@@asyncIterator";\n sync = "@@iterator";\n }\n throw new TypeError("Object is not async iterable");\n}\nfunction AsyncFromSyncIterator(s) {\n AsyncFromSyncIterator = function (s) {\n this.s = s;\n this.n = s.next;\n };\n AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function () {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n return: function (value) {\n var ret = this.s.return;\n if (ret === undefined) {\n return Promise.resolve({ value: value, done: true });\n }\n return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n throw: function (value) {\n var thr = this.s.return;\n if (thr === undefined) return Promise.reject(value);\n return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n },\n };\n function AsyncFromSyncIteratorContinuation(r) {\n \n if (Object(r) !== r) {\n return Promise.reject(new TypeError(r + " is not an object."));\n }\n var done = r.done;\n return Promise.resolve(r.value).then(function (value) {\n return { value: value, done: done };\n });\n }\n return new AsyncFromSyncIterator(s);\n}\n')
+};
+exports.asyncIterator = asyncIterator;
+const jsx = {
+ minVersion: "7.0.0-beta.0",
+ ast: () => _template.default.program.ast('\nvar REACT_ELEMENT_TYPE;\nexport default function _createRawReactElement(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === "function" &&\n \n Symbol["for"] &&\n Symbol["for"]("react.element")) ||\n 0xeac7;\n }\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n if (!props && childrenLength !== 0) {\n \n \n props = { children: void 0 };\n }\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : "" + key,\n ref: null,\n props: props,\n _owner: null,\n };\n}\n')
+};
+exports.jsx = jsx;
+const objectSpread2 = {
+ minVersion: "7.5.0",
+ ast: () => _template.default.program.ast('\nimport defineProperty from "defineProperty";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n }\n return target;\n}\n')
+};
+exports.objectSpread2 = objectSpread2;
+const _typeof = {
+ minVersion: "7.0.0-beta.0",
+ ast: () => _template.default.program.ast('\nexport default function _typeof(obj) {\n "@babel/helpers - typeof";\n if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj &&\n typeof Symbol === "function" &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? "symbol"\n : typeof obj;\n };\n }\n return _typeof(obj);\n}\n')
+};
+exports.typeof = _typeof;
+const wrapRegExp = {
+ minVersion: "7.2.6",
+ ast: () => _template.default.program.ast('\nimport setPrototypeOf from "setPrototypeOf";\nimport inherits from "inherits";\nexport default function _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, undefined, groups);\n };\n var _super = RegExp.prototype;\n var _groups = new WeakMap();\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n \n _groups.set(_this, groups || _groups.get(re));\n return setPrototypeOf(_this, BabelRegExp.prototype);\n }\n inherits(BabelRegExp, RegExp);\n BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (typeof substitution === "string") {\n var groups = _groups.get(this);\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return "$" + groups[name];\n })\n );\n } else if (typeof substitution === "function") {\n var _this = this;\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n \n if (typeof args[args.length - 1] !== "object") {\n args = [].slice.call(args);\n args.push(buildGroups(args, _this));\n }\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n function buildGroups(result, re) {\n \n \n var g = _groups.get(re);\n return Object.keys(g).reduce(function (groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n return _wrapRegExp.apply(this, arguments);\n}\n')
+};
+exports.wrapRegExp = wrapRegExp; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js
new file mode 100644
index 0000000000..4b5443fd6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers.js
@@ -0,0 +1,1949 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _template = require("@babel/template");
+
+var generated = require("./helpers-generated");
+
+const helpers = Object.assign({
+ __proto__: null
+}, generated);
+var _default = helpers;
+exports.default = _default;
+
+const helper = minVersion => tpl => ({
+ minVersion,
+ ast: () => _template.default.program.ast(tpl)
+});
+
+helpers.AwaitValue = helper("7.0.0-beta.0")`
+ export default function _AwaitValue(value) {
+ this.wrapped = value;
+ }
+`;
+helpers.AsyncGenerator = helper("7.0.0-beta.0")`
+ import AwaitValue from "AwaitValue";
+
+ export default function AsyncGenerator(gen) {
+ var front, back;
+
+ function send(key, arg) {
+ return new Promise(function (resolve, reject) {
+ var request = {
+ key: key,
+ arg: arg,
+ resolve: resolve,
+ reject: reject,
+ next: null,
+ };
+
+ if (back) {
+ back = back.next = request;
+ } else {
+ front = back = request;
+ resume(key, arg);
+ }
+ });
+ }
+
+ function resume(key, arg) {
+ try {
+ var result = gen[key](arg)
+ var value = result.value;
+ var wrappedAwait = value instanceof AwaitValue;
+
+ Promise.resolve(wrappedAwait ? value.wrapped : value).then(
+ function (arg) {
+ if (wrappedAwait) {
+ resume(key === "return" ? "return" : "next", arg);
+ return
+ }
+
+ settle(result.done ? "return" : "normal", arg);
+ },
+ function (err) { resume("throw", err); });
+ } catch (err) {
+ settle("throw", err);
+ }
+ }
+
+ function settle(type, value) {
+ switch (type) {
+ case "return":
+ front.resolve({ value: value, done: true });
+ break;
+ case "throw":
+ front.reject(value);
+ break;
+ default:
+ front.resolve({ value: value, done: false });
+ break;
+ }
+
+ front = front.next;
+ if (front) {
+ resume(front.key, front.arg);
+ } else {
+ back = null;
+ }
+ }
+
+ this._invoke = send;
+
+ // Hide "return" method if generator return is not supported
+ if (typeof gen.return !== "function") {
+ this.return = undefined;
+ }
+ }
+
+ AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; };
+
+ AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); };
+ AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); };
+ AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); };
+`;
+helpers.wrapAsyncGenerator = helper("7.0.0-beta.0")`
+ import AsyncGenerator from "AsyncGenerator";
+
+ export default function _wrapAsyncGenerator(fn) {
+ return function () {
+ return new AsyncGenerator(fn.apply(this, arguments));
+ };
+ }
+`;
+helpers.awaitAsyncGenerator = helper("7.0.0-beta.0")`
+ import AwaitValue from "AwaitValue";
+
+ export default function _awaitAsyncGenerator(value) {
+ return new AwaitValue(value);
+ }
+`;
+helpers.asyncGeneratorDelegate = helper("7.0.0-beta.0")`
+ export default function _asyncGeneratorDelegate(inner, awaitWrap) {
+ var iter = {}, waiting = false;
+
+ function pump(key, value) {
+ waiting = true;
+ value = new Promise(function (resolve) { resolve(inner[key](value)); });
+ return { done: false, value: awaitWrap(value) };
+ };
+
+ iter[typeof Symbol !== "undefined" && Symbol.iterator || "@@iterator"] = function () { return this; };
+
+ iter.next = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+ return pump("next", value);
+ };
+
+ if (typeof inner.throw === "function") {
+ iter.throw = function (value) {
+ if (waiting) {
+ waiting = false;
+ throw value;
+ }
+ return pump("throw", value);
+ };
+ }
+
+ if (typeof inner.return === "function") {
+ iter.return = function (value) {
+ if (waiting) {
+ waiting = false;
+ return value;
+ }
+ return pump("return", value);
+ };
+ }
+
+ return iter;
+ }
+`;
+helpers.asyncToGenerator = helper("7.0.0-beta.0")`
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+
+ if (info.done) {
+ resolve(value);
+ } else {
+ Promise.resolve(value).then(_next, _throw);
+ }
+ }
+
+ export default function _asyncToGenerator(fn) {
+ return function () {
+ var self = this, args = arguments;
+ return new Promise(function (resolve, reject) {
+ var gen = fn.apply(self, args);
+ function _next(value) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
+ }
+ function _throw(err) {
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
+ }
+
+ _next(undefined);
+ });
+ };
+ }
+`;
+helpers.classCallCheck = helper("7.0.0-beta.0")`
+ export default function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+`;
+helpers.createClass = helper("7.0.0-beta.0")`
+ function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i ++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ export default function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+ }
+`;
+helpers.defineEnumerableProperties = helper("7.0.0-beta.0")`
+ export default function _defineEnumerableProperties(obj, descs) {
+ for (var key in descs) {
+ var desc = descs[key];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, key, desc);
+ }
+
+ // Symbols are not enumerated over by for-in loops. If native
+ // Symbols are available, fetch all of the descs object's own
+ // symbol properties and define them on our target object too.
+ if (Object.getOwnPropertySymbols) {
+ var objectSymbols = Object.getOwnPropertySymbols(descs);
+ for (var i = 0; i < objectSymbols.length; i++) {
+ var sym = objectSymbols[i];
+ var desc = descs[sym];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ Object.defineProperty(obj, sym, desc);
+ }
+ }
+ return obj;
+ }
+`;
+helpers.defaults = helper("7.0.0-beta.0")`
+ export default function _defaults(obj, defaults) {
+ var keys = Object.getOwnPropertyNames(defaults);
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var value = Object.getOwnPropertyDescriptor(defaults, key);
+ if (value && value.configurable && obj[key] === undefined) {
+ Object.defineProperty(obj, key, value);
+ }
+ }
+ return obj;
+ }
+`;
+helpers.defineProperty = helper("7.0.0-beta.0")`
+ export default function _defineProperty(obj, key, value) {
+ // Shortcircuit the slow defineProperty path when possible.
+ // We are trying to avoid issues where setters defined on the
+ // prototype cause side effects under the fast path of simple
+ // assignment. By checking for existence of the property with
+ // the in operator, we can optimize most of this overhead away.
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+ return obj;
+ }
+`;
+helpers.extends = helper("7.0.0-beta.0")`
+ export default function _extends() {
+ _extends = Object.assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+
+ return _extends.apply(this, arguments);
+ }
+`;
+helpers.objectSpread = helper("7.0.0-beta.0")`
+ import defineProperty from "defineProperty";
+
+ export default function _objectSpread(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = (arguments[i] != null) ? Object(arguments[i]) : {};
+ var ownKeys = Object.keys(source);
+ if (typeof Object.getOwnPropertySymbols === 'function') {
+ ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function(sym) {
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
+ }));
+ }
+ ownKeys.forEach(function(key) {
+ defineProperty(target, key, source[key]);
+ });
+ }
+ return target;
+ }
+`;
+helpers.inherits = helper("7.0.0-beta.0")`
+ import setPrototypeOf from "setPrototypeOf";
+
+ export default function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) setPrototypeOf(subClass, superClass);
+ }
+`;
+helpers.inheritsLoose = helper("7.0.0-beta.0")`
+ import setPrototypeOf from "setPrototypeOf";
+
+ export default function _inheritsLoose(subClass, superClass) {
+ subClass.prototype = Object.create(superClass.prototype);
+ subClass.prototype.constructor = subClass;
+ setPrototypeOf(subClass, superClass);
+ }
+`;
+helpers.getPrototypeOf = helper("7.0.0-beta.0")`
+ export default function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf
+ ? Object.getPrototypeOf
+ : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+ }
+`;
+helpers.setPrototypeOf = helper("7.0.0-beta.0")`
+ export default function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+ return _setPrototypeOf(o, p);
+ }
+`;
+helpers.isNativeReflectConstruct = helper("7.9.0")`
+ export default function _isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+
+ // core-js@3
+ if (Reflect.construct.sham) return false;
+
+ // Proxy can't be polyfilled. Every browser implemented
+ // proxies before or at the same time as Reflect.construct,
+ // so if they support Proxy they also support Reflect.construct.
+ if (typeof Proxy === "function") return true;
+
+ // Since Reflect.construct can't be properly polyfilled, some
+ // implementations (e.g. core-js@2) don't set the correct internal slots.
+ // Those polyfills don't allow us to subclass built-ins, so we need to
+ // use our fallback implementation.
+ try {
+ // If the internal slots aren't set, this throws an error similar to
+ // TypeError: this is not a Boolean object.
+
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+`;
+helpers.construct = helper("7.0.0-beta.0")`
+ import setPrototypeOf from "setPrototypeOf";
+ import isNativeReflectConstruct from "isNativeReflectConstruct";
+
+ export default function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ // NOTE: If Parent !== Class, the correct __proto__ is set *after*
+ // calling the constructor.
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+ // Avoid issues with Class being present but undefined when it wasn't
+ // present in the original call.
+ return _construct.apply(null, arguments);
+ }
+`;
+helpers.isNativeFunction = helper("7.0.0-beta.0")`
+ export default function _isNativeFunction(fn) {
+ // Note: This function returns "true" for core-js functions.
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+ }
+`;
+helpers.wrapNativeSuper = helper("7.0.0-beta.0")`
+ import getPrototypeOf from "getPrototypeOf";
+ import setPrototypeOf from "setPrototypeOf";
+ import isNativeFunction from "isNativeFunction";
+ import construct from "construct";
+
+ export default function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !isNativeFunction(Class)) return Class;
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+ _cache.set(Class, Wrapper);
+ }
+ function Wrapper() {
+ return construct(Class, arguments, getPrototypeOf(this).constructor)
+ }
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true,
+ }
+ });
+
+ return setPrototypeOf(Wrapper, Class);
+ }
+
+ return _wrapNativeSuper(Class)
+ }
+`;
+helpers.instanceof = helper("7.0.0-beta.0")`
+ export default function _instanceof(left, right) {
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
+ return !!right[Symbol.hasInstance](left);
+ } else {
+ return left instanceof right;
+ }
+ }
+`;
+helpers.interopRequireDefault = helper("7.0.0-beta.0")`
+ export default function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : { default: obj };
+ }
+`;
+helpers.interopRequireWildcard = helper("7.14.0")`
+ function _getRequireWildcardCache(nodeInterop) {
+ if (typeof WeakMap !== "function") return null;
+
+ var cacheBabelInterop = new WeakMap();
+ var cacheNodeInterop = new WeakMap();
+ return (_getRequireWildcardCache = function (nodeInterop) {
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
+ })(nodeInterop);
+ }
+
+ export default function _interopRequireWildcard(obj, nodeInterop) {
+ if (!nodeInterop && obj && obj.__esModule) {
+ return obj;
+ }
+
+ if (obj === null || (typeof obj !== "object" && typeof obj !== "function")) {
+ return { default: obj }
+ }
+
+ var cache = _getRequireWildcardCache(nodeInterop);
+ if (cache && cache.has(obj)) {
+ return cache.get(obj);
+ }
+
+ var newObj = {};
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
+ for (var key in obj) {
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = hasPropertyDescriptor
+ ? Object.getOwnPropertyDescriptor(obj, key)
+ : null;
+ if (desc && (desc.get || desc.set)) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ newObj.default = obj;
+ if (cache) {
+ cache.set(obj, newObj);
+ }
+ return newObj;
+ }
+`;
+helpers.newArrowCheck = helper("7.0.0-beta.0")`
+ export default function _newArrowCheck(innerThis, boundThis) {
+ if (innerThis !== boundThis) {
+ throw new TypeError("Cannot instantiate an arrow function");
+ }
+ }
+`;
+helpers.objectDestructuringEmpty = helper("7.0.0-beta.0")`
+ export default function _objectDestructuringEmpty(obj) {
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
+ }
+`;
+helpers.objectWithoutPropertiesLoose = helper("7.0.0-beta.0")`
+ export default function _objectWithoutPropertiesLoose(source, excluded) {
+ if (source == null) return {};
+
+ var target = {};
+ var sourceKeys = Object.keys(source);
+ var key, i;
+
+ for (i = 0; i < sourceKeys.length; i++) {
+ key = sourceKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ target[key] = source[key];
+ }
+
+ return target;
+ }
+`;
+helpers.objectWithoutProperties = helper("7.0.0-beta.0")`
+ import objectWithoutPropertiesLoose from "objectWithoutPropertiesLoose";
+
+ export default function _objectWithoutProperties(source, excluded) {
+ if (source == null) return {};
+
+ var target = objectWithoutPropertiesLoose(source, excluded);
+ var key, i;
+
+ if (Object.getOwnPropertySymbols) {
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
+ key = sourceSymbolKeys[i];
+ if (excluded.indexOf(key) >= 0) continue;
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
+ target[key] = source[key];
+ }
+ }
+
+ return target;
+ }
+`;
+helpers.assertThisInitialized = helper("7.0.0-beta.0")`
+ export default function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+ return self;
+ }
+`;
+helpers.possibleConstructorReturn = helper("7.0.0-beta.0")`
+ import assertThisInitialized from "assertThisInitialized";
+
+ export default function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ } else if (call !== void 0) {
+ throw new TypeError("Derived constructors may only return object or undefined");
+ }
+
+ return assertThisInitialized(self);
+ }
+`;
+helpers.createSuper = helper("7.9.0")`
+ import getPrototypeOf from "getPrototypeOf";
+ import isNativeReflectConstruct from "isNativeReflectConstruct";
+ import possibleConstructorReturn from "possibleConstructorReturn";
+
+ export default function _createSuper(Derived) {
+ var hasNativeReflectConstruct = isNativeReflectConstruct();
+
+ return function _createSuperInternal() {
+ var Super = getPrototypeOf(Derived), result;
+ if (hasNativeReflectConstruct) {
+ // NOTE: This doesn't work if this.__proto__.constructor has been modified.
+ var NewTarget = getPrototypeOf(this).constructor;
+ result = Reflect.construct(Super, arguments, NewTarget);
+ } else {
+ result = Super.apply(this, arguments);
+ }
+ return possibleConstructorReturn(this, result);
+ }
+ }
+ `;
+helpers.superPropBase = helper("7.0.0-beta.0")`
+ import getPrototypeOf from "getPrototypeOf";
+
+ export default function _superPropBase(object, property) {
+ // Yes, this throws if object is null to being with, that's on purpose.
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = getPrototypeOf(object);
+ if (object === null) break;
+ }
+ return object;
+ }
+`;
+helpers.get = helper("7.0.0-beta.0")`
+ import superPropBase from "superPropBase";
+
+ export default function _get() {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ _get = Reflect.get;
+ } else {
+ _get = function _get(target, property, receiver) {
+ var base = superPropBase(target, property);
+
+ if (!base) return;
+
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+ if (desc.get) {
+ // STEP 3. If receiver is not present, then set receiver to target.
+ return desc.get.call(arguments.length < 3 ? target : receiver);
+ }
+
+ return desc.value;
+ };
+ }
+ return _get.apply(this, arguments);
+ }
+`;
+helpers.set = helper("7.0.0-beta.0")`
+ import superPropBase from "superPropBase";
+ import defineProperty from "defineProperty";
+
+ function set(target, property, value, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.set) {
+ set = Reflect.set;
+ } else {
+ set = function set(target, property, value, receiver) {
+ var base = superPropBase(target, property);
+ var desc;
+
+ if (base) {
+ desc = Object.getOwnPropertyDescriptor(base, property);
+ if (desc.set) {
+ desc.set.call(receiver, value);
+ return true;
+ } else if (!desc.writable) {
+ // Both getter and non-writable fall into this.
+ return false;
+ }
+ }
+
+ // Without a super that defines the property, spec boils down to
+ // "define on receiver" for some reason.
+ desc = Object.getOwnPropertyDescriptor(receiver, property);
+ if (desc) {
+ if (!desc.writable) {
+ // Setter, getter, and non-writable fall into this.
+ return false;
+ }
+
+ desc.value = value;
+ Object.defineProperty(receiver, property, desc);
+ } else {
+ // Avoid setters that may be defined on Sub's prototype, but not on
+ // the instance.
+ defineProperty(receiver, property, value);
+ }
+
+ return true;
+ };
+ }
+
+ return set(target, property, value, receiver);
+ }
+
+ export default function _set(target, property, value, receiver, isStrict) {
+ var s = set(target, property, value, receiver || target);
+ if (!s && isStrict) {
+ throw new Error('failed to set property');
+ }
+
+ return value;
+ }
+`;
+helpers.taggedTemplateLiteral = helper("7.0.0-beta.0")`
+ export default function _taggedTemplateLiteral(strings, raw) {
+ if (!raw) { raw = strings.slice(0); }
+ return Object.freeze(Object.defineProperties(strings, {
+ raw: { value: Object.freeze(raw) }
+ }));
+ }
+`;
+helpers.taggedTemplateLiteralLoose = helper("7.0.0-beta.0")`
+ export default function _taggedTemplateLiteralLoose(strings, raw) {
+ if (!raw) { raw = strings.slice(0); }
+ strings.raw = raw;
+ return strings;
+ }
+`;
+helpers.readOnlyError = helper("7.0.0-beta.0")`
+ export default function _readOnlyError(name) {
+ throw new TypeError("\\"" + name + "\\" is read-only");
+ }
+`;
+helpers.writeOnlyError = helper("7.12.13")`
+ export default function _writeOnlyError(name) {
+ throw new TypeError("\\"" + name + "\\" is write-only");
+ }
+`;
+helpers.classNameTDZError = helper("7.0.0-beta.0")`
+ export default function _classNameTDZError(name) {
+ throw new Error("Class \\"" + name + "\\" cannot be referenced in computed property keys.");
+ }
+`;
+helpers.temporalUndefined = helper("7.0.0-beta.0")`
+ // This function isn't mean to be called, but to be used as a reference.
+ // We can't use a normal object because it isn't hoisted.
+ export default function _temporalUndefined() {}
+`;
+helpers.tdz = helper("7.5.5")`
+ export default function _tdzError(name) {
+ throw new ReferenceError(name + " is not defined - temporal dead zone");
+ }
+`;
+helpers.temporalRef = helper("7.0.0-beta.0")`
+ import undef from "temporalUndefined";
+ import err from "tdz";
+
+ export default function _temporalRef(val, name) {
+ return val === undef ? err(name) : val;
+ }
+`;
+helpers.slicedToArray = helper("7.0.0-beta.0")`
+ import arrayWithHoles from "arrayWithHoles";
+ import iterableToArrayLimit from "iterableToArrayLimit";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableRest from "nonIterableRest";
+
+ export default function _slicedToArray(arr, i) {
+ return (
+ arrayWithHoles(arr) ||
+ iterableToArrayLimit(arr, i) ||
+ unsupportedIterableToArray(arr, i) ||
+ nonIterableRest()
+ );
+ }
+`;
+helpers.slicedToArrayLoose = helper("7.0.0-beta.0")`
+ import arrayWithHoles from "arrayWithHoles";
+ import iterableToArrayLimitLoose from "iterableToArrayLimitLoose";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableRest from "nonIterableRest";
+
+ export default function _slicedToArrayLoose(arr, i) {
+ return (
+ arrayWithHoles(arr) ||
+ iterableToArrayLimitLoose(arr, i) ||
+ unsupportedIterableToArray(arr, i) ||
+ nonIterableRest()
+ );
+ }
+`;
+helpers.toArray = helper("7.0.0-beta.0")`
+ import arrayWithHoles from "arrayWithHoles";
+ import iterableToArray from "iterableToArray";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableRest from "nonIterableRest";
+
+ export default function _toArray(arr) {
+ return (
+ arrayWithHoles(arr) ||
+ iterableToArray(arr) ||
+ unsupportedIterableToArray(arr) ||
+ nonIterableRest()
+ );
+ }
+`;
+helpers.toConsumableArray = helper("7.0.0-beta.0")`
+ import arrayWithoutHoles from "arrayWithoutHoles";
+ import iterableToArray from "iterableToArray";
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+ import nonIterableSpread from "nonIterableSpread";
+
+ export default function _toConsumableArray(arr) {
+ return (
+ arrayWithoutHoles(arr) ||
+ iterableToArray(arr) ||
+ unsupportedIterableToArray(arr) ||
+ nonIterableSpread()
+ );
+ }
+`;
+helpers.arrayWithoutHoles = helper("7.0.0-beta.0")`
+ import arrayLikeToArray from "arrayLikeToArray";
+
+ export default function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) return arrayLikeToArray(arr);
+ }
+`;
+helpers.arrayWithHoles = helper("7.0.0-beta.0")`
+ export default function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+ }
+`;
+helpers.maybeArrayLike = helper("7.9.0")`
+ import arrayLikeToArray from "arrayLikeToArray";
+
+ export default function _maybeArrayLike(next, arr, i) {
+ if (arr && !Array.isArray(arr) && typeof arr.length === "number") {
+ var len = arr.length;
+ return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);
+ }
+ return next(arr, i);
+ }
+`;
+helpers.iterableToArray = helper("7.0.0-beta.0")`
+ export default function _iterableToArray(iter) {
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
+ }
+`;
+helpers.iterableToArrayLimit = helper("7.0.0-beta.0")`
+ export default function _iterableToArrayLimit(arr, i) {
+ // this is an expanded form of \`for...of\` that properly supports abrupt completions of
+ // iterators etc. variable names have been minimised to reduce the size of this massive
+ // helper. sometimes spec compliance is annoying :(
+ //
+ // _n = _iteratorNormalCompletion
+ // _d = _didIteratorError
+ // _e = _iteratorError
+ // _i = _iterator
+ // _s = _step
+
+ var _i = arr == null ? null : (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
+ if (_i == null) return;
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _s, _e;
+ try {
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+ return _arr;
+ }
+`;
+helpers.iterableToArrayLimitLoose = helper("7.0.0-beta.0")`
+ export default function _iterableToArrayLimitLoose(arr, i) {
+ var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
+ if (_i == null) return;
+
+ var _arr = [];
+ for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {
+ _arr.push(_step.value);
+ if (i && _arr.length === i) break;
+ }
+ return _arr;
+ }
+`;
+helpers.unsupportedIterableToArray = helper("7.9.0")`
+ import arrayLikeToArray from "arrayLikeToArray";
+
+ export default function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))
+ return arrayLikeToArray(o, minLen);
+ }
+`;
+helpers.arrayLikeToArray = helper("7.9.0")`
+ export default function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+ return arr2;
+ }
+`;
+helpers.nonIterableSpread = helper("7.0.0-beta.0")`
+ export default function _nonIterableSpread() {
+ throw new TypeError(
+ "Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+ );
+ }
+`;
+helpers.nonIterableRest = helper("7.0.0-beta.0")`
+ export default function _nonIterableRest() {
+ throw new TypeError(
+ "Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
+ );
+ }
+`;
+helpers.createForOfIteratorHelper = helper("7.9.0")`
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+
+ // s: start (create the iterator)
+ // n: next
+ // e: error (called whenever something throws)
+ // f: finish (always called at the end)
+
+ export default function _createForOfIteratorHelper(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+
+ if (!it) {
+ // Fallback for engines without symbol support
+ if (
+ Array.isArray(o) ||
+ (it = unsupportedIterableToArray(o)) ||
+ (allowArrayLike && o && typeof o.length === "number")
+ ) {
+ if (it) o = it;
+ var i = 0;
+ var F = function(){};
+ return {
+ s: F,
+ n: function() {
+ if (i >= o.length) return { done: true };
+ return { done: false, value: o[i++] };
+ },
+ e: function(e) { throw e; },
+ f: F,
+ };
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+
+ var normalCompletion = true, didErr = false, err;
+
+ return {
+ s: function() {
+ it = it.call(o);
+ },
+ n: function() {
+ var step = it.next();
+ normalCompletion = step.done;
+ return step;
+ },
+ e: function(e) {
+ didErr = true;
+ err = e;
+ },
+ f: function() {
+ try {
+ if (!normalCompletion && it.return != null) it.return();
+ } finally {
+ if (didErr) throw err;
+ }
+ }
+ };
+ }
+`;
+helpers.createForOfIteratorHelperLoose = helper("7.9.0")`
+ import unsupportedIterableToArray from "unsupportedIterableToArray";
+
+ export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+
+ if (it) return (it = it.call(o)).next.bind(it);
+
+ // Fallback for engines without symbol support
+ if (
+ Array.isArray(o) ||
+ (it = unsupportedIterableToArray(o)) ||
+ (allowArrayLike && o && typeof o.length === "number")
+ ) {
+ if (it) o = it;
+ var i = 0;
+ return function() {
+ if (i >= o.length) return { done: true };
+ return { done: false, value: o[i++] };
+ }
+ }
+
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+`;
+helpers.skipFirstGeneratorNext = helper("7.0.0-beta.0")`
+ export default function _skipFirstGeneratorNext(fn) {
+ return function () {
+ var it = fn.apply(this, arguments);
+ it.next();
+ return it;
+ }
+ }
+`;
+helpers.toPrimitive = helper("7.1.5")`
+ export default function _toPrimitive(
+ input,
+ hint /*: "default" | "string" | "number" | void */
+ ) {
+ if (typeof input !== "object" || input === null) return input;
+ var prim = input[Symbol.toPrimitive];
+ if (prim !== undefined) {
+ var res = prim.call(input, hint || "default");
+ if (typeof res !== "object") return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return (hint === "string" ? String : Number)(input);
+ }
+`;
+helpers.toPropertyKey = helper("7.1.5")`
+ import toPrimitive from "toPrimitive";
+
+ export default function _toPropertyKey(arg) {
+ var key = toPrimitive(arg, "string");
+ return typeof key === "symbol" ? key : String(key);
+ }
+`;
+helpers.initializerWarningHelper = helper("7.0.0-beta.0")`
+ export default function _initializerWarningHelper(descriptor, context){
+ throw new Error(
+ 'Decorating class property failed. Please ensure that ' +
+ 'proposal-class-properties is enabled and runs after the decorators transform.'
+ );
+ }
+`;
+helpers.initializerDefineProperty = helper("7.0.0-beta.0")`
+ export default function _initializerDefineProperty(target, property, descriptor, context){
+ if (!descriptor) return;
+
+ Object.defineProperty(target, property, {
+ enumerable: descriptor.enumerable,
+ configurable: descriptor.configurable,
+ writable: descriptor.writable,
+ value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,
+ });
+ }
+`;
+helpers.applyDecoratedDescriptor = helper("7.0.0-beta.0")`
+ export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){
+ var desc = {};
+ Object.keys(descriptor).forEach(function(key){
+ desc[key] = descriptor[key];
+ });
+ desc.enumerable = !!desc.enumerable;
+ desc.configurable = !!desc.configurable;
+ if ('value' in desc || desc.initializer){
+ desc.writable = true;
+ }
+
+ desc = decorators.slice().reverse().reduce(function(desc, decorator){
+ return decorator(target, property, desc) || desc;
+ }, desc);
+
+ if (context && desc.initializer !== void 0){
+ desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
+ desc.initializer = undefined;
+ }
+
+ if (desc.initializer === void 0){
+ Object.defineProperty(target, property, desc);
+ desc = null;
+ }
+
+ return desc;
+ }
+`;
+helpers.classPrivateFieldLooseKey = helper("7.0.0-beta.0")`
+ var id = 0;
+ export default function _classPrivateFieldKey(name) {
+ return "__private_" + (id++) + "_" + name;
+ }
+`;
+helpers.classPrivateFieldLooseBase = helper("7.0.0-beta.0")`
+ export default function _classPrivateFieldBase(receiver, privateKey) {
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
+ throw new TypeError("attempted to use private field on non-instance");
+ }
+ return receiver;
+ }
+`;
+helpers.classPrivateFieldGet = helper("7.0.0-beta.0")`
+ import classApplyDescriptorGet from "classApplyDescriptorGet";
+ import classExtractFieldDescriptor from "classExtractFieldDescriptor";
+ export default function _classPrivateFieldGet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+ }
+`;
+helpers.classPrivateFieldSet = helper("7.0.0-beta.0")`
+ import classApplyDescriptorSet from "classApplyDescriptorSet";
+ import classExtractFieldDescriptor from "classExtractFieldDescriptor";
+ export default function _classPrivateFieldSet(receiver, privateMap, value) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+ }
+`;
+helpers.classPrivateFieldDestructureSet = helper("7.4.4")`
+ import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet";
+ import classExtractFieldDescriptor from "classExtractFieldDescriptor";
+ export default function _classPrivateFieldDestructureSet(receiver, privateMap) {
+ var descriptor = classExtractFieldDescriptor(receiver, privateMap, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+ }
+`;
+helpers.classExtractFieldDescriptor = helper("7.13.10")`
+ export default function _classExtractFieldDescriptor(receiver, privateMap, action) {
+ if (!privateMap.has(receiver)) {
+ throw new TypeError("attempted to " + action + " private field on non-instance");
+ }
+ return privateMap.get(receiver);
+ }
+`;
+helpers.classStaticPrivateFieldSpecGet = helper("7.0.2")`
+ import classApplyDescriptorGet from "classApplyDescriptorGet";
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
+ export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "get");
+ return classApplyDescriptorGet(receiver, descriptor);
+ }
+`;
+helpers.classStaticPrivateFieldSpecSet = helper("7.0.2")`
+ import classApplyDescriptorSet from "classApplyDescriptorSet";
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
+ export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ classApplyDescriptorSet(receiver, descriptor, value);
+ return value;
+ }
+`;
+helpers.classStaticPrivateMethodGet = helper("7.3.2")`
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ return method;
+ }
+`;
+helpers.classStaticPrivateMethodSet = helper("7.3.2")`
+ export default function _classStaticPrivateMethodSet() {
+ throw new TypeError("attempted to set read only static private field");
+ }
+`;
+helpers.classApplyDescriptorGet = helper("7.13.10")`
+ export default function _classApplyDescriptorGet(receiver, descriptor) {
+ if (descriptor.get) {
+ return descriptor.get.call(receiver);
+ }
+ return descriptor.value;
+ }
+`;
+helpers.classApplyDescriptorSet = helper("7.13.10")`
+ export default function _classApplyDescriptorSet(receiver, descriptor, value) {
+ if (descriptor.set) {
+ descriptor.set.call(receiver, value);
+ } else {
+ if (!descriptor.writable) {
+ // This should only throw in strict mode, but class bodies are
+ // always strict and private fields can only be used inside
+ // class bodies.
+ throw new TypeError("attempted to set read only private field");
+ }
+ descriptor.value = value;
+ }
+ }
+`;
+helpers.classApplyDescriptorDestructureSet = helper("7.13.10")`
+ export default function _classApplyDescriptorDestructureSet(receiver, descriptor) {
+ if (descriptor.set) {
+ if (!("__destrObj" in descriptor)) {
+ descriptor.__destrObj = {
+ set value(v) {
+ descriptor.set.call(receiver, v)
+ },
+ };
+ }
+ return descriptor.__destrObj;
+ } else {
+ if (!descriptor.writable) {
+ // This should only throw in strict mode, but class bodies are
+ // always strict and private fields can only be used inside
+ // class bodies.
+ throw new TypeError("attempted to set read only private field");
+ }
+
+ return descriptor;
+ }
+ }
+`;
+helpers.classStaticPrivateFieldDestructureSet = helper("7.13.10")`
+ import classApplyDescriptorDestructureSet from "classApplyDescriptorDestructureSet";
+ import classCheckPrivateStaticAccess from "classCheckPrivateStaticAccess";
+ import classCheckPrivateStaticFieldDescriptor from "classCheckPrivateStaticFieldDescriptor";
+ export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {
+ classCheckPrivateStaticAccess(receiver, classConstructor);
+ classCheckPrivateStaticFieldDescriptor(descriptor, "set");
+ return classApplyDescriptorDestructureSet(receiver, descriptor);
+ }
+`;
+helpers.classCheckPrivateStaticAccess = helper("7.13.10")`
+ export default function _classCheckPrivateStaticAccess(receiver, classConstructor) {
+ if (receiver !== classConstructor) {
+ throw new TypeError("Private static access of wrong provenance");
+ }
+ }
+`;
+helpers.classCheckPrivateStaticFieldDescriptor = helper("7.13.10")`
+ export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {
+ if (descriptor === undefined) {
+ throw new TypeError("attempted to " + action + " private static field before its declaration");
+ }
+ }
+`;
+helpers.decorate = helper("7.1.5")`
+ import toArray from "toArray";
+ import toPropertyKey from "toPropertyKey";
+
+ // These comments are stripped by @babel/template
+ /*::
+ type PropertyDescriptor =
+ | {
+ value: any,
+ writable: boolean,
+ configurable: boolean,
+ enumerable: boolean,
+ }
+ | {
+ get?: () => any,
+ set?: (v: any) => void,
+ configurable: boolean,
+ enumerable: boolean,
+ };
+
+ type FieldDescriptor ={
+ writable: boolean,
+ configurable: boolean,
+ enumerable: boolean,
+ };
+
+ type Placement = "static" | "prototype" | "own";
+ type Key = string | symbol; // PrivateName is not supported yet.
+
+ type ElementDescriptor =
+ | {
+ kind: "method",
+ key: Key,
+ placement: Placement,
+ descriptor: PropertyDescriptor
+ }
+ | {
+ kind: "field",
+ key: Key,
+ placement: Placement,
+ descriptor: FieldDescriptor,
+ initializer?: () => any,
+ };
+
+ // This is exposed to the user code
+ type ElementObjectInput = ElementDescriptor & {
+ [@@toStringTag]?: "Descriptor"
+ };
+
+ // This is exposed to the user code
+ type ElementObjectOutput = ElementDescriptor & {
+ [@@toStringTag]?: "Descriptor"
+ extras?: ElementDescriptor[],
+ finisher?: ClassFinisher,
+ };
+
+ // This is exposed to the user code
+ type ClassObject = {
+ [@@toStringTag]?: "Descriptor",
+ kind: "class",
+ elements: ElementDescriptor[],
+ };
+
+ type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput;
+ type ClassDecorator = (descriptor: ClassObject) => ?ClassObject;
+ type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>;
+
+ // Only used by Babel in the transform output, not part of the spec.
+ type ElementDefinition =
+ | {
+ kind: "method",
+ value: any,
+ key: Key,
+ static?: boolean,
+ decorators?: ElementDecorator[],
+ }
+ | {
+ kind: "field",
+ value: () => any,
+ key: Key,
+ static?: boolean,
+ decorators?: ElementDecorator[],
+ };
+
+ declare function ClassFactory<C>(initialize: (instance: C) => void): {
+ F: Class<C>,
+ d: ElementDefinition[]
+ }
+
+ */
+
+ /*::
+ // Various combinations with/without extras and with one or many finishers
+
+ type ElementFinisherExtras = {
+ element: ElementDescriptor,
+ finisher?: ClassFinisher,
+ extras?: ElementDescriptor[],
+ };
+
+ type ElementFinishersExtras = {
+ element: ElementDescriptor,
+ finishers: ClassFinisher[],
+ extras: ElementDescriptor[],
+ };
+
+ type ElementsFinisher = {
+ elements: ElementDescriptor[],
+ finisher?: ClassFinisher,
+ };
+
+ type ElementsFinishers = {
+ elements: ElementDescriptor[],
+ finishers: ClassFinisher[],
+ };
+
+ */
+
+ /*::
+
+ type Placements = {
+ static: Key[],
+ prototype: Key[],
+ own: Key[],
+ };
+
+ */
+
+ // ClassDefinitionEvaluation (Steps 26-*)
+ export default function _decorate(
+ decorators /*: ClassDecorator[] */,
+ factory /*: ClassFactory */,
+ superClass /*: ?Class<*> */,
+ mixins /*: ?Array<Function> */,
+ ) /*: Class<*> */ {
+ var api = _getDecoratorsApi();
+ if (mixins) {
+ for (var i = 0; i < mixins.length; i++) {
+ api = mixins[i](api);
+ }
+ }
+
+ var r = factory(function initialize(O) {
+ api.initializeInstanceElements(O, decorated.elements);
+ }, superClass);
+ var decorated = api.decorateClass(
+ _coalesceClassElements(r.d.map(_createElementDescriptor)),
+ decorators,
+ );
+
+ api.initializeClassElements(r.F, decorated.elements);
+
+ return api.runClassFinishers(r.F, decorated.finishers);
+ }
+
+ function _getDecoratorsApi() {
+ _getDecoratorsApi = function() {
+ return api;
+ };
+
+ var api = {
+ elementsDefinitionOrder: [["method"], ["field"]],
+
+ // InitializeInstanceElements
+ initializeInstanceElements: function(
+ /*::<C>*/ O /*: C */,
+ elements /*: ElementDescriptor[] */,
+ ) {
+ ["method", "field"].forEach(function(kind) {
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ if (element.kind === kind && element.placement === "own") {
+ this.defineClassElement(O, element);
+ }
+ }, this);
+ }, this);
+ },
+
+ // InitializeClassElements
+ initializeClassElements: function(
+ /*::<C>*/ F /*: Class<C> */,
+ elements /*: ElementDescriptor[] */,
+ ) {
+ var proto = F.prototype;
+
+ ["method", "field"].forEach(function(kind) {
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ var placement = element.placement;
+ if (
+ element.kind === kind &&
+ (placement === "static" || placement === "prototype")
+ ) {
+ var receiver = placement === "static" ? F : proto;
+ this.defineClassElement(receiver, element);
+ }
+ }, this);
+ }, this);
+ },
+
+ // DefineClassElement
+ defineClassElement: function(
+ /*::<C>*/ receiver /*: C | Class<C> */,
+ element /*: ElementDescriptor */,
+ ) {
+ var descriptor /*: PropertyDescriptor */ = element.descriptor;
+ if (element.kind === "field") {
+ var initializer = element.initializer;
+ descriptor = {
+ enumerable: descriptor.enumerable,
+ writable: descriptor.writable,
+ configurable: descriptor.configurable,
+ value: initializer === void 0 ? void 0 : initializer.call(receiver),
+ };
+ }
+ Object.defineProperty(receiver, element.key, descriptor);
+ },
+
+ // DecorateClass
+ decorateClass: function(
+ elements /*: ElementDescriptor[] */,
+ decorators /*: ClassDecorator[] */,
+ ) /*: ElementsFinishers */ {
+ var newElements /*: ElementDescriptor[] */ = [];
+ var finishers /*: ClassFinisher[] */ = [];
+ var placements /*: Placements */ = {
+ static: [],
+ prototype: [],
+ own: [],
+ };
+
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ this.addElementPlacement(element, placements);
+ }, this);
+
+ elements.forEach(function(element /*: ElementDescriptor */) {
+ if (!_hasDecorators(element)) return newElements.push(element);
+
+ var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement(
+ element,
+ placements,
+ );
+ newElements.push(elementFinishersExtras.element);
+ newElements.push.apply(newElements, elementFinishersExtras.extras);
+ finishers.push.apply(finishers, elementFinishersExtras.finishers);
+ }, this);
+
+ if (!decorators) {
+ return { elements: newElements, finishers: finishers };
+ }
+
+ var result /*: ElementsFinishers */ = this.decorateConstructor(
+ newElements,
+ decorators,
+ );
+ finishers.push.apply(finishers, result.finishers);
+ result.finishers = finishers;
+
+ return result;
+ },
+
+ // AddElementPlacement
+ addElementPlacement: function(
+ element /*: ElementDescriptor */,
+ placements /*: Placements */,
+ silent /*: boolean */,
+ ) {
+ var keys = placements[element.placement];
+ if (!silent && keys.indexOf(element.key) !== -1) {
+ throw new TypeError("Duplicated element (" + element.key + ")");
+ }
+ keys.push(element.key);
+ },
+
+ // DecorateElement
+ decorateElement: function(
+ element /*: ElementDescriptor */,
+ placements /*: Placements */,
+ ) /*: ElementFinishersExtras */ {
+ var extras /*: ElementDescriptor[] */ = [];
+ var finishers /*: ClassFinisher[] */ = [];
+
+ for (
+ var decorators = element.decorators, i = decorators.length - 1;
+ i >= 0;
+ i--
+ ) {
+ // (inlined) RemoveElementPlacement
+ var keys = placements[element.placement];
+ keys.splice(keys.indexOf(element.key), 1);
+
+ var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor(
+ element,
+ );
+ var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras(
+ (0, decorators[i])(elementObject) /*: ElementObjectOutput */ ||
+ elementObject,
+ );
+
+ element = elementFinisherExtras.element;
+ this.addElementPlacement(element, placements);
+
+ if (elementFinisherExtras.finisher) {
+ finishers.push(elementFinisherExtras.finisher);
+ }
+
+ var newExtras /*: ElementDescriptor[] | void */ =
+ elementFinisherExtras.extras;
+ if (newExtras) {
+ for (var j = 0; j < newExtras.length; j++) {
+ this.addElementPlacement(newExtras[j], placements);
+ }
+ extras.push.apply(extras, newExtras);
+ }
+ }
+
+ return { element: element, finishers: finishers, extras: extras };
+ },
+
+ // DecorateConstructor
+ decorateConstructor: function(
+ elements /*: ElementDescriptor[] */,
+ decorators /*: ClassDecorator[] */,
+ ) /*: ElementsFinishers */ {
+ var finishers /*: ClassFinisher[] */ = [];
+
+ for (var i = decorators.length - 1; i >= 0; i--) {
+ var obj /*: ClassObject */ = this.fromClassDescriptor(elements);
+ var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor(
+ (0, decorators[i])(obj) /*: ClassObject */ || obj,
+ );
+
+ if (elementsAndFinisher.finisher !== undefined) {
+ finishers.push(elementsAndFinisher.finisher);
+ }
+
+ if (elementsAndFinisher.elements !== undefined) {
+ elements = elementsAndFinisher.elements;
+
+ for (var j = 0; j < elements.length - 1; j++) {
+ for (var k = j + 1; k < elements.length; k++) {
+ if (
+ elements[j].key === elements[k].key &&
+ elements[j].placement === elements[k].placement
+ ) {
+ throw new TypeError(
+ "Duplicated element (" + elements[j].key + ")",
+ );
+ }
+ }
+ }
+ }
+ }
+
+ return { elements: elements, finishers: finishers };
+ },
+
+ // FromElementDescriptor
+ fromElementDescriptor: function(
+ element /*: ElementDescriptor */,
+ ) /*: ElementObject */ {
+ var obj /*: ElementObject */ = {
+ kind: element.kind,
+ key: element.key,
+ placement: element.placement,
+ descriptor: element.descriptor,
+ };
+
+ var desc = {
+ value: "Descriptor",
+ configurable: true,
+ };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+
+ if (element.kind === "field") obj.initializer = element.initializer;
+
+ return obj;
+ },
+
+ // ToElementDescriptors
+ toElementDescriptors: function(
+ elementObjects /*: ElementObject[] */,
+ ) /*: ElementDescriptor[] */ {
+ if (elementObjects === undefined) return;
+ return toArray(elementObjects).map(function(elementObject) {
+ var element = this.toElementDescriptor(elementObject);
+ this.disallowProperty(elementObject, "finisher", "An element descriptor");
+ this.disallowProperty(elementObject, "extras", "An element descriptor");
+ return element;
+ }, this);
+ },
+
+ // ToElementDescriptor
+ toElementDescriptor: function(
+ elementObject /*: ElementObject */,
+ ) /*: ElementDescriptor */ {
+ var kind = String(elementObject.kind);
+ if (kind !== "method" && kind !== "field") {
+ throw new TypeError(
+ 'An element descriptor\\'s .kind property must be either "method" or' +
+ ' "field", but a decorator created an element descriptor with' +
+ ' .kind "' +
+ kind +
+ '"',
+ );
+ }
+
+ var key = toPropertyKey(elementObject.key);
+
+ var placement = String(elementObject.placement);
+ if (
+ placement !== "static" &&
+ placement !== "prototype" &&
+ placement !== "own"
+ ) {
+ throw new TypeError(
+ 'An element descriptor\\'s .placement property must be one of "static",' +
+ ' "prototype" or "own", but a decorator created an element descriptor' +
+ ' with .placement "' +
+ placement +
+ '"',
+ );
+ }
+
+ var descriptor /*: PropertyDescriptor */ = elementObject.descriptor;
+
+ this.disallowProperty(elementObject, "elements", "An element descriptor");
+
+ var element /*: ElementDescriptor */ = {
+ kind: kind,
+ key: key,
+ placement: placement,
+ descriptor: Object.assign({}, descriptor),
+ };
+
+ if (kind !== "field") {
+ this.disallowProperty(elementObject, "initializer", "A method descriptor");
+ } else {
+ this.disallowProperty(
+ descriptor,
+ "get",
+ "The property descriptor of a field descriptor",
+ );
+ this.disallowProperty(
+ descriptor,
+ "set",
+ "The property descriptor of a field descriptor",
+ );
+ this.disallowProperty(
+ descriptor,
+ "value",
+ "The property descriptor of a field descriptor",
+ );
+
+ element.initializer = elementObject.initializer;
+ }
+
+ return element;
+ },
+
+ toElementFinisherExtras: function(
+ elementObject /*: ElementObject */,
+ ) /*: ElementFinisherExtras */ {
+ var element /*: ElementDescriptor */ = this.toElementDescriptor(
+ elementObject,
+ );
+ var finisher /*: ClassFinisher */ = _optionalCallableProperty(
+ elementObject,
+ "finisher",
+ );
+ var extras /*: ElementDescriptors[] */ = this.toElementDescriptors(
+ elementObject.extras,
+ );
+
+ return { element: element, finisher: finisher, extras: extras };
+ },
+
+ // FromClassDescriptor
+ fromClassDescriptor: function(
+ elements /*: ElementDescriptor[] */,
+ ) /*: ClassObject */ {
+ var obj = {
+ kind: "class",
+ elements: elements.map(this.fromElementDescriptor, this),
+ };
+
+ var desc = { value: "Descriptor", configurable: true };
+ Object.defineProperty(obj, Symbol.toStringTag, desc);
+
+ return obj;
+ },
+
+ // ToClassDescriptor
+ toClassDescriptor: function(
+ obj /*: ClassObject */,
+ ) /*: ElementsFinisher */ {
+ var kind = String(obj.kind);
+ if (kind !== "class") {
+ throw new TypeError(
+ 'A class descriptor\\'s .kind property must be "class", but a decorator' +
+ ' created a class descriptor with .kind "' +
+ kind +
+ '"',
+ );
+ }
+
+ this.disallowProperty(obj, "key", "A class descriptor");
+ this.disallowProperty(obj, "placement", "A class descriptor");
+ this.disallowProperty(obj, "descriptor", "A class descriptor");
+ this.disallowProperty(obj, "initializer", "A class descriptor");
+ this.disallowProperty(obj, "extras", "A class descriptor");
+
+ var finisher = _optionalCallableProperty(obj, "finisher");
+ var elements = this.toElementDescriptors(obj.elements);
+
+ return { elements: elements, finisher: finisher };
+ },
+
+ // RunClassFinishers
+ runClassFinishers: function(
+ constructor /*: Class<*> */,
+ finishers /*: ClassFinisher[] */,
+ ) /*: Class<*> */ {
+ for (var i = 0; i < finishers.length; i++) {
+ var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor);
+ if (newConstructor !== undefined) {
+ // NOTE: This should check if IsConstructor(newConstructor) is false.
+ if (typeof newConstructor !== "function") {
+ throw new TypeError("Finishers must return a constructor.");
+ }
+ constructor = newConstructor;
+ }
+ }
+ return constructor;
+ },
+
+ disallowProperty: function(obj, name, objectType) {
+ if (obj[name] !== undefined) {
+ throw new TypeError(objectType + " can't have a ." + name + " property.");
+ }
+ }
+ };
+
+ return api;
+ }
+
+ // ClassElementEvaluation
+ function _createElementDescriptor(
+ def /*: ElementDefinition */,
+ ) /*: ElementDescriptor */ {
+ var key = toPropertyKey(def.key);
+
+ var descriptor /*: PropertyDescriptor */;
+ if (def.kind === "method") {
+ descriptor = {
+ value: def.value,
+ writable: true,
+ configurable: true,
+ enumerable: false,
+ };
+ } else if (def.kind === "get") {
+ descriptor = { get: def.value, configurable: true, enumerable: false };
+ } else if (def.kind === "set") {
+ descriptor = { set: def.value, configurable: true, enumerable: false };
+ } else if (def.kind === "field") {
+ descriptor = { configurable: true, writable: true, enumerable: true };
+ }
+
+ var element /*: ElementDescriptor */ = {
+ kind: def.kind === "field" ? "field" : "method",
+ key: key,
+ placement: def.static
+ ? "static"
+ : def.kind === "field"
+ ? "own"
+ : "prototype",
+ descriptor: descriptor,
+ };
+ if (def.decorators) element.decorators = def.decorators;
+ if (def.kind === "field") element.initializer = def.value;
+
+ return element;
+ }
+
+ // CoalesceGetterSetter
+ function _coalesceGetterSetter(
+ element /*: ElementDescriptor */,
+ other /*: ElementDescriptor */,
+ ) {
+ if (element.descriptor.get !== undefined) {
+ other.descriptor.get = element.descriptor.get;
+ } else {
+ other.descriptor.set = element.descriptor.set;
+ }
+ }
+
+ // CoalesceClassElements
+ function _coalesceClassElements(
+ elements /*: ElementDescriptor[] */,
+ ) /*: ElementDescriptor[] */ {
+ var newElements /*: ElementDescriptor[] */ = [];
+
+ var isSameElement = function(
+ other /*: ElementDescriptor */,
+ ) /*: boolean */ {
+ return (
+ other.kind === "method" &&
+ other.key === element.key &&
+ other.placement === element.placement
+ );
+ };
+
+ for (var i = 0; i < elements.length; i++) {
+ var element /*: ElementDescriptor */ = elements[i];
+ var other /*: ElementDescriptor */;
+
+ if (
+ element.kind === "method" &&
+ (other = newElements.find(isSameElement))
+ ) {
+ if (
+ _isDataDescriptor(element.descriptor) ||
+ _isDataDescriptor(other.descriptor)
+ ) {
+ if (_hasDecorators(element) || _hasDecorators(other)) {
+ throw new ReferenceError(
+ "Duplicated methods (" + element.key + ") can't be decorated.",
+ );
+ }
+ other.descriptor = element.descriptor;
+ } else {
+ if (_hasDecorators(element)) {
+ if (_hasDecorators(other)) {
+ throw new ReferenceError(
+ "Decorators can't be placed on different accessors with for " +
+ "the same property (" +
+ element.key +
+ ").",
+ );
+ }
+ other.decorators = element.decorators;
+ }
+ _coalesceGetterSetter(element, other);
+ }
+ } else {
+ newElements.push(element);
+ }
+ }
+
+ return newElements;
+ }
+
+ function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ {
+ return element.decorators && element.decorators.length;
+ }
+
+ function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ {
+ return (
+ desc !== undefined &&
+ !(desc.value === undefined && desc.writable === undefined)
+ );
+ }
+
+ function _optionalCallableProperty /*::<T>*/(
+ obj /*: T */,
+ name /*: $Keys<T> */,
+ ) /*: ?Function */ {
+ var value = obj[name];
+ if (value !== undefined && typeof value !== "function") {
+ throw new TypeError("Expected '" + name + "' to be a function");
+ }
+ return value;
+ }
+
+`;
+helpers.classPrivateMethodGet = helper("7.1.6")`
+ export default function _classPrivateMethodGet(receiver, privateSet, fn) {
+ if (!privateSet.has(receiver)) {
+ throw new TypeError("attempted to get private field on non-instance");
+ }
+ return fn;
+ }
+`;
+helpers.checkPrivateRedeclaration = helper("7.14.1")`
+ export default function _checkPrivateRedeclaration(obj, privateCollection) {
+ if (privateCollection.has(obj)) {
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
+ }
+ }
+`;
+helpers.classPrivateFieldInitSpec = helper("7.14.1")`
+ import checkPrivateRedeclaration from "checkPrivateRedeclaration";
+
+ export default function _classPrivateFieldInitSpec(obj, privateMap, value) {
+ checkPrivateRedeclaration(obj, privateMap);
+ privateMap.set(obj, value);
+ }
+`;
+helpers.classPrivateMethodInitSpec = helper("7.14.1")`
+ import checkPrivateRedeclaration from "checkPrivateRedeclaration";
+
+ export default function _classPrivateMethodInitSpec(obj, privateSet) {
+ checkPrivateRedeclaration(obj, privateSet);
+ privateSet.add(obj);
+ }
+`;
+{
+ helpers.classPrivateMethodSet = helper("7.1.6")`
+ export default function _classPrivateMethodSet() {
+ throw new TypeError("attempted to reassign private method");
+ }
+ `;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/asyncIterator.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/asyncIterator.js
new file mode 100644
index 0000000000..0a6d9de18a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/asyncIterator.js
@@ -0,0 +1,81 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _asyncIterator;
+
+function _asyncIterator(iterable) {
+ var method,
+ async,
+ sync,
+ retry = 2;
+
+ if (typeof Symbol !== "undefined") {
+ async = Symbol.asyncIterator;
+ sync = Symbol.iterator;
+ }
+
+ while (retry--) {
+ if (async && (method = iterable[async]) != null) {
+ return method.call(iterable);
+ }
+
+ if (sync && (method = iterable[sync]) != null) {
+ return new AsyncFromSyncIterator(method.call(iterable));
+ }
+
+ async = "@@asyncIterator";
+ sync = "@@iterator";
+ }
+
+ throw new TypeError("Object is not async iterable");
+}
+
+function AsyncFromSyncIterator(s) {
+ AsyncFromSyncIterator = function (s) {
+ this.s = s;
+ this.n = s.next;
+ };
+
+ AsyncFromSyncIterator.prototype = {
+ s: null,
+ n: null,
+ next: function () {
+ return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
+ },
+ return: function (value) {
+ var ret = this.s.return;
+
+ if (ret === undefined) {
+ return Promise.resolve({
+ value: value,
+ done: true
+ });
+ }
+
+ return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));
+ },
+ throw: function (value) {
+ var thr = this.s.return;
+ if (thr === undefined) return Promise.reject(value);
+ return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));
+ }
+ };
+
+ function AsyncFromSyncIteratorContinuation(r) {
+ if (Object(r) !== r) {
+ return Promise.reject(new TypeError(r + " is not an object."));
+ }
+
+ var done = r.done;
+ return Promise.resolve(r.value).then(function (value) {
+ return {
+ value: value,
+ done: done
+ };
+ });
+ }
+
+ return new AsyncFromSyncIterator(s);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/jsx.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/jsx.js
new file mode 100644
index 0000000000..68de16843c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/jsx.js
@@ -0,0 +1,53 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _createRawReactElement;
+var REACT_ELEMENT_TYPE;
+
+function _createRawReactElement(type, props, key, children) {
+ if (!REACT_ELEMENT_TYPE) {
+ REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol["for"] && Symbol["for"]("react.element") || 0xeac7;
+ }
+
+ var defaultProps = type && type.defaultProps;
+ var childrenLength = arguments.length - 3;
+
+ if (!props && childrenLength !== 0) {
+ props = {
+ children: void 0
+ };
+ }
+
+ if (childrenLength === 1) {
+ props.children = children;
+ } else if (childrenLength > 1) {
+ var childArray = new Array(childrenLength);
+
+ for (var i = 0; i < childrenLength; i++) {
+ childArray[i] = arguments[i + 3];
+ }
+
+ props.children = childArray;
+ }
+
+ if (props && defaultProps) {
+ for (var propName in defaultProps) {
+ if (props[propName] === void 0) {
+ props[propName] = defaultProps[propName];
+ }
+ }
+ } else if (!props) {
+ props = defaultProps || {};
+ }
+
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: type,
+ key: key === undefined ? null : "" + key,
+ ref: null,
+ props: props,
+ _owner: null
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/objectSpread2.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/objectSpread2.js
new file mode 100644
index 0000000000..03db0068a5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/objectSpread2.js
@@ -0,0 +1,46 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _objectSpread2;
+
+var _defineProperty = require("defineProperty");
+
+function ownKeys(object, enumerableOnly) {
+ var keys = Object.keys(object);
+
+ if (Object.getOwnPropertySymbols) {
+ var symbols = Object.getOwnPropertySymbols(object);
+
+ if (enumerableOnly) {
+ symbols = symbols.filter(function (sym) {
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
+ });
+ }
+
+ keys.push.apply(keys, symbols);
+ }
+
+ return keys;
+}
+
+function _objectSpread2(target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i] != null ? arguments[i] : {};
+
+ if (i % 2) {
+ ownKeys(Object(source), true).forEach(function (key) {
+ _defineProperty(target, key, source[key]);
+ });
+ } else if (Object.getOwnPropertyDescriptors) {
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+ } else {
+ ownKeys(Object(source)).forEach(function (key) {
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
+ });
+ }
+ }
+
+ return target;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/typeof.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/typeof.js
new file mode 100644
index 0000000000..b1a728b924
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/typeof.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _typeof;
+
+function _typeof(obj) {
+ "@babel/helpers - typeof";
+
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ exports.default = _typeof = function (obj) {
+ return typeof obj;
+ };
+ } else {
+ exports.default = _typeof = function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ }
+
+ return _typeof(obj);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js
new file mode 100644
index 0000000000..6375b71198
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/helpers/wrapRegExp.js
@@ -0,0 +1,73 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _wrapRegExp;
+
+var _setPrototypeOf = require("setPrototypeOf");
+
+var _inherits = require("inherits");
+
+function _wrapRegExp() {
+ exports.default = _wrapRegExp = function (re, groups) {
+ return new BabelRegExp(re, undefined, groups);
+ };
+
+ var _super = RegExp.prototype;
+
+ var _groups = new WeakMap();
+
+ function BabelRegExp(re, flags, groups) {
+ var _this = new RegExp(re, flags);
+
+ _groups.set(_this, groups || _groups.get(re));
+
+ return _setPrototypeOf(_this, BabelRegExp.prototype);
+ }
+
+ _inherits(BabelRegExp, RegExp);
+
+ BabelRegExp.prototype.exec = function (str) {
+ var result = _super.exec.call(this, str);
+
+ if (result) result.groups = buildGroups(result, this);
+ return result;
+ };
+
+ BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
+ if (typeof substitution === "string") {
+ var groups = _groups.get(this);
+
+ return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
+ return "$" + groups[name];
+ }));
+ } else if (typeof substitution === "function") {
+ var _this = this;
+
+ return _super[Symbol.replace].call(this, str, function () {
+ var args = arguments;
+
+ if (typeof args[args.length - 1] !== "object") {
+ args = [].slice.call(args);
+ args.push(buildGroups(args, _this));
+ }
+
+ return substitution.apply(this, args);
+ });
+ } else {
+ return _super[Symbol.replace].call(this, str, substitution);
+ }
+ };
+
+ function buildGroups(result, re) {
+ var g = _groups.get(re);
+
+ return Object.keys(g).reduce(function (groups, name) {
+ groups[name] = result[g[name]];
+ return groups;
+ }, Object.create(null));
+ }
+
+ return _wrapRegExp.apply(this, arguments);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js
new file mode 100644
index 0000000000..5e793d59f1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/lib/index.js
@@ -0,0 +1,300 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+exports.ensure = ensure;
+exports.get = get;
+exports.getDependencies = getDependencies;
+exports.list = void 0;
+exports.minVersion = minVersion;
+
+var _traverse = require("@babel/traverse");
+
+var _t = require("@babel/types");
+
+var _helpers = require("./helpers");
+
+const {
+ assignmentExpression,
+ cloneNode,
+ expressionStatement,
+ file: t_file,
+ identifier,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function makePath(path) {
+ const parts = [];
+
+ for (; path.parentPath; path = path.parentPath) {
+ parts.push(path.key);
+ if (path.inList) parts.push(path.listKey);
+ }
+
+ return parts.reverse().join(".");
+}
+
+let fileClass = undefined;
+
+function getHelperMetadata(file) {
+ const globals = new Set();
+ const localBindingNames = new Set();
+ const dependencies = new Map();
+ let exportName;
+ let exportPath;
+ const exportBindingAssignments = [];
+ const importPaths = [];
+ const importBindingsReferences = [];
+ const dependencyVisitor = {
+ ImportDeclaration(child) {
+ const name = child.node.source.value;
+
+ if (!_helpers.default[name]) {
+ throw child.buildCodeFrameError(`Unknown helper ${name}`);
+ }
+
+ if (child.get("specifiers").length !== 1 || !child.get("specifiers.0").isImportDefaultSpecifier()) {
+ throw child.buildCodeFrameError("Helpers can only import a default value");
+ }
+
+ const bindingIdentifier = child.node.specifiers[0].local;
+ dependencies.set(bindingIdentifier, name);
+ importPaths.push(makePath(child));
+ },
+
+ ExportDefaultDeclaration(child) {
+ const decl = child.get("declaration");
+
+ if (decl.isFunctionDeclaration()) {
+ if (!decl.node.id) {
+ throw decl.buildCodeFrameError("Helpers should give names to their exported func declaration");
+ }
+
+ exportName = decl.node.id.name;
+ }
+
+ exportPath = makePath(child);
+ },
+
+ ExportAllDeclaration(child) {
+ throw child.buildCodeFrameError("Helpers can only export default");
+ },
+
+ ExportNamedDeclaration(child) {
+ throw child.buildCodeFrameError("Helpers can only export default");
+ },
+
+ Statement(child) {
+ if (child.isModuleDeclaration()) return;
+ child.skip();
+ }
+
+ };
+ const referenceVisitor = {
+ Program(path) {
+ const bindings = path.scope.getAllBindings();
+ Object.keys(bindings).forEach(name => {
+ if (name === exportName) return;
+ if (dependencies.has(bindings[name].identifier)) return;
+ localBindingNames.add(name);
+ });
+ },
+
+ ReferencedIdentifier(child) {
+ const name = child.node.name;
+ const binding = child.scope.getBinding(name);
+
+ if (!binding) {
+ globals.add(name);
+ } else if (dependencies.has(binding.identifier)) {
+ importBindingsReferences.push(makePath(child));
+ }
+ },
+
+ AssignmentExpression(child) {
+ const left = child.get("left");
+ if (!(exportName in left.getBindingIdentifiers())) return;
+
+ if (!left.isIdentifier()) {
+ throw left.buildCodeFrameError("Only simple assignments to exports are allowed in helpers");
+ }
+
+ const binding = child.scope.getBinding(exportName);
+
+ if (binding != null && binding.scope.path.isProgram()) {
+ exportBindingAssignments.push(makePath(child));
+ }
+ }
+
+ };
+ (0, _traverse.default)(file.ast, dependencyVisitor, file.scope);
+ (0, _traverse.default)(file.ast, referenceVisitor, file.scope);
+ if (!exportPath) throw new Error("Helpers must default-export something.");
+ exportBindingAssignments.reverse();
+ return {
+ globals: Array.from(globals),
+ localBindingNames: Array.from(localBindingNames),
+ dependencies,
+ exportBindingAssignments,
+ exportPath,
+ exportName,
+ importBindingsReferences,
+ importPaths
+ };
+}
+
+function permuteHelperAST(file, metadata, id, localBindings, getDependency) {
+ if (localBindings && !id) {
+ throw new Error("Unexpected local bindings for module-based helpers.");
+ }
+
+ if (!id) return;
+ const {
+ localBindingNames,
+ dependencies,
+ exportBindingAssignments,
+ exportPath,
+ exportName,
+ importBindingsReferences,
+ importPaths
+ } = metadata;
+ const dependenciesRefs = {};
+ dependencies.forEach((name, id) => {
+ dependenciesRefs[id.name] = typeof getDependency === "function" && getDependency(name) || id;
+ });
+ const toRename = {};
+ const bindings = new Set(localBindings || []);
+ localBindingNames.forEach(name => {
+ let newName = name;
+
+ while (bindings.has(newName)) newName = "_" + newName;
+
+ if (newName !== name) toRename[name] = newName;
+ });
+
+ if (id.type === "Identifier" && exportName !== id.name) {
+ toRename[exportName] = id.name;
+ }
+
+ const visitor = {
+ Program(path) {
+ const exp = path.get(exportPath);
+ const imps = importPaths.map(p => path.get(p));
+ const impsBindingRefs = importBindingsReferences.map(p => path.get(p));
+ const decl = exp.get("declaration");
+
+ if (id.type === "Identifier") {
+ if (decl.isFunctionDeclaration()) {
+ exp.replaceWith(decl);
+ } else {
+ exp.replaceWith(variableDeclaration("var", [variableDeclarator(id, decl.node)]));
+ }
+ } else if (id.type === "MemberExpression") {
+ if (decl.isFunctionDeclaration()) {
+ exportBindingAssignments.forEach(assignPath => {
+ const assign = path.get(assignPath);
+ assign.replaceWith(assignmentExpression("=", id, assign.node));
+ });
+ exp.replaceWith(decl);
+ path.pushContainer("body", expressionStatement(assignmentExpression("=", id, identifier(exportName))));
+ } else {
+ exp.replaceWith(expressionStatement(assignmentExpression("=", id, decl.node)));
+ }
+ } else {
+ throw new Error("Unexpected helper format.");
+ }
+
+ Object.keys(toRename).forEach(name => {
+ path.scope.rename(name, toRename[name]);
+ });
+
+ for (const path of imps) path.remove();
+
+ for (const path of impsBindingRefs) {
+ const node = cloneNode(dependenciesRefs[path.node.name]);
+ path.replaceWith(node);
+ }
+
+ path.stop();
+ }
+
+ };
+ (0, _traverse.default)(file.ast, visitor, file.scope);
+}
+
+const helperData = Object.create(null);
+
+function loadHelper(name) {
+ if (!helperData[name]) {
+ const helper = _helpers.default[name];
+
+ if (!helper) {
+ throw Object.assign(new ReferenceError(`Unknown helper ${name}`), {
+ code: "BABEL_HELPER_UNKNOWN",
+ helper: name
+ });
+ }
+
+ const fn = () => {
+ const file = {
+ ast: t_file(helper.ast())
+ };
+
+ if (fileClass) {
+ return new fileClass({
+ filename: `babel-helper://${name}`
+ }, file);
+ }
+
+ return file;
+ };
+
+ const metadata = getHelperMetadata(fn());
+ helperData[name] = {
+ build(getDependency, id, localBindings) {
+ const file = fn();
+ permuteHelperAST(file, metadata, id, localBindings, getDependency);
+ return {
+ nodes: file.ast.program.body,
+ globals: metadata.globals
+ };
+ },
+
+ minVersion() {
+ return helper.minVersion;
+ },
+
+ dependencies: metadata.dependencies
+ };
+ }
+
+ return helperData[name];
+}
+
+function get(name, getDependency, id, localBindings) {
+ return loadHelper(name).build(getDependency, id, localBindings);
+}
+
+function minVersion(name) {
+ return loadHelper(name).minVersion();
+}
+
+function getDependencies(name) {
+ return Array.from(loadHelper(name).dependencies.values());
+}
+
+function ensure(name, newFileClass) {
+ if (!fileClass) {
+ fileClass = newFileClass;
+ }
+
+ loadHelper(name);
+}
+
+const list = Object.keys(_helpers.default).map(name => name.replace(/^_/, ""));
+exports.list = list;
+var _default = get;
+exports.default = _default; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/package.json b/tools/node_modules/eslint/node_modules/@babel/helpers/package.json
new file mode 100644
index 0000000000..609e25c4d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "@babel/helpers",
+ "version": "7.16.3",
+ "description": "Collection of helper functions used by Babel transforms.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-helpers",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-helpers"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/template": "^7.16.0",
+ "@babel/traverse": "^7.16.3",
+ "@babel/types": "^7.16.0"
+ },
+ "devDependencies": {
+ "@babel/helper-plugin-test-runner": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js
new file mode 100644
index 0000000000..c10199bf69
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/generate-helpers.js
@@ -0,0 +1,68 @@
+import fs from "fs";
+import { join } from "path";
+import { URL, fileURLToPath } from "url";
+
+const HELPERS_FOLDER = new URL("../src/helpers", import.meta.url);
+const IGNORED_FILES = new Set(["package.json"]);
+
+export default async function generateHelpers() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+
+import template from "@babel/template";
+
+`;
+
+ for (const file of (await fs.promises.readdir(HELPERS_FOLDER)).sort()) {
+ if (IGNORED_FILES.has(file)) continue;
+ if (file.startsWith(".")) continue; // ignore e.g. vim swap files
+
+ const [helperName] = file.split(".");
+ const isValidId = isValidBindingIdentifier(helperName);
+ const varName = isValidId ? helperName : `_${helperName}`;
+
+ const filePath = join(fileURLToPath(HELPERS_FOLDER), file);
+ if (!file.endsWith(".js")) {
+ console.error("ignoring", filePath);
+ continue;
+ }
+
+ const fileContents = await fs.promises.readFile(filePath, "utf8");
+ const minVersionMatch = fileContents.match(
+ /^\s*\/\*\s*@minVersion\s+(?<minVersion>\S+)\s*\*\/\s*$/m
+ );
+ if (!minVersionMatch) {
+ throw new Error(`@minVersion number missing in ${filePath}`);
+ }
+ const { minVersion } = minVersionMatch.groups;
+
+ // TODO: We can minify the helpers in production
+ const source = fileContents
+ // Remove comments
+ .replace(/\/\*[^]*?\*\/|\/\/.*/g, "")
+ // Remove multiple newlines
+ .replace(/\n{2,}/g, "\n");
+
+ const intro = isValidId
+ ? "export "
+ : `export { ${varName} as ${helperName} }\n`;
+
+ output += `\n${intro}const ${varName} = {
+ minVersion: ${JSON.stringify(minVersion)},
+ ast: () => template.program.ast(${JSON.stringify(source)})
+};\n`;
+ }
+
+ return output;
+}
+
+function isValidBindingIdentifier(name) {
+ try {
+ Function(`var ${name}`);
+ return true;
+ } catch {
+ return false;
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/package.json b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/package.json
new file mode 100644
index 0000000000..5ffd9800b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/helpers/scripts/package.json
@@ -0,0 +1 @@
+{ "type": "module" }
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/LICENSE b/tools/node_modules/eslint/node_modules/@babel/highlight/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/README.md b/tools/node_modules/eslint/node_modules/@babel/highlight/README.md
new file mode 100644
index 0000000000..f8887ad2ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/README.md
@@ -0,0 +1,19 @@
+# @babel/highlight
+
+> Syntax highlight JavaScript strings for output in terminals.
+
+See our website [@babel/highlight](https://babeljs.io/docs/en/babel-highlight) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/highlight
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/highlight --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js
new file mode 100644
index 0000000000..b8537b26f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/lib/index.js
@@ -0,0 +1,116 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = highlight;
+exports.getChalk = getChalk;
+exports.shouldHighlight = shouldHighlight;
+
+var _jsTokens = require("js-tokens");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+var _chalk = require("chalk");
+
+const sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
+
+function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsxIdentifier: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+}
+
+const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+const BRACKET = /^[()[\]{}]$/;
+let tokenize;
+{
+ const JSX_TAG = /^[a-z][\w-]*$/i;
+
+ const getTokenType = function (token, offset, text) {
+ if (token.type === "name") {
+ if ((0, _helperValidatorIdentifier.isKeyword)(token.value) || (0, _helperValidatorIdentifier.isStrictReservedWord)(token.value, true) || sometimesKeywords.has(token.value)) {
+ return "keyword";
+ }
+
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) {
+ return "jsxIdentifier";
+ }
+
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+
+ return token.type;
+ };
+
+ tokenize = function* (text) {
+ let match;
+
+ while (match = _jsTokens.default.exec(text)) {
+ const token = _jsTokens.matchToToken(match);
+
+ yield {
+ type: getTokenType(token, match.index, text),
+ value: token.value
+ };
+ }
+ };
+}
+
+function highlightTokens(defs, text) {
+ let highlighted = "";
+
+ for (const {
+ type,
+ value
+ } of tokenize(text)) {
+ const colorize = defs[type];
+
+ if (colorize) {
+ highlighted += value.split(NEWLINE).map(str => colorize(str)).join("\n");
+ } else {
+ highlighted += value;
+ }
+ }
+
+ return highlighted;
+}
+
+function shouldHighlight(options) {
+ return !!_chalk.supportsColor || options.forceColor;
+}
+
+function getChalk(options) {
+ return options.forceColor ? new _chalk.constructor({
+ enabled: true,
+ level: 1
+ }) : _chalk;
+}
+
+function highlight(code, options = {}) {
+ if (shouldHighlight(options)) {
+ const chalk = getChalk(options);
+ const defs = getDefs(chalk);
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
new file mode 100644
index 0000000000..90a871c4d7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/index.js
@@ -0,0 +1,165 @@
+'use strict';
+const colorConvert = require('color-convert');
+
+const wrapAnsi16 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${code + offset}m`;
+};
+
+const wrapAnsi256 = (fn, offset) => function () {
+ const code = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};5;${code}m`;
+};
+
+const wrapAnsi16m = (fn, offset) => function () {
+ const rgb = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
+
+function assembleStyles() {
+ const codes = new Map();
+ const styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+
+ // Bright color
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ };
+
+ // Fix humans
+ styles.color.grey = styles.color.gray;
+
+ for (const groupName of Object.keys(styles)) {
+ const group = styles[groupName];
+
+ for (const styleName of Object.keys(group)) {
+ const style = group[styleName];
+
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
+
+ group[styleName] = styles[styleName];
+
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+
+ const ansi2ansi = n => n;
+ const rgb2rgb = (r, g, b) => [r, g, b];
+
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
+
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
+
+ for (let key of Object.keys(colorConvert)) {
+ if (typeof colorConvert[key] !== 'object') {
+ continue;
+ }
+
+ const suite = colorConvert[key];
+
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
+
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
+
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
+
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
+
+ return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+});
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/license b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
new file mode 100644
index 0000000000..65edb48c39
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/package.json
@@ -0,0 +1,56 @@
+{
+ "name": "ansi-styles",
+ "version": "3.2.1",
+ "description": "ANSI escape codes for styling strings in the terminal",
+ "license": "MIT",
+ "repository": "chalk/ansi-styles",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava",
+ "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "ansi",
+ "styles",
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "tty",
+ "escape",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "devDependencies": {
+ "ava": "*",
+ "babel-polyfill": "^6.23.0",
+ "svg-term-cli": "^2.1.1",
+ "xo": "*"
+ },
+ "ava": {
+ "require": "babel-polyfill"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
new file mode 100644
index 0000000000..3158e2df59
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/ansi-styles/readme.md
@@ -0,0 +1,147 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" width="900">
+
+
+## Install
+
+```
+$ npm install ansi-styles
+```
+
+
+## Usage
+
+```js
+const style = require('ansi-styles');
+
+console.log(`${style.green.open}Hello world!${style.green.close}`);
+
+
+// Color conversion between 16/256/truecolor
+// NOTE: If conversion goes to 16 colors or 256 colors, the original color
+// may be degraded to fit that color palette. This means terminals
+// that do not support 16 million colors will best-match the
+// original color.
+console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
+console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
+console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close);
+```
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Advanced usage
+
+By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `style.modifier`
+- `style.color`
+- `style.bgColor`
+
+###### Example
+
+```js
+console.log(style.color.green.open);
+```
+
+Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
+
+###### Example
+
+```js
+console.log(style.codes.get(36));
+//=> 39
+```
+
+
+## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
+
+`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
+
+To use these, call the associated conversion function with the intended output, for example:
+
+```js
+style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
+style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
+
+style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+
+style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
+style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
+```
+
+
+## Related
+
+- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js
new file mode 100644
index 0000000000..1cc5fa89a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js
@@ -0,0 +1,228 @@
+'use strict';
+const escapeStringRegexp = require('escape-string-regexp');
+const ansiStyles = require('ansi-styles');
+const stdoutColor = require('supports-color').stdout;
+
+const template = require('./templates.js');
+
+const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
+
+// `supportsColor.level` → `ansiStyles.color[name]` mapping
+const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
+
+// `color-convert` models to exclude from the Chalk API due to conflicts and such
+const skipModels = new Set(['gray']);
+
+const styles = Object.create(null);
+
+function applyOptions(obj, options) {
+ options = options || {};
+
+ // Detect level if not set manually
+ const scLevel = stdoutColor ? stdoutColor.level : 0;
+ obj.level = options.level === undefined ? scLevel : options.level;
+ obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
+}
+
+function Chalk(options) {
+ // We check for this.template here since calling `chalk.constructor()`
+ // by itself will have a `this` of a previously constructed chalk object
+ if (!this || !(this instanceof Chalk) || this.template) {
+ const chalk = {};
+ applyOptions(chalk, options);
+
+ chalk.template = function () {
+ const args = [].slice.call(arguments);
+ return chalkTag.apply(null, [chalk.template].concat(args));
+ };
+
+ Object.setPrototypeOf(chalk, Chalk.prototype);
+ Object.setPrototypeOf(chalk.template, chalk);
+
+ chalk.template.constructor = Chalk;
+
+ return chalk.template;
+ }
+
+ applyOptions(this, options);
+}
+
+// Use bright blue on Windows as the normal blue color is illegible
+if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001B[94m';
+}
+
+for (const key of Object.keys(ansiStyles)) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+
+ styles[key] = {
+ get() {
+ const codes = ansiStyles[key];
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+ }
+ };
+}
+
+styles.visible = {
+ get() {
+ return build.call(this, this._styles || [], true, 'visible');
+ }
+};
+
+ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+for (const model of Object.keys(ansiStyles.color.ansi)) {
+ if (skipModels.has(model)) {
+ continue;
+ }
+
+ styles[model] = {
+ get() {
+ const level = this.level;
+ return function () {
+ const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
+ const codes = {
+ open,
+ close: ansiStyles.color.close,
+ closeRe: ansiStyles.color.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+ };
+}
+
+ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+for (const model of Object.keys(ansiStyles.bgColor.ansi)) {
+ if (skipModels.has(model)) {
+ continue;
+ }
+
+ const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
+ styles[bgModel] = {
+ get() {
+ const level = this.level;
+ return function () {
+ const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
+ const codes = {
+ open,
+ close: ansiStyles.bgColor.close,
+ closeRe: ansiStyles.bgColor.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+ };
+}
+
+const proto = Object.defineProperties(() => {}, styles);
+
+function build(_styles, _empty, key) {
+ const builder = function () {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder._empty = _empty;
+
+ const self = this;
+
+ Object.defineProperty(builder, 'level', {
+ enumerable: true,
+ get() {
+ return self.level;
+ },
+ set(level) {
+ self.level = level;
+ }
+ });
+
+ Object.defineProperty(builder, 'enabled', {
+ enumerable: true,
+ get() {
+ return self.enabled;
+ },
+ set(enabled) {
+ self.enabled = enabled;
+ }
+ });
+
+ // See below for fix regarding invisible grey/dim combination on Windows
+ builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
+
+ // `__proto__` is used because we must return a function, but there is
+ // no way to create a function with a different prototype
+ builder.__proto__ = proto; // eslint-disable-line no-proto
+
+ return builder;
+}
+
+function applyStyle() {
+ // Support varags, but simply cast to string in case there's only one arg
+ const args = arguments;
+ const argsLen = args.length;
+ let str = String(arguments[0]);
+
+ if (argsLen === 0) {
+ return '';
+ }
+
+ if (argsLen > 1) {
+ // Don't slice `arguments`, it prevents V8 optimizations
+ for (let a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || this.level <= 0 || !str) {
+ return this._empty ? '' : str;
+ }
+
+ // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+ const originalDim = ansiStyles.dim.open;
+ if (isSimpleWindowsTerm && this.hasGrey) {
+ ansiStyles.dim.open = '';
+ }
+
+ for (const code of this._styles.slice().reverse()) {
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close;
+
+ // Close the styling before a linebreak and reopen
+ // after next line to fix a bleed issue on macOS
+ // https://github.com/chalk/chalk/pull/92
+ str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
+ }
+
+ // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+ ansiStyles.dim.open = originalDim;
+
+ return str;
+}
+
+function chalkTag(chalk, strings) {
+ if (!Array.isArray(strings)) {
+ // If chalk() was called by itself or with a string,
+ // return the string itself as a string.
+ return [].slice.call(arguments, 1).join(' ');
+ }
+
+ const args = [].slice.call(arguments, 2);
+ const parts = [strings.raw[0]];
+
+ for (let i = 1; i < strings.length; i++) {
+ parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+ parts.push(String(strings.raw[i]));
+ }
+
+ return template(chalk, parts.join(''));
+}
+
+Object.defineProperties(Chalk.prototype, styles);
+
+module.exports = Chalk(); // eslint-disable-line new-cap
+module.exports.supportsColor = stdoutColor;
+module.exports.default = module.exports; // For TypeScript
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js.flow b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
new file mode 100644
index 0000000000..622caaa2e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/index.js.flow
@@ -0,0 +1,93 @@
+// @flow strict
+
+type TemplateStringsArray = $ReadOnlyArray<string>;
+
+export type Level = $Values<{
+ None: 0,
+ Basic: 1,
+ Ansi256: 2,
+ TrueColor: 3
+}>;
+
+export type ChalkOptions = {|
+ enabled?: boolean,
+ level?: Level
+|};
+
+export type ColorSupport = {|
+ level: Level,
+ hasBasic: boolean,
+ has256: boolean,
+ has16m: boolean
+|};
+
+export interface Chalk {
+ (...text: string[]): string,
+ (text: TemplateStringsArray, ...placeholders: string[]): string,
+ constructor(options?: ChalkOptions): Chalk,
+ enabled: boolean,
+ level: Level,
+ rgb(r: number, g: number, b: number): Chalk,
+ hsl(h: number, s: number, l: number): Chalk,
+ hsv(h: number, s: number, v: number): Chalk,
+ hwb(h: number, w: number, b: number): Chalk,
+ bgHex(color: string): Chalk,
+ bgKeyword(color: string): Chalk,
+ bgRgb(r: number, g: number, b: number): Chalk,
+ bgHsl(h: number, s: number, l: number): Chalk,
+ bgHsv(h: number, s: number, v: number): Chalk,
+ bgHwb(h: number, w: number, b: number): Chalk,
+ hex(color: string): Chalk,
+ keyword(color: string): Chalk,
+
+ +reset: Chalk,
+ +bold: Chalk,
+ +dim: Chalk,
+ +italic: Chalk,
+ +underline: Chalk,
+ +inverse: Chalk,
+ +hidden: Chalk,
+ +strikethrough: Chalk,
+
+ +visible: Chalk,
+
+ +black: Chalk,
+ +red: Chalk,
+ +green: Chalk,
+ +yellow: Chalk,
+ +blue: Chalk,
+ +magenta: Chalk,
+ +cyan: Chalk,
+ +white: Chalk,
+ +gray: Chalk,
+ +grey: Chalk,
+ +blackBright: Chalk,
+ +redBright: Chalk,
+ +greenBright: Chalk,
+ +yellowBright: Chalk,
+ +blueBright: Chalk,
+ +magentaBright: Chalk,
+ +cyanBright: Chalk,
+ +whiteBright: Chalk,
+
+ +bgBlack: Chalk,
+ +bgRed: Chalk,
+ +bgGreen: Chalk,
+ +bgYellow: Chalk,
+ +bgBlue: Chalk,
+ +bgMagenta: Chalk,
+ +bgCyan: Chalk,
+ +bgWhite: Chalk,
+ +bgBlackBright: Chalk,
+ +bgRedBright: Chalk,
+ +bgGreenBright: Chalk,
+ +bgYellowBright: Chalk,
+ +bgBlueBright: Chalk,
+ +bgMagentaBright: Chalk,
+ +bgCyanBright: Chalk,
+ +bgWhiteBrigh: Chalk,
+
+ supportsColor: ColorSupport
+};
+
+declare module.exports: Chalk;
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/license b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/package.json
new file mode 100644
index 0000000000..bc324685a7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "chalk",
+ "version": "2.4.2",
+ "description": "Terminal string styling done right",
+ "license": "MIT",
+ "repository": "chalk/chalk",
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava",
+ "bench": "matcha benchmark.js",
+ "coveralls": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "files": [
+ "index.js",
+ "templates.js",
+ "types/index.d.ts",
+ "index.js.flow"
+ ],
+ "keywords": [
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "string",
+ "str",
+ "ansi",
+ "style",
+ "styles",
+ "tty",
+ "formatting",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "log",
+ "logging",
+ "command-line",
+ "text"
+ ],
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "devDependencies": {
+ "ava": "*",
+ "coveralls": "^3.0.0",
+ "execa": "^0.9.0",
+ "flow-bin": "^0.68.0",
+ "import-fresh": "^2.0.0",
+ "matcha": "^0.7.0",
+ "nyc": "^11.0.2",
+ "resolve-from": "^4.0.0",
+ "typescript": "^2.5.3",
+ "xo": "*"
+ },
+ "types": "types/index.d.ts",
+ "xo": {
+ "envs": [
+ "node",
+ "mocha"
+ ],
+ "ignores": [
+ "test/_flow.js"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/readme.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/readme.md
new file mode 100644
index 0000000000..d298e2c48d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/readme.md
@@ -0,0 +1,314 @@
+<h1 align="center">
+ <br>
+ <br>
+ <img width="320" src="media/logo.svg" alt="Chalk">
+ <br>
+ <br>
+ <br>
+</h1>
+
+> Terminal string styling done right
+
+[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs)
+
+### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0)
+
+<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" alt="" width="900">
+
+
+## Highlights
+
+- Expressive API
+- Highly performant
+- Ability to nest styles
+- [256/Truecolor color support](#256-and-truecolor-color-support)
+- Auto-detects color support
+- Doesn't extend `String.prototype`
+- Clean and focused
+- Actively maintained
+- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017
+
+
+## Install
+
+```console
+$ npm install chalk
+```
+
+<a href="https://www.patreon.com/sindresorhus">
+ <img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
+</a>
+
+
+## Usage
+
+```js
+const chalk = require('chalk');
+
+console.log(chalk.blue('Hello world!'));
+```
+
+Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
+
+```js
+const chalk = require('chalk');
+const log = console.log;
+
+// Combine styled and normal strings
+log(chalk.blue('Hello') + ' World' + chalk.red('!'));
+
+// Compose multiple styles using the chainable API
+log(chalk.blue.bgRed.bold('Hello world!'));
+
+// Pass in multiple arguments
+log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
+
+// Nest styles
+log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
+
+// Nest styles of the same type even (color, underline, background)
+log(chalk.green(
+ 'I am a green line ' +
+ chalk.blue.underline.bold('with a blue substring') +
+ ' that becomes green again!'
+));
+
+// ES2015 template literal
+log(`
+CPU: ${chalk.red('90%')}
+RAM: ${chalk.green('40%')}
+DISK: ${chalk.yellow('70%')}
+`);
+
+// ES2015 tagged template literal
+log(chalk`
+CPU: {red ${cpu.totalPercent}%}
+RAM: {green ${ram.used / ram.total * 100}%}
+DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
+`);
+
+// Use RGB colors in terminal emulators that support it.
+log(chalk.keyword('orange')('Yay for orange colored text!'));
+log(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
+log(chalk.hex('#DEADED').bold('Bold gray!'));
+```
+
+Easily define your own themes:
+
+```js
+const chalk = require('chalk');
+
+const error = chalk.bold.red;
+const warning = chalk.keyword('orange');
+
+console.log(error('Error!'));
+console.log(warning('Warning!'));
+```
+
+Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args):
+
+```js
+const name = 'Sindre';
+console.log(chalk.green('Hello %s'), name);
+//=> 'Hello Sindre'
+```
+
+
+## API
+
+### chalk.`<style>[.<style>...](string, [string...])`
+
+Example: `chalk.red.bold.underline('Hello', 'world');`
+
+Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
+
+Multiple arguments will be separated by space.
+
+### chalk.enabled
+
+Color support is automatically detected, as is the level (see `chalk.level`). However, if you'd like to simply enable/disable Chalk, you can do so via the `.enabled` property.
+
+Chalk is enabled by default unless explicitly disabled via the constructor or `chalk.level` is `0`.
+
+If you need to change this in a reusable module, create a new instance:
+
+```js
+const ctx = new chalk.constructor({enabled: false});
+```
+
+### chalk.level
+
+Color support is automatically detected, but you can override it by setting the `level` property. You should however only do this in your own code as it applies globally to all Chalk consumers.
+
+If you need to change this in a reusable module, create a new instance:
+
+```js
+const ctx = new chalk.constructor({level: 0});
+```
+
+Levels are as follows:
+
+0. All colors disabled
+1. Basic color support (16 colors)
+2. 256 color support
+3. Truecolor support (16 million colors)
+
+### chalk.supportsColor
+
+Detect whether the terminal [supports color](https://github.com/chalk/supports-color). Used internally and handled for you, but exposed for convenience.
+
+Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add the environment variable `FORCE_COLOR=1` to forcefully enable color or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks.
+
+Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+- `visible` (Text is emitted only if enabled)
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue` *(On Windows the bright version is used since normal blue is illegible)*
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Tagged template literal
+
+Chalk can be used as a [tagged template literal](http://exploringjs.com/es6/ch_template-literals.html#_tagged-template-literals).
+
+```js
+const chalk = require('chalk');
+
+const miles = 18;
+const calculateFeet = miles => miles * 5280;
+
+console.log(chalk`
+ There are {bold 5280 feet} in a mile.
+ In {bold ${miles} miles}, there are {green.bold ${calculateFeet(miles)} feet}.
+`);
+```
+
+Blocks are delimited by an opening curly brace (`{`), a style, some content, and a closing curly brace (`}`).
+
+Template styles are chained exactly like normal Chalk styles. The following two statements are equivalent:
+
+```js
+console.log(chalk.bold.rgb(10, 100, 200)('Hello!'));
+console.log(chalk`{bold.rgb(10,100,200) Hello!}`);
+```
+
+Note that function styles (`rgb()`, `hsl()`, `keyword()`, etc.) may not contain spaces between parameters.
+
+All interpolated values (`` chalk`${foo}` ``) are converted to strings via the `.toString()` method. All curly braces (`{` and `}`) in interpolated value strings are escaped.
+
+
+## 256 and Truecolor color support
+
+Chalk supports 256 colors and [Truecolor](https://gist.github.com/XVilka/8346728) (16 million colors) on supported terminal apps.
+
+Colors are downsampled from 16 million RGB values to an ANSI color format that is supported by the terminal emulator (or by specifying `{level: n}` as a Chalk option). For example, Chalk configured to run at level 1 (basic color support) will downsample an RGB value of #FF0000 (red) to 31 (ANSI escape for red).
+
+Examples:
+
+- `chalk.hex('#DEADED').underline('Hello, world!')`
+- `chalk.keyword('orange')('Some orange text')`
+- `chalk.rgb(15, 100, 204).inverse('Hello!')`
+
+Background versions of these models are prefixed with `bg` and the first level of the module capitalized (e.g. `keyword` for foreground colors and `bgKeyword` for background colors).
+
+- `chalk.bgHex('#DEADED').underline('Hello, world!')`
+- `chalk.bgKeyword('orange')('Some orange text')`
+- `chalk.bgRgb(15, 100, 204).inverse('Hello!')`
+
+The following color models can be used:
+
+- [`rgb`](https://en.wikipedia.org/wiki/RGB_color_model) - Example: `chalk.rgb(255, 136, 0).bold('Orange!')`
+- [`hex`](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) - Example: `chalk.hex('#FF8800').bold('Orange!')`
+- [`keyword`](https://www.w3.org/wiki/CSS/Properties/color/keywords) (CSS keywords) - Example: `chalk.keyword('orange').bold('Orange!')`
+- [`hsl`](https://en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsl(32, 100, 50).bold('Orange!')`
+- [`hsv`](https://en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsv(32, 100, 100).bold('Orange!')`
+- [`hwb`](https://en.wikipedia.org/wiki/HWB_color_model) - Example: `chalk.hwb(32, 0, 50).bold('Orange!')`
+- `ansi16`
+- `ansi256`
+
+
+## Windows
+
+If you're on Windows, do yourself a favor and use [`cmder`](http://cmder.net/) instead of `cmd.exe`.
+
+
+## Origin story
+
+[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68) and the package is unmaintained. Although there are other packages, they either do too much or not enough. Chalk is a clean and focused alternative.
+
+
+## Related
+
+- [chalk-cli](https://github.com/chalk/chalk-cli) - CLI for this module
+- [ansi-styles](https://github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal
+- [supports-color](https://github.com/chalk/supports-color) - Detect whether a terminal supports color
+- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Strip ANSI escape codes from a stream
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
+- [slice-ansi](https://github.com/chalk/slice-ansi) - Slice a string with ANSI escape codes
+- [color-convert](https://github.com/qix-/color-convert) - Converts colors between different models
+- [chalk-animation](https://github.com/bokub/chalk-animation) - Animate strings in the terminal
+- [gradient-string](https://github.com/bokub/gradient-string) - Apply color gradients to strings
+- [chalk-pipe](https://github.com/LitoMore/chalk-pipe) - Create chalk style schemes with simpler style strings
+- [terminal-link](https://github.com/sindresorhus/terminal-link) - Create clickable links in the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/templates.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/templates.js
new file mode 100644
index 0000000000..dbdf9b2211
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/chalk/templates.js
@@ -0,0 +1,128 @@
+'use strict';
+const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
+const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
+const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
+const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
+
+const ESCAPES = new Map([
+ ['n', '\n'],
+ ['r', '\r'],
+ ['t', '\t'],
+ ['b', '\b'],
+ ['f', '\f'],
+ ['v', '\v'],
+ ['0', '\0'],
+ ['\\', '\\'],
+ ['e', '\u001B'],
+ ['a', '\u0007']
+]);
+
+function unescape(c) {
+ if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
+ return String.fromCharCode(parseInt(c.slice(1), 16));
+ }
+
+ return ESCAPES.get(c) || c;
+}
+
+function parseArguments(name, args) {
+ const results = [];
+ const chunks = args.trim().split(/\s*,\s*/g);
+ let matches;
+
+ for (const chunk of chunks) {
+ if (!isNaN(chunk)) {
+ results.push(Number(chunk));
+ } else if ((matches = chunk.match(STRING_REGEX))) {
+ results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));
+ } else {
+ throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
+ }
+ }
+
+ return results;
+}
+
+function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
+
+ const results = [];
+ let matches;
+
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ const name = matches[1];
+
+ if (matches[2]) {
+ const args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
+
+ return results;
+}
+
+function buildStyle(chalk, styles) {
+ const enabled = {};
+
+ for (const layer of styles) {
+ for (const style of layer.styles) {
+ enabled[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ }
+
+ let current = chalk;
+ for (const styleName of Object.keys(enabled)) {
+ if (Array.isArray(enabled[styleName])) {
+ if (!(styleName in current)) {
+ throw new Error(`Unknown Chalk style: ${styleName}`);
+ }
+
+ if (enabled[styleName].length > 0) {
+ current = current[styleName].apply(current, enabled[styleName]);
+ } else {
+ current = current[styleName];
+ }
+ }
+ }
+
+ return current;
+}
+
+module.exports = (chalk, tmp) => {
+ const styles = [];
+ const chunks = [];
+ let chunk = [];
+
+ // eslint-disable-next-line max-params
+ tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {
+ if (escapeChar) {
+ chunk.push(unescape(escapeChar));
+ } else if (style) {
+ const str = chunk.join('');
+ chunk = [];
+ chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
+ styles.push({inverse, styles: parseStyle(style)});
+ } else if (close) {
+ if (styles.length === 0) {
+ throw new Error('Found extraneous } in Chalk template literal');
+ }
+
+ chunks.push(buildStyle(chalk, styles)(chunk.join('')));
+ chunk = [];
+ styles.pop();
+ } else {
+ chunk.push(chr);
+ }
+ });
+
+ chunks.push(chunk.join(''));
+
+ if (styles.length > 0) {
+ const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
+ throw new Error(errMsg);
+ }
+
+ return chunks.join('');
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/LICENSE b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/LICENSE
new file mode 100644
index 0000000000..5b4c386f92
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/README.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/README.md
new file mode 100644
index 0000000000..d4b08fc369
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/README.md
@@ -0,0 +1,68 @@
+# color-convert
+
+[![Build Status](https://travis-ci.org/Qix-/color-convert.svg?branch=master)](https://travis-ci.org/Qix-/color-convert)
+
+Color-convert is a color conversion library for JavaScript and node.
+It converts all ways between `rgb`, `hsl`, `hsv`, `hwb`, `cmyk`, `ansi`, `ansi16`, `hex` strings, and CSS `keyword`s (will round to closest):
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hsl(140, 200, 100); // [96, 48, 59]
+convert.keyword.rgb('blue'); // [0, 0, 255]
+
+var rgbChannels = convert.rgb.channels; // 3
+var cmykChannels = convert.cmyk.channels; // 4
+var ansiChannels = convert.ansi16.channels; // 1
+```
+
+# Install
+
+```console
+$ npm install color-convert
+```
+
+# API
+
+Simply get the property of the _from_ and _to_ conversion that you're looking for.
+
+All functions have a rounded and unrounded variant. By default, return values are rounded. To get the unrounded (raw) results, simply tack on `.raw` to the function.
+
+All 'from' functions have a hidden property called `.channels` that indicates the number of channels the function expects (not including alpha).
+
+```js
+var convert = require('color-convert');
+
+// Hex to LAB
+convert.hex.lab('DEADBF'); // [ 76, 21, -2 ]
+convert.hex.lab.raw('DEADBF'); // [ 75.56213190997677, 20.653827952644754, -2.290532499330533 ]
+
+// RGB to CMYK
+convert.rgb.cmyk(167, 255, 4); // [ 35, 0, 98, 0 ]
+convert.rgb.cmyk.raw(167, 255, 4); // [ 34.509803921568626, 0, 98.43137254901961, 0 ]
+```
+
+### Arrays
+All functions that accept multiple arguments also support passing an array.
+
+Note that this does **not** apply to functions that convert from a color that only requires one value (e.g. `keyword`, `ansi256`, `hex`, etc.)
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hex(123, 45, 67); // '7B2D43'
+convert.rgb.hex([123, 45, 67]); // '7B2D43'
+```
+
+## Routing
+
+Conversions that don't have an _explicitly_ defined conversion (in [conversions.js](conversions.js)), but can be converted by means of sub-conversions (e.g. XYZ -> **RGB** -> CMYK), are automatically routed together. This allows just about any color model supported by `color-convert` to be converted to any other model, so long as a sub-conversion path exists. This is also true for conversions requiring more than one step in between (e.g. LCH -> **LAB** -> **XYZ** -> **RGB** -> Hex).
+
+Keep in mind that extensive conversions _may_ result in a loss of precision, and exist only to be complete. For a list of "direct" (single-step) conversions, see [conversions.js](conversions.js).
+
+# Contribute
+
+If there is a new model you would like to support, or want to add a direct conversion between two existing models, please send us a pull request.
+
+# License
+Copyright &copy; 2011-2016, Heather Arthur and Josh Junon. Licensed under the [MIT License](LICENSE).
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/conversions.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/conversions.js
new file mode 100644
index 0000000000..32172007ec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/conversions.js
@@ -0,0 +1,868 @@
+/* MIT license */
+var cssKeywords = require('color-name');
+
+// NOTE: conversions should only return primitive values (i.e. arrays, or
+// values that give correct `typeof` results).
+// do not use box values types (i.e. Number(), String(), etc.)
+
+var reverseKeywords = {};
+for (var key in cssKeywords) {
+ if (cssKeywords.hasOwnProperty(key)) {
+ reverseKeywords[cssKeywords[key]] = key;
+ }
+}
+
+var convert = module.exports = {
+ rgb: {channels: 3, labels: 'rgb'},
+ hsl: {channels: 3, labels: 'hsl'},
+ hsv: {channels: 3, labels: 'hsv'},
+ hwb: {channels: 3, labels: 'hwb'},
+ cmyk: {channels: 4, labels: 'cmyk'},
+ xyz: {channels: 3, labels: 'xyz'},
+ lab: {channels: 3, labels: 'lab'},
+ lch: {channels: 3, labels: 'lch'},
+ hex: {channels: 1, labels: ['hex']},
+ keyword: {channels: 1, labels: ['keyword']},
+ ansi16: {channels: 1, labels: ['ansi16']},
+ ansi256: {channels: 1, labels: ['ansi256']},
+ hcg: {channels: 3, labels: ['h', 'c', 'g']},
+ apple: {channels: 3, labels: ['r16', 'g16', 'b16']},
+ gray: {channels: 1, labels: ['gray']}
+};
+
+// hide .channels and .labels properties
+for (var model in convert) {
+ if (convert.hasOwnProperty(model)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ var channels = convert[model].channels;
+ var labels = convert[model].labels;
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {value: channels});
+ Object.defineProperty(convert[model], 'labels', {value: labels});
+ }
+}
+
+convert.rgb.hsl = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var l;
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
+};
+
+convert.rgb.hsv = function (rgb) {
+ var rdif;
+ var gdif;
+ var bdif;
+ var h;
+ var s;
+
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var v = Math.max(r, g, b);
+ var diff = v - Math.min(r, g, b);
+ var diffc = function (c) {
+ return (v - c) / 6 / diff + 1 / 2;
+ };
+
+ if (diff === 0) {
+ h = s = 0;
+ } else {
+ s = diff / v;
+ rdif = diffc(r);
+ gdif = diffc(g);
+ bdif = diffc(b);
+
+ if (r === v) {
+ h = bdif - gdif;
+ } else if (g === v) {
+ h = (1 / 3) + rdif - bdif;
+ } else if (b === v) {
+ h = (2 / 3) + gdif - rdif;
+ }
+ if (h < 0) {
+ h += 1;
+ } else if (h > 1) {
+ h -= 1;
+ }
+ }
+
+ return [
+ h * 360,
+ s * 100,
+ v * 100
+ ];
+};
+
+convert.rgb.hwb = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var h = convert.rgb.hsl(rgb)[0];
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
+
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+
+ return [h, w * 100, b * 100];
+};
+
+convert.rgb.cmyk = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var c;
+ var m;
+ var y;
+ var k;
+
+ k = Math.min(1 - r, 1 - g, 1 - b);
+ c = (1 - r - k) / (1 - k) || 0;
+ m = (1 - g - k) / (1 - k) || 0;
+ y = (1 - b - k) / (1 - k) || 0;
+
+ return [c * 100, m * 100, y * 100, k * 100];
+};
+
+/**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+function comparativeDistance(x, y) {
+ return (
+ Math.pow(x[0] - y[0], 2) +
+ Math.pow(x[1] - y[1], 2) +
+ Math.pow(x[2] - y[2], 2)
+ );
+}
+
+convert.rgb.keyword = function (rgb) {
+ var reversed = reverseKeywords[rgb];
+ if (reversed) {
+ return reversed;
+ }
+
+ var currentClosestDistance = Infinity;
+ var currentClosestKeyword;
+
+ for (var keyword in cssKeywords) {
+ if (cssKeywords.hasOwnProperty(keyword)) {
+ var value = cssKeywords[keyword];
+
+ // Compute comparative distance
+ var distance = comparativeDistance(rgb, value);
+
+ // Check if its less, if so set as closest
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ }
+
+ return currentClosestKeyword;
+};
+
+convert.keyword.rgb = function (keyword) {
+ return cssKeywords[keyword];
+};
+
+convert.rgb.xyz = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+
+ // assume sRGB
+ r = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);
+ g = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);
+ b = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);
+
+ var x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);
+ var y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);
+ var z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);
+
+ return [x * 100, y * 100, z * 100];
+};
+
+convert.rgb.lab = function (rgb) {
+ var xyz = convert.rgb.xyz(rgb);
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+ l = (116 * y) - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+
+ return [l, a, b];
+};
+
+convert.hsl.rgb = function (hsl) {
+ var h = hsl[0] / 360;
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var t1;
+ var t2;
+ var t3;
+ var rgb;
+ var val;
+
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+
+ t1 = 2 * l - t2;
+
+ rgb = [0, 0, 0];
+ for (var i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+ if (t3 < 0) {
+ t3++;
+ }
+ if (t3 > 1) {
+ t3--;
+ }
+
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+
+ rgb[i] = val * 255;
+ }
+
+ return rgb;
+};
+
+convert.hsl.hsv = function (hsl) {
+ var h = hsl[0];
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var smin = s;
+ var lmin = Math.max(l, 0.01);
+ var sv;
+ var v;
+
+ l *= 2;
+ s *= (l <= 1) ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (l + s) / 2;
+ sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);
+
+ return [h, sv * 100, v * 100];
+};
+
+convert.hsv.rgb = function (hsv) {
+ var h = hsv[0] / 60;
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var hi = Math.floor(h) % 6;
+
+ var f = h - Math.floor(h);
+ var p = 255 * v * (1 - s);
+ var q = 255 * v * (1 - (s * f));
+ var t = 255 * v * (1 - (s * (1 - f)));
+ v *= 255;
+
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+ case 1:
+ return [q, v, p];
+ case 2:
+ return [p, v, t];
+ case 3:
+ return [p, q, v];
+ case 4:
+ return [t, p, v];
+ case 5:
+ return [v, p, q];
+ }
+};
+
+convert.hsv.hsl = function (hsv) {
+ var h = hsv[0];
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var vmin = Math.max(v, 0.01);
+ var lmin;
+ var sl;
+ var l;
+
+ l = (2 - s) * v;
+ lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= (lmin <= 1) ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+
+ return [h, sl * 100, l * 100];
+};
+
+// http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+convert.hwb.rgb = function (hwb) {
+ var h = hwb[0] / 360;
+ var wh = hwb[1] / 100;
+ var bl = hwb[2] / 100;
+ var ratio = wh + bl;
+ var i;
+ var v;
+ var f;
+ var n;
+
+ // wh + bl cant be > 1
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+
+ i = Math.floor(6 * h);
+ v = 1 - bl;
+ f = 6 * h - i;
+
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
+
+ n = wh + f * (v - wh); // linear interpolation
+
+ var r;
+ var g;
+ var b;
+ switch (i) {
+ default:
+ case 6:
+ case 0: r = v; g = n; b = wh; break;
+ case 1: r = n; g = v; b = wh; break;
+ case 2: r = wh; g = v; b = n; break;
+ case 3: r = wh; g = n; b = v; break;
+ case 4: r = n; g = wh; b = v; break;
+ case 5: r = v; g = wh; b = n; break;
+ }
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.cmyk.rgb = function (cmyk) {
+ var c = cmyk[0] / 100;
+ var m = cmyk[1] / 100;
+ var y = cmyk[2] / 100;
+ var k = cmyk[3] / 100;
+ var r;
+ var g;
+ var b;
+
+ r = 1 - Math.min(1, c * (1 - k) + k);
+ g = 1 - Math.min(1, m * (1 - k) + k);
+ b = 1 - Math.min(1, y * (1 - k) + k);
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.rgb = function (xyz) {
+ var x = xyz[0] / 100;
+ var y = xyz[1] / 100;
+ var z = xyz[2] / 100;
+ var r;
+ var g;
+ var b;
+
+ r = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);
+ g = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);
+ b = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);
+
+ // assume sRGB
+ r = r > 0.0031308
+ ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)
+ : r * 12.92;
+
+ g = g > 0.0031308
+ ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)
+ : g * 12.92;
+
+ b = b > 0.0031308
+ ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)
+ : b * 12.92;
+
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+
+ return [r * 255, g * 255, b * 255];
+};
+
+convert.xyz.lab = function (xyz) {
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);
+
+ l = (116 * y) - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+
+ return [l, a, b];
+};
+
+convert.lab.xyz = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var x;
+ var y;
+ var z;
+
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+
+ var y2 = Math.pow(y, 3);
+ var x2 = Math.pow(x, 3);
+ var z2 = Math.pow(z, 3);
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+
+ return [x, y, z];
+};
+
+convert.lab.lch = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var hr;
+ var h;
+ var c;
+
+ hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ c = Math.sqrt(a * a + b * b);
+
+ return [l, c, h];
+};
+
+convert.lch.lab = function (lch) {
+ var l = lch[0];
+ var c = lch[1];
+ var h = lch[2];
+ var a;
+ var b;
+ var hr;
+
+ hr = h / 360 * 2 * Math.PI;
+ a = c * Math.cos(hr);
+ b = c * Math.sin(hr);
+
+ return [l, a, b];
+};
+
+convert.rgb.ansi16 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+ var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+
+ value = Math.round(value / 50);
+
+ if (value === 0) {
+ return 30;
+ }
+
+ var ansi = 30
+ + ((Math.round(b / 255) << 2)
+ | (Math.round(g / 255) << 1)
+ | Math.round(r / 255));
+
+ if (value === 2) {
+ ansi += 60;
+ }
+
+ return ansi;
+};
+
+convert.hsv.ansi16 = function (args) {
+ // optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+};
+
+convert.rgb.ansi256 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+
+ // we use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+
+ if (r > 248) {
+ return 231;
+ }
+
+ return Math.round(((r - 8) / 247) * 24) + 232;
+ }
+
+ var ansi = 16
+ + (36 * Math.round(r / 255 * 5))
+ + (6 * Math.round(g / 255 * 5))
+ + Math.round(b / 255 * 5);
+
+ return ansi;
+};
+
+convert.ansi16.rgb = function (args) {
+ var color = args % 10;
+
+ // handle greyscale
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+
+ color = color / 10.5 * 255;
+
+ return [color, color, color];
+ }
+
+ var mult = (~~(args > 50) + 1) * 0.5;
+ var r = ((color & 1) * mult) * 255;
+ var g = (((color >> 1) & 1) * mult) * 255;
+ var b = (((color >> 2) & 1) * mult) * 255;
+
+ return [r, g, b];
+};
+
+convert.ansi256.rgb = function (args) {
+ // handle greyscale
+ if (args >= 232) {
+ var c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+
+ args -= 16;
+
+ var rem;
+ var r = Math.floor(args / 36) / 5 * 255;
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ var b = (rem % 6) / 5 * 255;
+
+ return [r, g, b];
+};
+
+convert.rgb.hex = function (args) {
+ var integer = ((Math.round(args[0]) & 0xFF) << 16)
+ + ((Math.round(args[1]) & 0xFF) << 8)
+ + (Math.round(args[2]) & 0xFF);
+
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.hex.rgb = function (args) {
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+ if (!match) {
+ return [0, 0, 0];
+ }
+
+ var colorString = match[0];
+
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(function (char) {
+ return char + char;
+ }).join('');
+ }
+
+ var integer = parseInt(colorString, 16);
+ var r = (integer >> 16) & 0xFF;
+ var g = (integer >> 8) & 0xFF;
+ var b = integer & 0xFF;
+
+ return [r, g, b];
+};
+
+convert.rgb.hcg = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var max = Math.max(Math.max(r, g), b);
+ var min = Math.min(Math.min(r, g), b);
+ var chroma = (max - min);
+ var grayscale;
+ var hue;
+
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+
+ if (chroma <= 0) {
+ hue = 0;
+ } else
+ if (max === r) {
+ hue = ((g - b) / chroma) % 6;
+ } else
+ if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma + 4;
+ }
+
+ hue /= 6;
+ hue %= 1;
+
+ return [hue * 360, chroma * 100, grayscale * 100];
+};
+
+convert.hsl.hcg = function (hsl) {
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var c = 1;
+ var f = 0;
+
+ if (l < 0.5) {
+ c = 2.0 * s * l;
+ } else {
+ c = 2.0 * s * (1.0 - l);
+ }
+
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
+
+ return [hsl[0], c * 100, f * 100];
+};
+
+convert.hsv.hcg = function (hsv) {
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+
+ var c = s * v;
+ var f = 0;
+
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
+};
+
+convert.hcg.rgb = function (hcg) {
+ var h = hcg[0] / 360;
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
+
+ var pure = [0, 0, 0];
+ var hi = (h % 1) * 6;
+ var v = hi % 1;
+ var w = 1 - v;
+ var mg = 0;
+
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1; pure[1] = v; pure[2] = 0; break;
+ case 1:
+ pure[0] = w; pure[1] = 1; pure[2] = 0; break;
+ case 2:
+ pure[0] = 0; pure[1] = 1; pure[2] = v; break;
+ case 3:
+ pure[0] = 0; pure[1] = w; pure[2] = 1; break;
+ case 4:
+ pure[0] = v; pure[1] = 0; pure[2] = 1; break;
+ default:
+ pure[0] = 1; pure[1] = 0; pure[2] = w;
+ }
+
+ mg = (1.0 - c) * g;
+
+ return [
+ (c * pure[0] + mg) * 255,
+ (c * pure[1] + mg) * 255,
+ (c * pure[2] + mg) * 255
+ ];
+};
+
+convert.hcg.hsv = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ var v = c + g * (1.0 - c);
+ var f = 0;
+
+ if (v > 0.0) {
+ f = c / v;
+ }
+
+ return [hcg[0], f * 100, v * 100];
+};
+
+convert.hcg.hsl = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ var l = g * (1.0 - c) + 0.5 * c;
+ var s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else
+ if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
+};
+
+convert.hcg.hwb = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+};
+
+convert.hwb.hcg = function (hwb) {
+ var w = hwb[1] / 100;
+ var b = hwb[2] / 100;
+ var v = 1 - b;
+ var c = v - w;
+ var g = 0;
+
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
+};
+
+convert.apple.rgb = function (apple) {
+ return [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];
+};
+
+convert.rgb.apple = function (rgb) {
+ return [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];
+};
+
+convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+};
+
+convert.gray.hsl = convert.gray.hsv = function (args) {
+ return [0, 0, args[0]];
+};
+
+convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+};
+
+convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+};
+
+convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+};
+
+convert.gray.hex = function (gray) {
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ var integer = (val << 16) + (val << 8) + val;
+
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+};
+
+convert.rgb.gray = function (rgb) {
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/index.js
new file mode 100644
index 0000000000..e65b5d775d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/index.js
@@ -0,0 +1,78 @@
+var conversions = require('./conversions');
+var route = require('./route');
+
+var convert = {};
+
+var models = Object.keys(conversions);
+
+function wrapRaw(fn) {
+ var wrappedFn = function (args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ return fn(args);
+ };
+
+ // preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+function wrapRounded(fn) {
+ var wrappedFn = function (args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ var result = fn(args);
+
+ // we're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+ if (typeof result === 'object') {
+ for (var len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+
+ return result;
+ };
+
+ // preserve .conversion property if there is one
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+models.forEach(function (fromModel) {
+ convert[fromModel] = {};
+
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
+
+ var routes = route(fromModel);
+ var routeModels = Object.keys(routes);
+
+ routeModels.forEach(function (toModel) {
+ var fn = routes[toModel];
+
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
+
+module.exports = convert;
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/package.json
new file mode 100644
index 0000000000..dfbc471407
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "color-convert",
+ "description": "Plain color conversion functions",
+ "version": "1.9.3",
+ "author": "Heather Arthur <fayearthur@gmail.com>",
+ "license": "MIT",
+ "repository": "Qix-/color-convert",
+ "scripts": {
+ "pretest": "xo",
+ "test": "node test/basic.js"
+ },
+ "keywords": [
+ "color",
+ "colour",
+ "convert",
+ "converter",
+ "conversion",
+ "rgb",
+ "hsl",
+ "hsv",
+ "hwb",
+ "cmyk",
+ "ansi",
+ "ansi16"
+ ],
+ "files": [
+ "index.js",
+ "conversions.js",
+ "css-keywords.js",
+ "route.js"
+ ],
+ "xo": {
+ "rules": {
+ "default-case": 0,
+ "no-inline-comments": 0,
+ "operator-linebreak": 0
+ }
+ },
+ "devDependencies": {
+ "chalk": "1.1.1",
+ "xo": "0.11.2"
+ },
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/route.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/route.js
new file mode 100644
index 0000000000..0a1fdea689
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-convert/route.js
@@ -0,0 +1,97 @@
+var conversions = require('./conversions');
+
+/*
+ this function routes a model to all other models.
+
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+*/
+
+function buildGraph() {
+ var graph = {};
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
+ var models = Object.keys(conversions);
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
+}
+
+// https://en.wikipedia.org/wiki/Breadth-first_search
+function deriveBFS(fromModel) {
+ var graph = buildGraph();
+ var queue = [fromModel]; // unshift -> queue -> pop
+
+ graph[fromModel].distance = 0;
+
+ while (queue.length) {
+ var current = queue.pop();
+ var adjacents = Object.keys(conversions[current]);
+
+ for (var len = adjacents.length, i = 0; i < len; i++) {
+ var adjacent = adjacents[i];
+ var node = graph[adjacent];
+
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+
+ return graph;
+}
+
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
+
+function wrapConversion(toModel, graph) {
+ var path = [graph[toModel].parent, toModel];
+ var fn = conversions[graph[toModel].parent][toModel];
+
+ var cur = graph[toModel].parent;
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+
+ fn.conversion = path;
+ return fn;
+}
+
+module.exports = function (fromModel) {
+ var graph = deriveBFS(fromModel);
+ var conversion = {};
+
+ var models = Object.keys(graph);
+ for (var len = models.length, i = 0; i < len; i++) {
+ var toModel = models[i];
+ var node = graph[toModel];
+
+ if (node.parent === null) {
+ // no possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+
+ return conversion;
+};
+
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/LICENSE b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/LICENSE
new file mode 100644
index 0000000000..c6b1001254
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/LICENSE
@@ -0,0 +1,8 @@
+The MIT License (MIT)
+Copyright (c) 2015 Dmitry Ivanov
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/README.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/README.md
new file mode 100644
index 0000000000..932b979176
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/README.md
@@ -0,0 +1,11 @@
+A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.
+
+[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/)
+
+
+```js
+var colors = require('color-name');
+colors.red //[255,0,0]
+```
+
+<a href="LICENSE"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0c/MIT_logo.svg" width="120"/></a>
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/index.js
new file mode 100644
index 0000000000..b7c198a6f3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/index.js
@@ -0,0 +1,152 @@
+'use strict'
+
+module.exports = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/package.json
new file mode 100644
index 0000000000..d061123ef0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/color-name/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "color-name",
+ "version": "1.1.3",
+ "description": "A list of color names and its values",
+ "main": "index.js",
+ "scripts": {
+ "test": "node test.js"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git@github.com:dfcreative/color-name.git"
+ },
+ "keywords": [
+ "color-name",
+ "color",
+ "color-keyword",
+ "keyword"
+ ],
+ "author": "DY <dfcreative@gmail.com>",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/dfcreative/color-name/issues"
+ },
+ "homepage": "https://github.com/dfcreative/color-name"
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js
new file mode 100644
index 0000000000..7834bf9b24
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js
@@ -0,0 +1,11 @@
+'use strict';
+
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/license b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/license
new file mode 100644
index 0000000000..654d0bfe94
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json
new file mode 100644
index 0000000000..f307df34a2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "escape-string-regexp",
+ "version": "1.0.5",
+ "description": "Escape RegExp special characters",
+ "license": "MIT",
+ "repository": "sindresorhus/escape-string-regexp",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "maintainers": [
+ "Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)",
+ "Joshua Boy Nicolai Appelman <joshua@jbna.nl> (jbna.nl)"
+ ],
+ "engines": {
+ "node": ">=0.8.0"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "escape",
+ "regex",
+ "regexp",
+ "re",
+ "regular",
+ "expression",
+ "string",
+ "str",
+ "special",
+ "characters"
+ ],
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md
new file mode 100644
index 0000000000..87ac82d5ef
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/escape-string-regexp/readme.md
@@ -0,0 +1,27 @@
+# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp)
+
+> Escape RegExp special characters
+
+
+## Install
+
+```
+$ npm install --save escape-string-regexp
+```
+
+
+## Usage
+
+```js
+const escapeStringRegexp = require('escape-string-regexp');
+
+const escapedString = escapeStringRegexp('how much $ for a unicorn?');
+//=> 'how much \$ for a unicorn\?'
+
+new RegExp(escapedString);
+```
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/index.js
new file mode 100644
index 0000000000..5139728fba
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/index.js
@@ -0,0 +1,8 @@
+'use strict';
+module.exports = (flag, argv) => {
+ argv = argv || process.argv;
+ const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
+ const pos = argv.indexOf(prefix + flag);
+ const terminatorPos = argv.indexOf('--');
+ return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/license b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/package.json
new file mode 100644
index 0000000000..e1eb17a15e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "has-flag",
+ "version": "3.0.0",
+ "description": "Check if argv has a specific flag",
+ "license": "MIT",
+ "repository": "sindresorhus/has-flag",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "has",
+ "check",
+ "detect",
+ "contains",
+ "find",
+ "flag",
+ "cli",
+ "command-line",
+ "argv",
+ "process",
+ "arg",
+ "args",
+ "argument",
+ "arguments",
+ "getopt",
+ "minimist",
+ "optimist"
+ ],
+ "devDependencies": {
+ "ava": "*",
+ "xo": "*"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/readme.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/readme.md
new file mode 100644
index 0000000000..677893c278
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/has-flag/readme.md
@@ -0,0 +1,70 @@
+# has-flag [![Build Status](https://travis-ci.org/sindresorhus/has-flag.svg?branch=master)](https://travis-ci.org/sindresorhus/has-flag)
+
+> Check if [`argv`](https://nodejs.org/docs/latest/api/process.html#process_process_argv) has a specific flag
+
+Correctly stops looking after an `--` argument terminator.
+
+
+## Install
+
+```
+$ npm install has-flag
+```
+
+
+## Usage
+
+```js
+// foo.js
+const hasFlag = require('has-flag');
+
+hasFlag('unicorn');
+//=> true
+
+hasFlag('--unicorn');
+//=> true
+
+hasFlag('f');
+//=> true
+
+hasFlag('-f');
+//=> true
+
+hasFlag('foo=bar');
+//=> true
+
+hasFlag('foo');
+//=> false
+
+hasFlag('rainbow');
+//=> false
+```
+
+```
+$ node foo.js -f --unicorn --foo=bar -- --rainbow
+```
+
+
+## API
+
+### hasFlag(flag, [argv])
+
+Returns a boolean for whether the flag exists.
+
+#### flag
+
+Type: `string`
+
+CLI flag to look for. The `--` prefix is optional.
+
+#### argv
+
+Type: `string[]`<br>
+Default: `process.argv`
+
+CLI arguments.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/browser.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/browser.js
new file mode 100644
index 0000000000..62afa3a742
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/browser.js
@@ -0,0 +1,5 @@
+'use strict';
+module.exports = {
+ stdout: false,
+ stderr: false
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/index.js b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/index.js
new file mode 100644
index 0000000000..1704131bdf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/index.js
@@ -0,0 +1,131 @@
+'use strict';
+const os = require('os');
+const hasFlag = require('has-flag');
+
+const env = process.env;
+
+let forceColor;
+if (hasFlag('no-color') ||
+ hasFlag('no-colors') ||
+ hasFlag('color=false')) {
+ forceColor = false;
+} else if (hasFlag('color') ||
+ hasFlag('colors') ||
+ hasFlag('color=true') ||
+ hasFlag('color=always')) {
+ forceColor = true;
+}
+if ('FORCE_COLOR' in env) {
+ forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
+}
+
+function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+}
+
+function supportsColor(stream) {
+ if (forceColor === false) {
+ return 0;
+ }
+
+ if (hasFlag('color=16m') ||
+ hasFlag('color=full') ||
+ hasFlag('color=truecolor')) {
+ return 3;
+ }
+
+ if (hasFlag('color=256')) {
+ return 2;
+ }
+
+ if (stream && !stream.isTTY && forceColor !== true) {
+ return 0;
+ }
+
+ const min = forceColor ? 1 : 0;
+
+ if (process.platform === 'win32') {
+ // Node.js 7.5.0 is the first version of Node.js to include a patch to
+ // libuv that enables 256 color output on Windows. Anything earlier and it
+ // won't work. However, here we target Node.js 8 at minimum as it is an LTS
+ // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
+ // release that supports 256 colors. Windows 10 build 14931 is the first release
+ // that supports 16m/TrueColor.
+ const osRelease = os.release().split('.');
+ if (
+ Number(process.versions.node.split('.')[0]) >= 8 &&
+ Number(osRelease[0]) >= 10 &&
+ Number(osRelease[2]) >= 10586
+ ) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+
+ return 1;
+ }
+
+ if ('CI' in env) {
+ if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
+ return 1;
+ }
+
+ return min;
+ }
+
+ if ('TEAMCITY_VERSION' in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
+ }
+
+ if (env.COLORTERM === 'truecolor') {
+ return 3;
+ }
+
+ if ('TERM_PROGRAM' in env) {
+ const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
+
+ switch (env.TERM_PROGRAM) {
+ case 'iTerm.app':
+ return version >= 3 ? 3 : 2;
+ case 'Apple_Terminal':
+ return 2;
+ // No default
+ }
+ }
+
+ if (/-256(color)?$/i.test(env.TERM)) {
+ return 2;
+ }
+
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
+ return 1;
+ }
+
+ if ('COLORTERM' in env) {
+ return 1;
+ }
+
+ if (env.TERM === 'dumb') {
+ return min;
+ }
+
+ return min;
+}
+
+function getSupportLevel(stream) {
+ const level = supportsColor(stream);
+ return translateLevel(level);
+}
+
+module.exports = {
+ supportsColor: getSupportLevel,
+ stdout: getSupportLevel(process.stdout),
+ stderr: getSupportLevel(process.stderr)
+};
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/license b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/package.json
new file mode 100644
index 0000000000..ad199f5cdb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/package.json
@@ -0,0 +1,53 @@
+{
+ "name": "supports-color",
+ "version": "5.5.0",
+ "description": "Detect whether a terminal supports color",
+ "license": "MIT",
+ "repository": "chalk/supports-color",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js",
+ "browser.js"
+ ],
+ "keywords": [
+ "color",
+ "colour",
+ "colors",
+ "terminal",
+ "console",
+ "cli",
+ "ansi",
+ "styles",
+ "tty",
+ "rgb",
+ "256",
+ "shell",
+ "xterm",
+ "command-line",
+ "support",
+ "supports",
+ "capability",
+ "detect",
+ "truecolor",
+ "16m"
+ ],
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "devDependencies": {
+ "ava": "^0.25.0",
+ "import-fresh": "^2.0.0",
+ "xo": "^0.20.0"
+ },
+ "browser": "browser.js"
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/readme.md b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/readme.md
new file mode 100644
index 0000000000..f6e4019573
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/node_modules/supports-color/readme.md
@@ -0,0 +1,66 @@
+# supports-color [![Build Status](https://travis-ci.org/chalk/supports-color.svg?branch=master)](https://travis-ci.org/chalk/supports-color)
+
+> Detect whether a terminal supports color
+
+
+## Install
+
+```
+$ npm install supports-color
+```
+
+
+## Usage
+
+```js
+const supportsColor = require('supports-color');
+
+if (supportsColor.stdout) {
+ console.log('Terminal stdout supports color');
+}
+
+if (supportsColor.stdout.has256) {
+ console.log('Terminal stdout supports 256 colors');
+}
+
+if (supportsColor.stderr.has16m) {
+ console.log('Terminal stderr supports 16 million colors (truecolor)');
+}
+```
+
+
+## API
+
+Returns an `Object` with a `stdout` and `stderr` property for testing either streams. Each property is an `Object`, or `false` if color is not supported.
+
+The `stdout`/`stderr` objects specifies a level of support for color through a `.level` property and a corresponding flag:
+
+- `.level = 1` and `.hasBasic = true`: Basic color support (16 colors)
+- `.level = 2` and `.has256 = true`: 256 color support
+- `.level = 3` and `.has16m = true`: Truecolor support (16 million colors)
+
+
+## Info
+
+It obeys the `--color` and `--no-color` CLI flags.
+
+Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add the environment variable `FORCE_COLOR=1` to forcefully enable color or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks.
+
+Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively.
+
+
+## Related
+
+- [supports-color-cli](https://github.com/chalk/supports-color-cli) - CLI for this module
+- [chalk](https://github.com/chalk/chalk) - Terminal string styling done right
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/@babel/highlight/package.json b/tools/node_modules/eslint/node_modules/@babel/highlight/package.json
new file mode 100644
index 0000000000..a18f453f11
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/highlight/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@babel/highlight",
+ "version": "7.16.0",
+ "description": "Syntax highlight JavaScript strings for output in terminals.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-highlight",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-highlight"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ },
+ "devDependencies": {
+ "@types/chalk": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/LICENSE b/tools/node_modules/eslint/node_modules/@babel/parser/LICENSE
new file mode 100644
index 0000000000..d4c7fc5838
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/parser/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2012-2014 by various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/README.md b/tools/node_modules/eslint/node_modules/@babel/parser/README.md
new file mode 100644
index 0000000000..513748c370
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/parser/README.md
@@ -0,0 +1,19 @@
+# @babel/parser
+
+> A JavaScript parser
+
+See our website [@babel/parser](https://babeljs.io/docs/en/babel-parser) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20parser%20(babylon)%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/parser
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/parser --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/bin/babel-parser.js b/tools/node_modules/eslint/node_modules/@babel/parser/bin/babel-parser.js
new file mode 100755
index 0000000000..3aca314533
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/parser/bin/babel-parser.js
@@ -0,0 +1,15 @@
+#!/usr/bin/env node
+/* eslint no-var: 0 */
+
+var parser = require("..");
+var fs = require("fs");
+
+var filename = process.argv[2];
+if (!filename) {
+ console.error("no filename specified");
+} else {
+ var file = fs.readFileSync(filename, "utf8");
+ var ast = parser.parse(file);
+
+ console.log(JSON.stringify(ast, null, " "));
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js
new file mode 100644
index 0000000000..281584c463
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js
@@ -0,0 +1,15148 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+const lineBreak = /\r\n?|[\n\u2028\u2029]/;
+const lineBreakG = new RegExp(lineBreak.source, "g");
+function isNewLine(code) {
+ switch (code) {
+ case 10:
+ case 13:
+ case 8232:
+ case 8233:
+ return true;
+
+ default:
+ return false;
+ }
+}
+const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
+const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/y;
+const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y");
+function isWhitespace(code) {
+ switch (code) {
+ case 0x0009:
+ case 0x000b:
+ case 0x000c:
+ case 32:
+ case 160:
+ case 5760:
+ case 0x2000:
+ case 0x2001:
+ case 0x2002:
+ case 0x2003:
+ case 0x2004:
+ case 0x2005:
+ case 0x2006:
+ case 0x2007:
+ case 0x2008:
+ case 0x2009:
+ case 0x200a:
+ case 0x202f:
+ case 0x205f:
+ case 0x3000:
+ case 0xfeff:
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+class Position {
+ constructor(line, col) {
+ this.line = void 0;
+ this.column = void 0;
+ this.line = line;
+ this.column = col;
+ }
+
+}
+class SourceLocation {
+ constructor(start, end) {
+ this.start = void 0;
+ this.end = void 0;
+ this.filename = void 0;
+ this.identifierName = void 0;
+ this.start = start;
+ this.end = end;
+ }
+
+}
+function getLineInfo(input, offset) {
+ let line = 1;
+ let lineStart = 0;
+ let match;
+ lineBreakG.lastIndex = 0;
+
+ while ((match = lineBreakG.exec(input)) && match.index < offset) {
+ line++;
+ lineStart = lineBreakG.lastIndex;
+ }
+
+ return new Position(line, offset - lineStart);
+}
+
+class BaseParser {
+ constructor() {
+ this.sawUnambiguousESM = false;
+ this.ambiguousScriptDifferentAst = false;
+ }
+
+ hasPlugin(name) {
+ return this.plugins.has(name);
+ }
+
+ getPluginOption(plugin, name) {
+ if (this.hasPlugin(plugin)) return this.plugins.get(plugin)[name];
+ }
+
+}
+
+function setTrailingComments(node, comments) {
+ if (node.trailingComments === undefined) {
+ node.trailingComments = comments;
+ } else {
+ node.trailingComments.unshift(...comments);
+ }
+}
+
+function setLeadingComments(node, comments) {
+ if (node.leadingComments === undefined) {
+ node.leadingComments = comments;
+ } else {
+ node.leadingComments.unshift(...comments);
+ }
+}
+
+function setInnerComments(node, comments) {
+ if (node.innerComments === undefined) {
+ node.innerComments = comments;
+ } else {
+ node.innerComments.unshift(...comments);
+ }
+}
+
+function adjustInnerComments(node, elements, commentWS) {
+ let lastElement = null;
+ let i = elements.length;
+
+ while (lastElement === null && i > 0) {
+ lastElement = elements[--i];
+ }
+
+ if (lastElement === null || lastElement.start > commentWS.start) {
+ setInnerComments(node, commentWS.comments);
+ } else {
+ setTrailingComments(lastElement, commentWS.comments);
+ }
+}
+
+class CommentsParser extends BaseParser {
+ addComment(comment) {
+ if (this.filename) comment.loc.filename = this.filename;
+ this.state.comments.push(comment);
+ }
+
+ processComment(node) {
+ const {
+ commentStack
+ } = this.state;
+ const commentStackLength = commentStack.length;
+ if (commentStackLength === 0) return;
+ let i = commentStackLength - 1;
+ const lastCommentWS = commentStack[i];
+
+ if (lastCommentWS.start === node.end) {
+ lastCommentWS.leadingNode = node;
+ i--;
+ }
+
+ const {
+ start: nodeStart
+ } = node;
+
+ for (; i >= 0; i--) {
+ const commentWS = commentStack[i];
+ const commentEnd = commentWS.end;
+
+ if (commentEnd > nodeStart) {
+ commentWS.containingNode = node;
+ this.finalizeComment(commentWS);
+ commentStack.splice(i, 1);
+ } else {
+ if (commentEnd === nodeStart) {
+ commentWS.trailingNode = node;
+ }
+
+ break;
+ }
+ }
+ }
+
+ finalizeComment(commentWS) {
+ const {
+ comments
+ } = commentWS;
+
+ if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {
+ if (commentWS.leadingNode !== null) {
+ setTrailingComments(commentWS.leadingNode, comments);
+ }
+
+ if (commentWS.trailingNode !== null) {
+ setLeadingComments(commentWS.trailingNode, comments);
+ }
+ } else {
+ const {
+ containingNode: node,
+ start: commentStart
+ } = commentWS;
+
+ if (this.input.charCodeAt(commentStart - 1) === 44) {
+ switch (node.type) {
+ case "ObjectExpression":
+ case "ObjectPattern":
+ case "RecordExpression":
+ adjustInnerComments(node, node.properties, commentWS);
+ break;
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ adjustInnerComments(node, node.arguments, commentWS);
+ break;
+
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ case "ArrowFunctionExpression":
+ case "ObjectMethod":
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ adjustInnerComments(node, node.params, commentWS);
+ break;
+
+ case "ArrayExpression":
+ case "ArrayPattern":
+ case "TupleExpression":
+ adjustInnerComments(node, node.elements, commentWS);
+ break;
+
+ case "ExportNamedDeclaration":
+ case "ImportDeclaration":
+ adjustInnerComments(node, node.specifiers, commentWS);
+ break;
+
+ default:
+ {
+ setInnerComments(node, comments);
+ }
+ }
+ } else {
+ setInnerComments(node, comments);
+ }
+ }
+ }
+
+ finalizeRemainingComments() {
+ const {
+ commentStack
+ } = this.state;
+
+ for (let i = commentStack.length - 1; i >= 0; i--) {
+ this.finalizeComment(commentStack[i]);
+ }
+
+ this.state.commentStack = [];
+ }
+
+ resetPreviousNodeTrailingComments(node) {
+ const {
+ commentStack
+ } = this.state;
+ const {
+ length
+ } = commentStack;
+ if (length === 0) return;
+ const commentWS = commentStack[length - 1];
+
+ if (commentWS.leadingNode === node) {
+ commentWS.leadingNode = null;
+ }
+ }
+
+ takeSurroundingComments(node, start, end) {
+ const {
+ commentStack
+ } = this.state;
+ const commentStackLength = commentStack.length;
+ if (commentStackLength === 0) return;
+ let i = commentStackLength - 1;
+
+ for (; i >= 0; i--) {
+ const commentWS = commentStack[i];
+ const commentEnd = commentWS.end;
+ const commentStart = commentWS.start;
+
+ if (commentStart === end) {
+ commentWS.leadingNode = node;
+ } else if (commentEnd === start) {
+ commentWS.trailingNode = node;
+ } else if (commentEnd < start) {
+ break;
+ }
+ }
+ }
+
+}
+
+const ErrorCodes = Object.freeze({
+ SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",
+ SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
+});
+
+const ErrorMessages = makeErrorTemplates({
+ AccessorIsGenerator: "A %0ter cannot be a generator.",
+ ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
+ AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
+ AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
+ AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
+ AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
+ AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
+ AwaitNotInAsyncFunction: "'await' is only allowed within async functions.",
+ BadGetterArity: "A 'get' accesor must not have any formal parameters.",
+ BadSetterArity: "A 'set' accesor must have exactly one formal parameter.",
+ BadSetterRestParameter: "A 'set' accesor function argument must not be a rest parameter.",
+ ConstructorClassField: "Classes may not have a field named 'constructor'.",
+ ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
+ ConstructorIsAccessor: "Class constructor may not be an accessor.",
+ ConstructorIsAsync: "Constructor can't be an async function.",
+ ConstructorIsGenerator: "Constructor can't be a generator.",
+ DeclarationMissingInitializer: "'%0' require an initialization value.",
+ DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax.",
+ DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
+ DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.",
+ DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
+ DecoratorStaticBlock: "Decorators can't be used with a static block.",
+ DeletePrivateField: "Deleting a private field is not allowed.",
+ DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
+ DuplicateConstructor: "Duplicate constructor in the same class.",
+ DuplicateDefaultExport: "Only one default export allowed per module.",
+ DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.",
+ DuplicateProto: "Redefinition of __proto__ property.",
+ DuplicateRegExpFlags: "Duplicate regular expression flag.",
+ ElementAfterRest: "Rest element must be last element.",
+ EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
+ ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '%0' as '%1' } from 'some-module'`?",
+ ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
+ ForInOfLoopInitializer: "'%0' loop variable declaration may not have an initializer.",
+ ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
+ ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
+ GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
+ IllegalBreakContinue: "Unsyntactic %0.",
+ IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
+ IllegalReturn: "'return' outside of function.",
+ ImportBindingIsString: 'A string literal cannot be used as an imported binding.\n- Did you mean `import { "%0" as foo }`?',
+ ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",
+ ImportCallArity: "`import()` requires exactly %0.",
+ ImportCallNotNewExpression: "Cannot use new with import(...).",
+ ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
+ InvalidBigIntLiteral: "Invalid BigIntLiteral.",
+ InvalidCodePoint: "Code point out of bounds.",
+ InvalidDecimal: "Invalid decimal.",
+ InvalidDigit: "Expected number in radix %0.",
+ InvalidEscapeSequence: "Bad character escape sequence.",
+ InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
+ InvalidEscapedReservedWord: "Escape sequence in keyword %0.",
+ InvalidIdentifier: "Invalid identifier %0.",
+ InvalidLhs: "Invalid left-hand side in %0.",
+ InvalidLhsBinding: "Binding invalid left-hand side in %0.",
+ InvalidNumber: "Invalid number.",
+ InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
+ InvalidOrUnexpectedToken: "Unexpected character '%0'.",
+ InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
+ InvalidPrivateFieldResolution: "Private name #%0 is not defined.",
+ InvalidPropertyBindingPattern: "Binding member expression.",
+ InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
+ InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
+ LabelRedeclaration: "Label '%0' is already declared.",
+ LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.",
+ LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
+ MalformedRegExpFlags: "Invalid regular expression flag.",
+ MissingClassName: "A class name is required.",
+ MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
+ MissingSemicolon: "Missing semicolon.",
+ MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
+ MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
+ ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
+ ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
+ ModuleAttributesWithDuplicateKeys: 'Duplicate key "%0" is not allowed in module attributes.',
+ ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found '\\u%0'.",
+ ModuleExportUndefined: "Export '%0' is not defined.",
+ MultipleDefaultsInSwitch: "Multiple default clauses.",
+ NewlineAfterThrow: "Illegal newline after throw.",
+ NoCatchOrFinally: "Missing catch or finally clause.",
+ NumberIdentifier: "Identifier directly after number.",
+ NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
+ ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
+ OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
+ OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
+ OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
+ ParamDupe: "Argument name clash.",
+ PatternHasAccessor: "Object pattern can't contain getter or setter.",
+ PatternHasMethod: "Object pattern can't contain methods.",
+ PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
+ PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
+ PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
+ PipeTopicUnconfiguredToken: 'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.',
+ PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
+ PipeUnparenthesizedBody: "Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.",
+ PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
+ PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
+ PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
+ PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
+ PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
+ PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
+ PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).",
+ PrivateNameRedeclaration: "Duplicate private name #%0.",
+ RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
+ RecordNoProto: "'__proto__' is not allowed in Record expressions.",
+ RestTrailingComma: "Unexpected trailing comma after rest element.",
+ SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
+ StaticPrototype: "Classes may not have static property named prototype.",
+ StrictDelete: "Deleting local variable in strict mode.",
+ StrictEvalArguments: "Assigning to '%0' in strict mode.",
+ StrictEvalArgumentsBinding: "Binding '%0' in strict mode.",
+ StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
+ StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
+ StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
+ StrictWith: "'with' in strict mode.",
+ SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
+ SuperPrivateField: "Private fields can't be accessed on super.",
+ TrailingDecorator: "Decorators must be attached to a class element.",
+ TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
+ TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
+ UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
+ UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
+ UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
+ UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
+ UnexpectedKeyword: "Unexpected keyword '%0'.",
+ UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
+ UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
+ UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
+ UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
+ UnexpectedPrivateField: "Private names can only be used as the name of a class element (i.e. class C { #p = 42; #m() {} } )\n or a property of member expression (i.e. this.#p).",
+ UnexpectedReservedWord: "Unexpected reserved word '%0'.",
+ UnexpectedSuper: "'super' is only allowed in object methods and classes.",
+ UnexpectedToken: "Unexpected token '%0'.",
+ UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
+ UnsupportedBind: "Binding should be performed on object property.",
+ UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
+ UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
+ UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
+ UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.",
+ UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
+ UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
+ UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
+ UnterminatedComment: "Unterminated comment.",
+ UnterminatedRegExp: "Unterminated regular expression.",
+ UnterminatedString: "Unterminated string constant.",
+ UnterminatedTemplate: "Unterminated template.",
+ VarRedeclaration: "Identifier '%0' has already been declared.",
+ YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
+ YieldInParameter: "Yield expression is not allowed in formal parameters.",
+ ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
+}, ErrorCodes.SyntaxError);
+const SourceTypeModuleErrorMessages = makeErrorTemplates({
+ ImportMetaOutsideModule: `import.meta may appear only with 'sourceType: "module"'`,
+ ImportOutsideModule: `'import' and 'export' may appear only with 'sourceType: "module"'`
+}, ErrorCodes.SourceTypeModuleError);
+
+function keepReasonCodeCompat(reasonCode, syntaxPlugin) {
+ {
+ if (syntaxPlugin === "flow" && reasonCode === "PatternIsOptional") {
+ return "OptionalBindingPattern";
+ }
+ }
+ return reasonCode;
+}
+
+function makeErrorTemplates(messages, code, syntaxPlugin) {
+ const templates = {};
+ Object.keys(messages).forEach(reasonCode => {
+ templates[reasonCode] = Object.freeze({
+ code,
+ reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin),
+ template: messages[reasonCode]
+ });
+ });
+ return Object.freeze(templates);
+}
+class ParserError extends CommentsParser {
+ getLocationForPosition(pos) {
+ let loc;
+ if (pos === this.state.start) loc = this.state.startLoc;else if (pos === this.state.lastTokStart) loc = this.state.lastTokStartLoc;else if (pos === this.state.end) loc = this.state.endLoc;else if (pos === this.state.lastTokEnd) loc = this.state.lastTokEndLoc;else loc = getLineInfo(this.input, pos);
+ return loc;
+ }
+
+ raise(pos, {
+ code,
+ reasonCode,
+ template
+ }, ...params) {
+ return this.raiseWithData(pos, {
+ code,
+ reasonCode
+ }, template, ...params);
+ }
+
+ raiseOverwrite(pos, {
+ code,
+ template
+ }, ...params) {
+ const loc = this.getLocationForPosition(pos);
+ const message = template.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;
+
+ if (this.options.errorRecovery) {
+ const errors = this.state.errors;
+
+ for (let i = errors.length - 1; i >= 0; i--) {
+ const error = errors[i];
+
+ if (error.pos === pos) {
+ return Object.assign(error, {
+ message
+ });
+ } else if (error.pos < pos) {
+ break;
+ }
+ }
+ }
+
+ return this._raise({
+ code,
+ loc,
+ pos
+ }, message);
+ }
+
+ raiseWithData(pos, data, errorTemplate, ...params) {
+ const loc = this.getLocationForPosition(pos);
+ const message = errorTemplate.replace(/%(\d+)/g, (_, i) => params[i]) + ` (${loc.line}:${loc.column})`;
+ return this._raise(Object.assign({
+ loc,
+ pos
+ }, data), message);
+ }
+
+ _raise(errorContext, message) {
+ const err = new SyntaxError(message);
+ Object.assign(err, errorContext);
+
+ if (this.options.errorRecovery) {
+ if (!this.isLookahead) this.state.errors.push(err);
+ return err;
+ } else {
+ throw err;
+ }
+ }
+
+}
+
+var estree = (superClass => class extends superClass {
+ parseRegExpLiteral({
+ pattern,
+ flags
+ }) {
+ let regex = null;
+
+ try {
+ regex = new RegExp(pattern, flags);
+ } catch (e) {}
+
+ const node = this.estreeParseLiteral(regex);
+ node.regex = {
+ pattern,
+ flags
+ };
+ return node;
+ }
+
+ parseBigIntLiteral(value) {
+ let bigInt;
+
+ try {
+ bigInt = BigInt(value);
+ } catch (_unused) {
+ bigInt = null;
+ }
+
+ const node = this.estreeParseLiteral(bigInt);
+ node.bigint = String(node.value || value);
+ return node;
+ }
+
+ parseDecimalLiteral(value) {
+ const decimal = null;
+ const node = this.estreeParseLiteral(decimal);
+ node.decimal = String(node.value || value);
+ return node;
+ }
+
+ estreeParseLiteral(value) {
+ return this.parseLiteral(value, "Literal");
+ }
+
+ parseStringLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+
+ parseNumericLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+
+ parseNullLiteral() {
+ return this.estreeParseLiteral(null);
+ }
+
+ parseBooleanLiteral(value) {
+ return this.estreeParseLiteral(value);
+ }
+
+ directiveToStmt(directive) {
+ const directiveLiteral = directive.value;
+ const stmt = this.startNodeAt(directive.start, directive.loc.start);
+ const expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);
+ expression.value = directiveLiteral.extra.expressionValue;
+ expression.raw = directiveLiteral.extra.raw;
+ stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.end, directiveLiteral.loc.end);
+ stmt.directive = directiveLiteral.extra.raw.slice(1, -1);
+ return this.finishNodeAt(stmt, "ExpressionStatement", directive.end, directive.loc.end);
+ }
+
+ initFunction(node, isAsync) {
+ super.initFunction(node, isAsync);
+ node.expression = false;
+ }
+
+ checkDeclaration(node) {
+ if (node != null && this.isObjectProperty(node)) {
+ this.checkDeclaration(node.value);
+ } else {
+ super.checkDeclaration(node);
+ }
+ }
+
+ getObjectOrClassMethodParams(method) {
+ return method.value.params;
+ }
+
+ isValidDirective(stmt) {
+ var _stmt$expression$extr;
+
+ return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
+ }
+
+ parseBlockBody(node, ...args) {
+ super.parseBlockBody(node, ...args);
+ const directiveStatements = node.directives.map(d => this.directiveToStmt(d));
+ node.body = directiveStatements.concat(node.body);
+ delete node.directives;
+ }
+
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);
+
+ if (method.typeParameters) {
+ method.value.typeParameters = method.typeParameters;
+ delete method.typeParameters;
+ }
+
+ classBody.body.push(method);
+ }
+
+ parsePrivateName() {
+ const node = super.parsePrivateName();
+ {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return node;
+ }
+ }
+ return this.convertPrivateNameToPrivateIdentifier(node);
+ }
+
+ convertPrivateNameToPrivateIdentifier(node) {
+ const name = super.getPrivateNameSV(node);
+ node = node;
+ delete node.id;
+ node.name = name;
+ node.type = "PrivateIdentifier";
+ return node;
+ }
+
+ isPrivateName(node) {
+ {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return super.isPrivateName(node);
+ }
+ }
+ return node.type === "PrivateIdentifier";
+ }
+
+ getPrivateNameSV(node) {
+ {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return super.getPrivateNameSV(node);
+ }
+ }
+ return node.name;
+ }
+
+ parseLiteral(value, type) {
+ const node = super.parseLiteral(value, type);
+ node.raw = node.extra.raw;
+ delete node.extra;
+ return node;
+ }
+
+ parseFunctionBody(node, allowExpression, isMethod = false) {
+ super.parseFunctionBody(node, allowExpression, isMethod);
+ node.expression = node.body.type !== "BlockStatement";
+ }
+
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
+ let funcNode = this.startNode();
+ funcNode.kind = node.kind;
+ funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
+ funcNode.type = "FunctionExpression";
+ delete funcNode.kind;
+ node.value = funcNode;
+
+ if (type === "ClassPrivateMethod") {
+ node.computed = false;
+ }
+
+ type = "MethodDefinition";
+ return this.finishNode(node, type);
+ }
+
+ parseClassProperty(...args) {
+ const propertyNode = super.parseClassProperty(...args);
+ {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return propertyNode;
+ }
+ }
+ propertyNode.type = "PropertyDefinition";
+ return propertyNode;
+ }
+
+ parseClassPrivateProperty(...args) {
+ const propertyNode = super.parseClassPrivateProperty(...args);
+ {
+ if (!this.getPluginOption("estree", "classFeatures")) {
+ return propertyNode;
+ }
+ }
+ propertyNode.type = "PropertyDefinition";
+ propertyNode.computed = false;
+ return propertyNode;
+ }
+
+ parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
+ const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);
+
+ if (node) {
+ node.type = "Property";
+ if (node.kind === "method") node.kind = "init";
+ node.shorthand = false;
+ }
+
+ return node;
+ }
+
+ parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {
+ const node = super.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);
+
+ if (node) {
+ node.kind = "init";
+ node.type = "Property";
+ }
+
+ return node;
+ }
+
+ isAssignable(node, isBinding) {
+ if (node != null && this.isObjectProperty(node)) {
+ return this.isAssignable(node.value, isBinding);
+ }
+
+ return super.isAssignable(node, isBinding);
+ }
+
+ toAssignable(node, isLHS = false) {
+ if (node != null && this.isObjectProperty(node)) {
+ this.toAssignable(node.value, isLHS);
+ return node;
+ }
+
+ return super.toAssignable(node, isLHS);
+ }
+
+ toAssignableObjectExpressionProp(prop, ...args) {
+ if (prop.kind === "get" || prop.kind === "set") {
+ this.raise(prop.key.start, ErrorMessages.PatternHasAccessor);
+ } else if (prop.method) {
+ this.raise(prop.key.start, ErrorMessages.PatternHasMethod);
+ } else {
+ super.toAssignableObjectExpressionProp(prop, ...args);
+ }
+ }
+
+ finishCallExpression(node, optional) {
+ super.finishCallExpression(node, optional);
+
+ if (node.callee.type === "Import") {
+ node.type = "ImportExpression";
+ node.source = node.arguments[0];
+
+ if (this.hasPlugin("importAssertions")) {
+ var _node$arguments$;
+
+ node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;
+ }
+
+ delete node.arguments;
+ delete node.callee;
+ }
+
+ return node;
+ }
+
+ toReferencedArguments(node) {
+ if (node.type === "ImportExpression") {
+ return;
+ }
+
+ super.toReferencedArguments(node);
+ }
+
+ parseExport(node) {
+ super.parseExport(node);
+
+ switch (node.type) {
+ case "ExportAllDeclaration":
+ node.exported = null;
+ break;
+
+ case "ExportNamedDeclaration":
+ if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
+ node.type = "ExportAllDeclaration";
+ node.exported = node.specifiers[0].exported;
+ delete node.specifiers;
+ }
+
+ break;
+ }
+
+ return node;
+ }
+
+ parseSubscript(base, startPos, startLoc, noCalls, state) {
+ const node = super.parseSubscript(base, startPos, startLoc, noCalls, state);
+
+ if (state.optionalChainMember) {
+ if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {
+ node.type = node.type.substring(8);
+ }
+
+ if (state.stop) {
+ const chain = this.startNodeAtNode(node);
+ chain.expression = node;
+ return this.finishNode(chain, "ChainExpression");
+ }
+ } else if (node.type === "MemberExpression" || node.type === "CallExpression") {
+ node.optional = false;
+ }
+
+ return node;
+ }
+
+ hasPropertyAsPrivateName(node) {
+ if (node.type === "ChainExpression") {
+ node = node.expression;
+ }
+
+ return super.hasPropertyAsPrivateName(node);
+ }
+
+ isOptionalChain(node) {
+ return node.type === "ChainExpression";
+ }
+
+ isObjectProperty(node) {
+ return node.type === "Property" && node.kind === "init" && !node.method;
+ }
+
+ isObjectMethod(node) {
+ return node.method || node.kind === "get" || node.kind === "set";
+ }
+
+});
+
+class TokContext {
+ constructor(token, preserveSpace) {
+ this.token = void 0;
+ this.preserveSpace = void 0;
+ this.token = token;
+ this.preserveSpace = !!preserveSpace;
+ }
+
+}
+const types = {
+ brace: new TokContext("{"),
+ template: new TokContext("`", true)
+};
+
+const beforeExpr = true;
+const startsExpr = true;
+const isLoop = true;
+const isAssign = true;
+const prefix = true;
+const postfix = true;
+class ExportedTokenType {
+ constructor(label, conf = {}) {
+ this.label = void 0;
+ this.keyword = void 0;
+ this.beforeExpr = void 0;
+ this.startsExpr = void 0;
+ this.rightAssociative = void 0;
+ this.isLoop = void 0;
+ this.isAssign = void 0;
+ this.prefix = void 0;
+ this.postfix = void 0;
+ this.binop = void 0;
+ this.label = label;
+ this.keyword = conf.keyword;
+ this.beforeExpr = !!conf.beforeExpr;
+ this.startsExpr = !!conf.startsExpr;
+ this.rightAssociative = !!conf.rightAssociative;
+ this.isLoop = !!conf.isLoop;
+ this.isAssign = !!conf.isAssign;
+ this.prefix = !!conf.prefix;
+ this.postfix = !!conf.postfix;
+ this.binop = conf.binop != null ? conf.binop : null;
+ {
+ this.updateContext = null;
+ }
+ }
+
+}
+const keywords$1 = new Map();
+
+function createKeyword(name, options = {}) {
+ options.keyword = name;
+ const token = createToken(name, options);
+ keywords$1.set(name, token);
+ return token;
+}
+
+function createBinop(name, binop) {
+ return createToken(name, {
+ beforeExpr,
+ binop
+ });
+}
+
+let tokenTypeCounter = -1;
+const tokenTypes = [];
+const tokenLabels = [];
+const tokenBinops = [];
+const tokenBeforeExprs = [];
+const tokenStartsExprs = [];
+const tokenPrefixes = [];
+
+function createToken(name, options = {}) {
+ var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;
+
+ ++tokenTypeCounter;
+ tokenLabels.push(name);
+ tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);
+ tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);
+ tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);
+ tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);
+ tokenTypes.push(new ExportedTokenType(name, options));
+ return tokenTypeCounter;
+}
+
+function createKeywordLike(name, options = {}) {
+ var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;
+
+ ++tokenTypeCounter;
+ keywords$1.set(name, tokenTypeCounter);
+ tokenLabels.push(name);
+ tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);
+ tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);
+ tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);
+ tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);
+ tokenTypes.push(new ExportedTokenType("name", options));
+ return tokenTypeCounter;
+}
+
+const tt = {
+ bracketL: createToken("[", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketHashL: createToken("#[", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketBarL: createToken("[|", {
+ beforeExpr,
+ startsExpr
+ }),
+ bracketR: createToken("]"),
+ bracketBarR: createToken("|]"),
+ braceL: createToken("{", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceBarL: createToken("{|", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceHashL: createToken("#{", {
+ beforeExpr,
+ startsExpr
+ }),
+ braceR: createToken("}", {
+ beforeExpr
+ }),
+ braceBarR: createToken("|}"),
+ parenL: createToken("(", {
+ beforeExpr,
+ startsExpr
+ }),
+ parenR: createToken(")"),
+ comma: createToken(",", {
+ beforeExpr
+ }),
+ semi: createToken(";", {
+ beforeExpr
+ }),
+ colon: createToken(":", {
+ beforeExpr
+ }),
+ doubleColon: createToken("::", {
+ beforeExpr
+ }),
+ dot: createToken("."),
+ question: createToken("?", {
+ beforeExpr
+ }),
+ questionDot: createToken("?."),
+ arrow: createToken("=>", {
+ beforeExpr
+ }),
+ template: createToken("template"),
+ ellipsis: createToken("...", {
+ beforeExpr
+ }),
+ backQuote: createToken("`", {
+ startsExpr
+ }),
+ dollarBraceL: createToken("${", {
+ beforeExpr,
+ startsExpr
+ }),
+ at: createToken("@"),
+ hash: createToken("#", {
+ startsExpr
+ }),
+ interpreterDirective: createToken("#!..."),
+ eq: createToken("=", {
+ beforeExpr,
+ isAssign
+ }),
+ assign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ slashAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ xorAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ moduloAssign: createToken("_=", {
+ beforeExpr,
+ isAssign
+ }),
+ incDec: createToken("++/--", {
+ prefix,
+ postfix,
+ startsExpr
+ }),
+ bang: createToken("!", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ tilde: createToken("~", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ pipeline: createBinop("|>", 0),
+ nullishCoalescing: createBinop("??", 1),
+ logicalOR: createBinop("||", 1),
+ logicalAND: createBinop("&&", 2),
+ bitwiseOR: createBinop("|", 3),
+ bitwiseXOR: createBinop("^", 4),
+ bitwiseAND: createBinop("&", 5),
+ equality: createBinop("==/!=/===/!==", 6),
+ lt: createBinop("</>/<=/>=", 7),
+ gt: createBinop("</>/<=/>=", 7),
+ relational: createBinop("</>/<=/>=", 7),
+ bitShift: createBinop("<</>>/>>>", 8),
+ plusMin: createToken("+/-", {
+ beforeExpr,
+ binop: 9,
+ prefix,
+ startsExpr
+ }),
+ modulo: createToken("%", {
+ binop: 10,
+ startsExpr
+ }),
+ star: createToken("*", {
+ binop: 10
+ }),
+ slash: createBinop("/", 10),
+ exponent: createToken("**", {
+ beforeExpr,
+ binop: 11,
+ rightAssociative: true
+ }),
+ _in: createKeyword("in", {
+ beforeExpr,
+ binop: 7
+ }),
+ _instanceof: createKeyword("instanceof", {
+ beforeExpr,
+ binop: 7
+ }),
+ _break: createKeyword("break"),
+ _case: createKeyword("case", {
+ beforeExpr
+ }),
+ _catch: createKeyword("catch"),
+ _continue: createKeyword("continue"),
+ _debugger: createKeyword("debugger"),
+ _default: createKeyword("default", {
+ beforeExpr
+ }),
+ _else: createKeyword("else", {
+ beforeExpr
+ }),
+ _finally: createKeyword("finally"),
+ _function: createKeyword("function", {
+ startsExpr
+ }),
+ _if: createKeyword("if"),
+ _return: createKeyword("return", {
+ beforeExpr
+ }),
+ _switch: createKeyword("switch"),
+ _throw: createKeyword("throw", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _try: createKeyword("try"),
+ _var: createKeyword("var"),
+ _const: createKeyword("const"),
+ _with: createKeyword("with"),
+ _new: createKeyword("new", {
+ beforeExpr,
+ startsExpr
+ }),
+ _this: createKeyword("this", {
+ startsExpr
+ }),
+ _super: createKeyword("super", {
+ startsExpr
+ }),
+ _class: createKeyword("class", {
+ startsExpr
+ }),
+ _extends: createKeyword("extends", {
+ beforeExpr
+ }),
+ _export: createKeyword("export"),
+ _import: createKeyword("import", {
+ startsExpr
+ }),
+ _null: createKeyword("null", {
+ startsExpr
+ }),
+ _true: createKeyword("true", {
+ startsExpr
+ }),
+ _false: createKeyword("false", {
+ startsExpr
+ }),
+ _typeof: createKeyword("typeof", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _void: createKeyword("void", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _delete: createKeyword("delete", {
+ beforeExpr,
+ prefix,
+ startsExpr
+ }),
+ _do: createKeyword("do", {
+ isLoop,
+ beforeExpr
+ }),
+ _for: createKeyword("for", {
+ isLoop
+ }),
+ _while: createKeyword("while", {
+ isLoop
+ }),
+ _as: createKeywordLike("as", {
+ startsExpr
+ }),
+ _assert: createKeywordLike("assert", {
+ startsExpr
+ }),
+ _async: createKeywordLike("async", {
+ startsExpr
+ }),
+ _await: createKeywordLike("await", {
+ startsExpr
+ }),
+ _from: createKeywordLike("from", {
+ startsExpr
+ }),
+ _get: createKeywordLike("get", {
+ startsExpr
+ }),
+ _let: createKeywordLike("let", {
+ startsExpr
+ }),
+ _meta: createKeywordLike("meta", {
+ startsExpr
+ }),
+ _of: createKeywordLike("of", {
+ startsExpr
+ }),
+ _sent: createKeywordLike("sent", {
+ startsExpr
+ }),
+ _set: createKeywordLike("set", {
+ startsExpr
+ }),
+ _static: createKeywordLike("static", {
+ startsExpr
+ }),
+ _yield: createKeywordLike("yield", {
+ startsExpr
+ }),
+ _asserts: createKeywordLike("asserts", {
+ startsExpr
+ }),
+ _checks: createKeywordLike("checks", {
+ startsExpr
+ }),
+ _exports: createKeywordLike("exports", {
+ startsExpr
+ }),
+ _global: createKeywordLike("global", {
+ startsExpr
+ }),
+ _implements: createKeywordLike("implements", {
+ startsExpr
+ }),
+ _intrinsic: createKeywordLike("intrinsic", {
+ startsExpr
+ }),
+ _infer: createKeywordLike("infer", {
+ startsExpr
+ }),
+ _is: createKeywordLike("is", {
+ startsExpr
+ }),
+ _mixins: createKeywordLike("mixins", {
+ startsExpr
+ }),
+ _proto: createKeywordLike("proto", {
+ startsExpr
+ }),
+ _require: createKeywordLike("require", {
+ startsExpr
+ }),
+ _keyof: createKeywordLike("keyof", {
+ startsExpr
+ }),
+ _readonly: createKeywordLike("readonly", {
+ startsExpr
+ }),
+ _unique: createKeywordLike("unique", {
+ startsExpr
+ }),
+ _abstract: createKeywordLike("abstract", {
+ startsExpr
+ }),
+ _declare: createKeywordLike("declare", {
+ startsExpr
+ }),
+ _enum: createKeywordLike("enum", {
+ startsExpr
+ }),
+ _module: createKeywordLike("module", {
+ startsExpr
+ }),
+ _namespace: createKeywordLike("namespace", {
+ startsExpr
+ }),
+ _interface: createKeywordLike("interface", {
+ startsExpr
+ }),
+ _type: createKeywordLike("type", {
+ startsExpr
+ }),
+ _opaque: createKeywordLike("opaque", {
+ startsExpr
+ }),
+ name: createToken("name", {
+ startsExpr
+ }),
+ string: createToken("string", {
+ startsExpr
+ }),
+ num: createToken("num", {
+ startsExpr
+ }),
+ bigint: createToken("bigint", {
+ startsExpr
+ }),
+ decimal: createToken("decimal", {
+ startsExpr
+ }),
+ regexp: createToken("regexp", {
+ startsExpr
+ }),
+ privateName: createToken("#name", {
+ startsExpr
+ }),
+ eof: createToken("eof"),
+ jsxName: createToken("jsxName"),
+ jsxText: createToken("jsxText", {
+ beforeExpr: true
+ }),
+ jsxTagStart: createToken("jsxTagStart", {
+ startsExpr: true
+ }),
+ jsxTagEnd: createToken("jsxTagEnd"),
+ placeholder: createToken("%%", {
+ startsExpr: true
+ })
+};
+function tokenIsIdentifier(token) {
+ return token >= 87 && token <= 122;
+}
+function tokenKeywordOrIdentifierIsKeyword(token) {
+ return token <= 86;
+}
+function tokenIsKeywordOrIdentifier(token) {
+ return token >= 52 && token <= 122;
+}
+function tokenIsLiteralPropertyName(token) {
+ return token >= 52 && token <= 126;
+}
+function tokenComesBeforeExpression(token) {
+ return tokenBeforeExprs[token];
+}
+function tokenCanStartExpression(token) {
+ return tokenStartsExprs[token];
+}
+function tokenIsAssignment(token) {
+ return token >= 27 && token <= 31;
+}
+function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
+ return token >= 119 && token <= 121;
+}
+function tokenIsLoop(token) {
+ return token >= 84 && token <= 86;
+}
+function tokenIsKeyword(token) {
+ return token >= 52 && token <= 86;
+}
+function tokenIsOperator(token) {
+ return token >= 35 && token <= 53;
+}
+function tokenIsPostfix(token) {
+ return token === 32;
+}
+function tokenIsPrefix(token) {
+ return tokenPrefixes[token];
+}
+function tokenIsTSTypeOperator(token) {
+ return token >= 111 && token <= 113;
+}
+function tokenIsTSDeclarationStart(token) {
+ return token >= 114 && token <= 120;
+}
+function tokenLabelName(token) {
+ return tokenLabels[token];
+}
+function tokenOperatorPrecedence(token) {
+ return tokenBinops[token];
+}
+function tokenIsRightAssociative(token) {
+ return token === 51;
+}
+function getExportedToken(token) {
+ return tokenTypes[token];
+}
+function isTokenType(obj) {
+ return typeof obj === "number";
+}
+{
+ tokenTypes[8].updateContext = context => {
+ context.pop();
+ };
+
+ tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {
+ context.push(types.brace);
+ };
+
+ tokenTypes[22].updateContext = context => {
+ if (context[context.length - 1] === types.template) {
+ context.pop();
+ } else {
+ context.push(types.template);
+ }
+ };
+
+ tokenTypes[132].updateContext = context => {
+ context.push(types.j_expr, types.j_oTag);
+ };
+}
+
+let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
+let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
+const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
+const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
+nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
+const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 85, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 190, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1070, 4050, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 46, 2, 18, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 482, 44, 11, 6, 17, 0, 322, 29, 19, 43, 1269, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4152, 8, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938];
+const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 154, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 161, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 19306, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 262, 6, 10, 9, 357, 0, 62, 13, 1495, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
+
+function isInAstralSet(code, set) {
+ let pos = 0x10000;
+
+ for (let i = 0, length = set.length; i < length; i += 2) {
+ pos += set[i];
+ if (pos > code) return false;
+ pos += set[i + 1];
+ if (pos >= code) return true;
+ }
+
+ return false;
+}
+
+function isIdentifierStart(code) {
+ if (code < 65) return code === 36;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes);
+}
+function isIdentifierChar(code) {
+ if (code < 48) return code === 36;
+ if (code < 58) return true;
+ if (code < 65) return false;
+ if (code <= 90) return true;
+ if (code < 97) return code === 95;
+ if (code <= 122) return true;
+
+ if (code <= 0xffff) {
+ return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
+ }
+
+ return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
+}
+
+const reservedWords = {
+ keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
+ strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
+ strictBind: ["eval", "arguments"]
+};
+const keywords = new Set(reservedWords.keyword);
+const reservedWordsStrictSet = new Set(reservedWords.strict);
+const reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
+function isReservedWord(word, inModule) {
+ return inModule && word === "await" || word === "enum";
+}
+function isStrictReservedWord(word, inModule) {
+ return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
+}
+function isStrictBindOnlyReservedWord(word) {
+ return reservedWordsStrictBindSet.has(word);
+}
+function isStrictBindReservedWord(word, inModule) {
+ return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
+}
+function isKeyword(word) {
+ return keywords.has(word);
+}
+
+function isIteratorStart(current, next) {
+ return current === 64 && next === 64;
+}
+const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]);
+function canBeReservedWord(word) {
+ return reservedWordLikeSet.has(word);
+}
+
+const SCOPE_OTHER = 0b000000000,
+ SCOPE_PROGRAM = 0b000000001,
+ SCOPE_FUNCTION = 0b000000010,
+ SCOPE_ARROW = 0b000000100,
+ SCOPE_SIMPLE_CATCH = 0b000001000,
+ SCOPE_SUPER = 0b000010000,
+ SCOPE_DIRECT_SUPER = 0b000100000,
+ SCOPE_CLASS = 0b001000000,
+ SCOPE_STATIC_BLOCK = 0b010000000,
+ SCOPE_TS_MODULE = 0b100000000,
+ SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_TS_MODULE;
+const BIND_KIND_VALUE = 0b000000000001,
+ BIND_KIND_TYPE = 0b000000000010,
+ BIND_SCOPE_VAR = 0b000000000100,
+ BIND_SCOPE_LEXICAL = 0b000000001000,
+ BIND_SCOPE_FUNCTION = 0b000000010000,
+ BIND_FLAGS_NONE = 0b000001000000,
+ BIND_FLAGS_CLASS = 0b000010000000,
+ BIND_FLAGS_TS_ENUM = 0b000100000000,
+ BIND_FLAGS_TS_CONST_ENUM = 0b001000000000,
+ BIND_FLAGS_TS_EXPORT_ONLY = 0b010000000000,
+ BIND_FLAGS_FLOW_DECLARE_FN = 0b100000000000;
+const BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS,
+ BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0,
+ BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0,
+ BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0,
+ BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS,
+ BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0,
+ BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM,
+ BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,
+ BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE,
+ BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE,
+ BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,
+ BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,
+ BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;
+const CLASS_ELEMENT_FLAG_STATIC = 0b100,
+ CLASS_ELEMENT_KIND_GETTER = 0b010,
+ CLASS_ELEMENT_KIND_SETTER = 0b001,
+ CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;
+const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,
+ CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,
+ CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,
+ CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,
+ CLASS_ELEMENT_OTHER = 0;
+
+class Scope {
+ constructor(flags) {
+ this.var = new Set();
+ this.lexical = new Set();
+ this.functions = new Set();
+ this.flags = flags;
+ }
+
+}
+class ScopeHandler {
+ constructor(raise, inModule) {
+ this.scopeStack = [];
+ this.undefinedExports = new Map();
+ this.undefinedPrivateNames = new Map();
+ this.raise = raise;
+ this.inModule = inModule;
+ }
+
+ get inFunction() {
+ return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;
+ }
+
+ get allowSuper() {
+ return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;
+ }
+
+ get allowDirectSuper() {
+ return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;
+ }
+
+ get inClass() {
+ return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;
+ }
+
+ get inClassAndNotInNonArrowFunction() {
+ const flags = this.currentThisScopeFlags();
+ return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;
+ }
+
+ get inStaticBlock() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+
+ if (flags & SCOPE_STATIC_BLOCK) {
+ return true;
+ }
+
+ if (flags & (SCOPE_VAR | SCOPE_CLASS)) {
+ return false;
+ }
+ }
+ }
+
+ get inNonArrowFunction() {
+ return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;
+ }
+
+ get treatFunctionsAsVar() {
+ return this.treatFunctionsAsVarInScope(this.currentScope());
+ }
+
+ createScope(flags) {
+ return new Scope(flags);
+ }
+
+ enter(flags) {
+ this.scopeStack.push(this.createScope(flags));
+ }
+
+ exit() {
+ this.scopeStack.pop();
+ }
+
+ treatFunctionsAsVarInScope(scope) {
+ return !!(scope.flags & SCOPE_FUNCTION || !this.inModule && scope.flags & SCOPE_PROGRAM);
+ }
+
+ declareName(name, bindingType, pos) {
+ let scope = this.currentScope();
+
+ if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {
+ this.checkRedeclarationInScope(scope, name, bindingType, pos);
+
+ if (bindingType & BIND_SCOPE_FUNCTION) {
+ scope.functions.add(name);
+ } else {
+ scope.lexical.add(name);
+ }
+
+ if (bindingType & BIND_SCOPE_LEXICAL) {
+ this.maybeExportDefined(scope, name);
+ }
+ } else if (bindingType & BIND_SCOPE_VAR) {
+ for (let i = this.scopeStack.length - 1; i >= 0; --i) {
+ scope = this.scopeStack[i];
+ this.checkRedeclarationInScope(scope, name, bindingType, pos);
+ scope.var.add(name);
+ this.maybeExportDefined(scope, name);
+ if (scope.flags & SCOPE_VAR) break;
+ }
+ }
+
+ if (this.inModule && scope.flags & SCOPE_PROGRAM) {
+ this.undefinedExports.delete(name);
+ }
+ }
+
+ maybeExportDefined(scope, name) {
+ if (this.inModule && scope.flags & SCOPE_PROGRAM) {
+ this.undefinedExports.delete(name);
+ }
+ }
+
+ checkRedeclarationInScope(scope, name, bindingType, pos) {
+ if (this.isRedeclaredInScope(scope, name, bindingType)) {
+ this.raise(pos, ErrorMessages.VarRedeclaration, name);
+ }
+ }
+
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (!(bindingType & BIND_KIND_VALUE)) return false;
+
+ if (bindingType & BIND_SCOPE_LEXICAL) {
+ return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name);
+ }
+
+ if (bindingType & BIND_SCOPE_FUNCTION) {
+ return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name);
+ }
+
+ return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name);
+ }
+
+ checkLocalExport(id) {
+ const {
+ name
+ } = id;
+ const topLevelScope = this.scopeStack[0];
+
+ if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) {
+ this.undefinedExports.set(name, id.start);
+ }
+ }
+
+ currentScope() {
+ return this.scopeStack[this.scopeStack.length - 1];
+ }
+
+ currentVarScopeFlags() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+
+ if (flags & SCOPE_VAR) {
+ return flags;
+ }
+ }
+ }
+
+ currentThisScopeFlags() {
+ for (let i = this.scopeStack.length - 1;; i--) {
+ const {
+ flags
+ } = this.scopeStack[i];
+
+ if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {
+ return flags;
+ }
+ }
+ }
+
+}
+
+class FlowScope extends Scope {
+ constructor(...args) {
+ super(...args);
+ this.declareFunctions = new Set();
+ }
+
+}
+
+class FlowScopeHandler extends ScopeHandler {
+ createScope(flags) {
+ return new FlowScope(flags);
+ }
+
+ declareName(name, bindingType, pos) {
+ const scope = this.currentScope();
+
+ if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {
+ this.checkRedeclarationInScope(scope, name, bindingType, pos);
+ this.maybeExportDefined(scope, name);
+ scope.declareFunctions.add(name);
+ return;
+ }
+
+ super.declareName(...arguments);
+ }
+
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (super.isRedeclaredInScope(...arguments)) return true;
+
+ if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {
+ return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name));
+ }
+
+ return false;
+ }
+
+ checkLocalExport(id) {
+ if (!this.scopeStack[0].declareFunctions.has(id.name)) {
+ super.checkLocalExport(id);
+ }
+ }
+
+}
+
+class State {
+ constructor() {
+ this.strict = void 0;
+ this.curLine = void 0;
+ this.lineStart = void 0;
+ this.startLoc = void 0;
+ this.endLoc = void 0;
+ this.errors = [];
+ this.potentialArrowAt = -1;
+ this.noArrowAt = [];
+ this.noArrowParamsConversionAt = [];
+ this.maybeInArrowParameters = false;
+ this.inType = false;
+ this.noAnonFunctionType = false;
+ this.hasFlowComment = false;
+ this.isAmbientContext = false;
+ this.inAbstractClass = false;
+ this.topicContext = {
+ maxNumOfResolvableTopics: 0,
+ maxTopicIndex: null
+ };
+ this.soloAwait = false;
+ this.inFSharpPipelineDirectBody = false;
+ this.labels = [];
+ this.decoratorStack = [[]];
+ this.comments = [];
+ this.commentStack = [];
+ this.pos = 0;
+ this.type = 129;
+ this.value = null;
+ this.start = 0;
+ this.end = 0;
+ this.lastTokEndLoc = null;
+ this.lastTokStartLoc = null;
+ this.lastTokStart = 0;
+ this.lastTokEnd = 0;
+ this.context = [types.brace];
+ this.canStartJSXElement = true;
+ this.containsEsc = false;
+ this.strictErrors = new Map();
+ this.tokensLength = 0;
+ }
+
+ init({
+ strictMode,
+ sourceType,
+ startLine,
+ startColumn
+ }) {
+ this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module";
+ this.curLine = startLine;
+ this.lineStart = -startColumn;
+ this.startLoc = this.endLoc = new Position(startLine, startColumn);
+ }
+
+ curPosition() {
+ return new Position(this.curLine, this.pos - this.lineStart);
+ }
+
+ clone(skipArrays) {
+ const state = new State();
+ const keys = Object.keys(this);
+
+ for (let i = 0, length = keys.length; i < length; i++) {
+ const key = keys[i];
+ let val = this[key];
+
+ if (!skipArrays && Array.isArray(val)) {
+ val = val.slice();
+ }
+
+ state[key] = val;
+ }
+
+ return state;
+ }
+
+}
+
+var _isDigit = function isDigit(code) {
+ return code >= 48 && code <= 57;
+};
+const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100]);
+const forbiddenNumericSeparatorSiblings = {
+ decBinOct: [46, 66, 69, 79, 95, 98, 101, 111],
+ hex: [46, 88, 95, 120]
+};
+const allowedNumericSeparatorSiblings = {};
+allowedNumericSeparatorSiblings.bin = [48, 49];
+allowedNumericSeparatorSiblings.oct = [...allowedNumericSeparatorSiblings.bin, 50, 51, 52, 53, 54, 55];
+allowedNumericSeparatorSiblings.dec = [...allowedNumericSeparatorSiblings.oct, 56, 57];
+allowedNumericSeparatorSiblings.hex = [...allowedNumericSeparatorSiblings.dec, 65, 66, 67, 68, 69, 70, 97, 98, 99, 100, 101, 102];
+class Token {
+ constructor(state) {
+ this.type = state.type;
+ this.value = state.value;
+ this.start = state.start;
+ this.end = state.end;
+ this.loc = new SourceLocation(state.startLoc, state.endLoc);
+ }
+
+}
+class Tokenizer extends ParserError {
+ constructor(options, input) {
+ super();
+ this.isLookahead = void 0;
+ this.tokens = [];
+ this.state = new State();
+ this.state.init(options);
+ this.input = input;
+ this.length = input.length;
+ this.isLookahead = false;
+ }
+
+ pushToken(token) {
+ this.tokens.length = this.state.tokensLength;
+ this.tokens.push(token);
+ ++this.state.tokensLength;
+ }
+
+ next() {
+ this.checkKeywordEscapes();
+
+ if (this.options.tokens) {
+ this.pushToken(new Token(this.state));
+ }
+
+ this.state.lastTokEnd = this.state.end;
+ this.state.lastTokStart = this.state.start;
+ this.state.lastTokEndLoc = this.state.endLoc;
+ this.state.lastTokStartLoc = this.state.startLoc;
+ this.nextToken();
+ }
+
+ eat(type) {
+ if (this.match(type)) {
+ this.next();
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ match(type) {
+ return this.state.type === type;
+ }
+
+ createLookaheadState(state) {
+ return {
+ pos: state.pos,
+ value: null,
+ type: state.type,
+ start: state.start,
+ end: state.end,
+ lastTokEnd: state.end,
+ context: [this.curContext()],
+ inType: state.inType
+ };
+ }
+
+ lookahead() {
+ const old = this.state;
+ this.state = this.createLookaheadState(old);
+ this.isLookahead = true;
+ this.nextToken();
+ this.isLookahead = false;
+ const curr = this.state;
+ this.state = old;
+ return curr;
+ }
+
+ nextTokenStart() {
+ return this.nextTokenStartSince(this.state.pos);
+ }
+
+ nextTokenStartSince(pos) {
+ skipWhiteSpace.lastIndex = pos;
+ return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;
+ }
+
+ lookaheadCharCode() {
+ return this.input.charCodeAt(this.nextTokenStart());
+ }
+
+ codePointAtPos(pos) {
+ let cp = this.input.charCodeAt(pos);
+
+ if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {
+ const trail = this.input.charCodeAt(pos);
+
+ if ((trail & 0xfc00) === 0xdc00) {
+ cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
+ }
+ }
+
+ return cp;
+ }
+
+ setStrict(strict) {
+ this.state.strict = strict;
+
+ if (strict) {
+ this.state.strictErrors.forEach((message, pos) => this.raise(pos, message));
+ this.state.strictErrors.clear();
+ }
+ }
+
+ curContext() {
+ return this.state.context[this.state.context.length - 1];
+ }
+
+ nextToken() {
+ const curContext = this.curContext();
+ if (!curContext.preserveSpace) this.skipSpace();
+ this.state.start = this.state.pos;
+ if (!this.isLookahead) this.state.startLoc = this.state.curPosition();
+
+ if (this.state.pos >= this.length) {
+ this.finishToken(129);
+ return;
+ }
+
+ if (curContext === types.template) {
+ this.readTmplToken();
+ } else {
+ this.getTokenFromCode(this.codePointAtPos(this.state.pos));
+ }
+ }
+
+ skipBlockComment() {
+ let startLoc;
+ if (!this.isLookahead) startLoc = this.state.curPosition();
+ const start = this.state.pos;
+ const end = this.input.indexOf("*/", start + 2);
+ if (end === -1) throw this.raise(start, ErrorMessages.UnterminatedComment);
+ this.state.pos = end + 2;
+ lineBreakG.lastIndex = start + 2;
+
+ while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {
+ ++this.state.curLine;
+ this.state.lineStart = lineBreakG.lastIndex;
+ }
+
+ if (this.isLookahead) return;
+ const comment = {
+ type: "CommentBlock",
+ value: this.input.slice(start + 2, end),
+ start,
+ end: end + 2,
+ loc: new SourceLocation(startLoc, this.state.curPosition())
+ };
+ if (this.options.tokens) this.pushToken(comment);
+ return comment;
+ }
+
+ skipLineComment(startSkip) {
+ const start = this.state.pos;
+ let startLoc;
+ if (!this.isLookahead) startLoc = this.state.curPosition();
+ let ch = this.input.charCodeAt(this.state.pos += startSkip);
+
+ if (this.state.pos < this.length) {
+ while (!isNewLine(ch) && ++this.state.pos < this.length) {
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+ }
+
+ if (this.isLookahead) return;
+ const end = this.state.pos;
+ const value = this.input.slice(start + startSkip, end);
+ const comment = {
+ type: "CommentLine",
+ value,
+ start,
+ end,
+ loc: new SourceLocation(startLoc, this.state.curPosition())
+ };
+ if (this.options.tokens) this.pushToken(comment);
+ return comment;
+ }
+
+ skipSpace() {
+ const spaceStart = this.state.pos;
+ const comments = [];
+
+ loop: while (this.state.pos < this.length) {
+ const ch = this.input.charCodeAt(this.state.pos);
+
+ switch (ch) {
+ case 32:
+ case 160:
+ case 9:
+ ++this.state.pos;
+ break;
+
+ case 13:
+ if (this.input.charCodeAt(this.state.pos + 1) === 10) {
+ ++this.state.pos;
+ }
+
+ case 10:
+ case 8232:
+ case 8233:
+ ++this.state.pos;
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ break;
+
+ case 47:
+ switch (this.input.charCodeAt(this.state.pos + 1)) {
+ case 42:
+ {
+ const comment = this.skipBlockComment();
+
+ if (comment !== undefined) {
+ this.addComment(comment);
+ if (this.options.attachComment) comments.push(comment);
+ }
+
+ break;
+ }
+
+ case 47:
+ {
+ const comment = this.skipLineComment(2);
+
+ if (comment !== undefined) {
+ this.addComment(comment);
+ if (this.options.attachComment) comments.push(comment);
+ }
+
+ break;
+ }
+
+ default:
+ break loop;
+ }
+
+ break;
+
+ default:
+ if (isWhitespace(ch)) {
+ ++this.state.pos;
+ } else if (ch === 45 && !this.inModule) {
+ const pos = this.state.pos;
+
+ if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {
+ const comment = this.skipLineComment(3);
+
+ if (comment !== undefined) {
+ this.addComment(comment);
+ if (this.options.attachComment) comments.push(comment);
+ }
+ } else {
+ break loop;
+ }
+ } else if (ch === 60 && !this.inModule) {
+ const pos = this.state.pos;
+
+ if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) {
+ const comment = this.skipLineComment(4);
+
+ if (comment !== undefined) {
+ this.addComment(comment);
+ if (this.options.attachComment) comments.push(comment);
+ }
+ } else {
+ break loop;
+ }
+ } else {
+ break loop;
+ }
+
+ }
+ }
+
+ if (comments.length > 0) {
+ const end = this.state.pos;
+ const CommentWhitespace = {
+ start: spaceStart,
+ end,
+ comments,
+ leadingNode: null,
+ trailingNode: null,
+ containingNode: null
+ };
+ this.state.commentStack.push(CommentWhitespace);
+ }
+ }
+
+ finishToken(type, val) {
+ this.state.end = this.state.pos;
+ const prevType = this.state.type;
+ this.state.type = type;
+ this.state.value = val;
+
+ if (!this.isLookahead) {
+ this.state.endLoc = this.state.curPosition();
+ this.updateContext(prevType);
+ }
+ }
+
+ replaceToken(type) {
+ this.state.type = type;
+ this.updateContext();
+ }
+
+ readToken_numberSign() {
+ if (this.state.pos === 0 && this.readToken_interpreter()) {
+ return;
+ }
+
+ const nextPos = this.state.pos + 1;
+ const next = this.codePointAtPos(nextPos);
+
+ if (next >= 48 && next <= 57) {
+ throw this.raise(this.state.pos, ErrorMessages.UnexpectedDigitAfterHash);
+ }
+
+ if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) {
+ this.expectPlugin("recordAndTuple");
+
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "hash") {
+ throw this.raise(this.state.pos, next === 123 ? ErrorMessages.RecordExpressionHashIncorrectStartSyntaxType : ErrorMessages.TupleExpressionHashIncorrectStartSyntaxType);
+ }
+
+ this.state.pos += 2;
+
+ if (next === 123) {
+ this.finishToken(7);
+ } else {
+ this.finishToken(1);
+ }
+ } else if (isIdentifierStart(next)) {
+ ++this.state.pos;
+ this.finishToken(128, this.readWord1(next));
+ } else if (next === 92) {
+ ++this.state.pos;
+ this.finishToken(128, this.readWord1());
+ } else {
+ this.finishOp(25, 1);
+ }
+ }
+
+ readToken_dot() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next >= 48 && next <= 57) {
+ this.readNumber(true);
+ return;
+ }
+
+ if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {
+ this.state.pos += 3;
+ this.finishToken(21);
+ } else {
+ ++this.state.pos;
+ this.finishToken(16);
+ }
+ }
+
+ readToken_slash() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === 61) {
+ this.finishOp(29, 2);
+ } else {
+ this.finishOp(50, 1);
+ }
+ }
+
+ readToken_interpreter() {
+ if (this.state.pos !== 0 || this.length < 2) return false;
+ let ch = this.input.charCodeAt(this.state.pos + 1);
+ if (ch !== 33) return false;
+ const start = this.state.pos;
+ this.state.pos += 1;
+
+ while (!isNewLine(ch) && ++this.state.pos < this.length) {
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+
+ const value = this.input.slice(start + 2, this.state.pos);
+ this.finishToken(26, value);
+ return true;
+ }
+
+ readToken_mult_modulo(code) {
+ let type = code === 42 ? 49 : 48;
+ let width = 1;
+ let next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (code === 42 && next === 42) {
+ width++;
+ next = this.input.charCodeAt(this.state.pos + 2);
+ type = 51;
+ }
+
+ if (next === 61 && !this.state.inType) {
+ width++;
+ type = code === 37 ? 31 : 28;
+ }
+
+ this.finishOp(type, width);
+ }
+
+ readToken_pipe_amp(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === code) {
+ if (this.input.charCodeAt(this.state.pos + 2) === 61) {
+ this.finishOp(28, 3);
+ } else {
+ this.finishOp(code === 124 ? 37 : 38, 2);
+ }
+
+ return;
+ }
+
+ if (code === 124) {
+ if (next === 62) {
+ this.finishOp(35, 2);
+ return;
+ }
+
+ if (this.hasPlugin("recordAndTuple") && next === 125) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectEndSyntaxType);
+ }
+
+ this.state.pos += 2;
+ this.finishToken(9);
+ return;
+ }
+
+ if (this.hasPlugin("recordAndTuple") && next === 93) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectEndSyntaxType);
+ }
+
+ this.state.pos += 2;
+ this.finishToken(4);
+ return;
+ }
+ }
+
+ if (next === 61) {
+ this.finishOp(28, 2);
+ return;
+ }
+
+ this.finishOp(code === 124 ? 39 : 41, 1);
+ }
+
+ readToken_caret() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === 61 && !this.state.inType) {
+ this.finishOp(30, 2);
+ } else {
+ this.finishOp(40, 1);
+ }
+ }
+
+ readToken_plus_min(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === code) {
+ this.finishOp(32, 2);
+ return;
+ }
+
+ if (next === 61) {
+ this.finishOp(28, 2);
+ } else {
+ this.finishOp(47, 1);
+ }
+ }
+
+ readToken_lt() {
+ const {
+ pos
+ } = this.state;
+ const next = this.input.charCodeAt(pos + 1);
+
+ if (next === 60) {
+ if (this.input.charCodeAt(pos + 2) === 61) {
+ this.finishOp(28, 3);
+ return;
+ }
+
+ this.finishOp(46, 2);
+ return;
+ }
+
+ if (next === 61) {
+ this.finishOp(45, 2);
+ return;
+ }
+
+ this.finishOp(43, 1);
+ }
+
+ readToken_gt() {
+ const {
+ pos
+ } = this.state;
+ const next = this.input.charCodeAt(pos + 1);
+
+ if (next === 62) {
+ const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;
+
+ if (this.input.charCodeAt(pos + size) === 61) {
+ this.finishOp(28, size + 1);
+ return;
+ }
+
+ this.finishOp(46, size);
+ return;
+ }
+
+ if (next === 61) {
+ this.finishOp(45, 2);
+ return;
+ }
+
+ this.finishOp(44, 1);
+ }
+
+ readToken_eq_excl(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === 61) {
+ this.finishOp(42, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
+ return;
+ }
+
+ if (code === 61 && next === 62) {
+ this.state.pos += 2;
+ this.finishToken(19);
+ return;
+ }
+
+ this.finishOp(code === 61 ? 27 : 33, 1);
+ }
+
+ readToken_question() {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+ const next2 = this.input.charCodeAt(this.state.pos + 2);
+
+ if (next === 63) {
+ if (next2 === 61) {
+ this.finishOp(28, 3);
+ } else {
+ this.finishOp(36, 2);
+ }
+ } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
+ this.state.pos += 2;
+ this.finishToken(18);
+ } else {
+ ++this.state.pos;
+ this.finishToken(17);
+ }
+ }
+
+ getTokenFromCode(code) {
+ switch (code) {
+ case 46:
+ this.readToken_dot();
+ return;
+
+ case 40:
+ ++this.state.pos;
+ this.finishToken(10);
+ return;
+
+ case 41:
+ ++this.state.pos;
+ this.finishToken(11);
+ return;
+
+ case 59:
+ ++this.state.pos;
+ this.finishToken(13);
+ return;
+
+ case 44:
+ ++this.state.pos;
+ this.finishToken(12);
+ return;
+
+ case 91:
+ if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(this.state.pos, ErrorMessages.TupleExpressionBarIncorrectStartSyntaxType);
+ }
+
+ this.state.pos += 2;
+ this.finishToken(2);
+ } else {
+ ++this.state.pos;
+ this.finishToken(0);
+ }
+
+ return;
+
+ case 93:
+ ++this.state.pos;
+ this.finishToken(3);
+ return;
+
+ case 123:
+ if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
+ if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
+ throw this.raise(this.state.pos, ErrorMessages.RecordExpressionBarIncorrectStartSyntaxType);
+ }
+
+ this.state.pos += 2;
+ this.finishToken(6);
+ } else {
+ ++this.state.pos;
+ this.finishToken(5);
+ }
+
+ return;
+
+ case 125:
+ ++this.state.pos;
+ this.finishToken(8);
+ return;
+
+ case 58:
+ if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
+ this.finishOp(15, 2);
+ } else {
+ ++this.state.pos;
+ this.finishToken(14);
+ }
+
+ return;
+
+ case 63:
+ this.readToken_question();
+ return;
+
+ case 96:
+ ++this.state.pos;
+ this.finishToken(22);
+ return;
+
+ case 48:
+ {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === 120 || next === 88) {
+ this.readRadixNumber(16);
+ return;
+ }
+
+ if (next === 111 || next === 79) {
+ this.readRadixNumber(8);
+ return;
+ }
+
+ if (next === 98 || next === 66) {
+ this.readRadixNumber(2);
+ return;
+ }
+ }
+
+ case 49:
+ case 50:
+ case 51:
+ case 52:
+ case 53:
+ case 54:
+ case 55:
+ case 56:
+ case 57:
+ this.readNumber(false);
+ return;
+
+ case 34:
+ case 39:
+ this.readString(code);
+ return;
+
+ case 47:
+ this.readToken_slash();
+ return;
+
+ case 37:
+ case 42:
+ this.readToken_mult_modulo(code);
+ return;
+
+ case 124:
+ case 38:
+ this.readToken_pipe_amp(code);
+ return;
+
+ case 94:
+ this.readToken_caret();
+ return;
+
+ case 43:
+ case 45:
+ this.readToken_plus_min(code);
+ return;
+
+ case 60:
+ this.readToken_lt();
+ return;
+
+ case 62:
+ this.readToken_gt();
+ return;
+
+ case 61:
+ case 33:
+ this.readToken_eq_excl(code);
+ return;
+
+ case 126:
+ this.finishOp(34, 1);
+ return;
+
+ case 64:
+ ++this.state.pos;
+ this.finishToken(24);
+ return;
+
+ case 35:
+ this.readToken_numberSign();
+ return;
+
+ case 92:
+ this.readWord();
+ return;
+
+ default:
+ if (isIdentifierStart(code)) {
+ this.readWord(code);
+ return;
+ }
+
+ }
+
+ throw this.raise(this.state.pos, ErrorMessages.InvalidOrUnexpectedToken, String.fromCodePoint(code));
+ }
+
+ finishOp(type, size) {
+ const str = this.input.slice(this.state.pos, this.state.pos + size);
+ this.state.pos += size;
+ this.finishToken(type, str);
+ }
+
+ readRegexp() {
+ const start = this.state.start + 1;
+ let escaped, inClass;
+ let {
+ pos
+ } = this.state;
+
+ for (;; ++pos) {
+ if (pos >= this.length) {
+ throw this.raise(start, ErrorMessages.UnterminatedRegExp);
+ }
+
+ const ch = this.input.charCodeAt(pos);
+
+ if (isNewLine(ch)) {
+ throw this.raise(start, ErrorMessages.UnterminatedRegExp);
+ }
+
+ if (escaped) {
+ escaped = false;
+ } else {
+ if (ch === 91) {
+ inClass = true;
+ } else if (ch === 93 && inClass) {
+ inClass = false;
+ } else if (ch === 47 && !inClass) {
+ break;
+ }
+
+ escaped = ch === 92;
+ }
+ }
+
+ const content = this.input.slice(start, pos);
+ ++pos;
+ let mods = "";
+
+ while (pos < this.length) {
+ const cp = this.codePointAtPos(pos);
+ const char = String.fromCharCode(cp);
+
+ if (VALID_REGEX_FLAGS.has(cp)) {
+ if (mods.includes(char)) {
+ this.raise(pos + 1, ErrorMessages.DuplicateRegExpFlags);
+ }
+ } else if (isIdentifierChar(cp) || cp === 92) {
+ this.raise(pos + 1, ErrorMessages.MalformedRegExpFlags);
+ } else {
+ break;
+ }
+
+ ++pos;
+ mods += char;
+ }
+
+ this.state.pos = pos;
+ this.finishToken(127, {
+ pattern: content,
+ flags: mods
+ });
+ }
+
+ readInt(radix, len, forceLen, allowNumSeparator = true) {
+ const start = this.state.pos;
+ const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
+ const allowedSiblings = radix === 16 ? allowedNumericSeparatorSiblings.hex : radix === 10 ? allowedNumericSeparatorSiblings.dec : radix === 8 ? allowedNumericSeparatorSiblings.oct : allowedNumericSeparatorSiblings.bin;
+ let invalid = false;
+ let total = 0;
+
+ for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {
+ const code = this.input.charCodeAt(this.state.pos);
+ let val;
+
+ if (code === 95) {
+ const prev = this.input.charCodeAt(this.state.pos - 1);
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (allowedSiblings.indexOf(next) === -1) {
+ this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator);
+ } else if (forbiddenSiblings.indexOf(prev) > -1 || forbiddenSiblings.indexOf(next) > -1 || Number.isNaN(next)) {
+ this.raise(this.state.pos, ErrorMessages.UnexpectedNumericSeparator);
+ }
+
+ if (!allowNumSeparator) {
+ this.raise(this.state.pos, ErrorMessages.NumericSeparatorInEscapeSequence);
+ }
+
+ ++this.state.pos;
+ continue;
+ }
+
+ if (code >= 97) {
+ val = code - 97 + 10;
+ } else if (code >= 65) {
+ val = code - 65 + 10;
+ } else if (_isDigit(code)) {
+ val = code - 48;
+ } else {
+ val = Infinity;
+ }
+
+ if (val >= radix) {
+ if (this.options.errorRecovery && val <= 9) {
+ val = 0;
+ this.raise(this.state.start + i + 2, ErrorMessages.InvalidDigit, radix);
+ } else if (forceLen) {
+ val = 0;
+ invalid = true;
+ } else {
+ break;
+ }
+ }
+
+ ++this.state.pos;
+ total = total * radix + val;
+ }
+
+ if (this.state.pos === start || len != null && this.state.pos - start !== len || invalid) {
+ return null;
+ }
+
+ return total;
+ }
+
+ readRadixNumber(radix) {
+ const start = this.state.pos;
+ let isBigInt = false;
+ this.state.pos += 2;
+ const val = this.readInt(radix);
+
+ if (val == null) {
+ this.raise(this.state.start + 2, ErrorMessages.InvalidDigit, radix);
+ }
+
+ const next = this.input.charCodeAt(this.state.pos);
+
+ if (next === 110) {
+ ++this.state.pos;
+ isBigInt = true;
+ } else if (next === 109) {
+ throw this.raise(start, ErrorMessages.InvalidDecimal);
+ }
+
+ if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
+ throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier);
+ }
+
+ if (isBigInt) {
+ const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, "");
+ this.finishToken(125, str);
+ return;
+ }
+
+ this.finishToken(124, val);
+ }
+
+ readNumber(startsWithDot) {
+ const start = this.state.pos;
+ let isFloat = false;
+ let isBigInt = false;
+ let isDecimal = false;
+ let hasExponent = false;
+ let isOctal = false;
+
+ if (!startsWithDot && this.readInt(10) === null) {
+ this.raise(start, ErrorMessages.InvalidNumber);
+ }
+
+ const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
+
+ if (hasLeadingZero) {
+ const integer = this.input.slice(start, this.state.pos);
+ this.recordStrictModeErrors(start, ErrorMessages.StrictOctalLiteral);
+
+ if (!this.state.strict) {
+ const underscorePos = integer.indexOf("_");
+
+ if (underscorePos > 0) {
+ this.raise(underscorePos + start, ErrorMessages.ZeroDigitNumericSeparator);
+ }
+ }
+
+ isOctal = hasLeadingZero && !/[89]/.test(integer);
+ }
+
+ let next = this.input.charCodeAt(this.state.pos);
+
+ if (next === 46 && !isOctal) {
+ ++this.state.pos;
+ this.readInt(10);
+ isFloat = true;
+ next = this.input.charCodeAt(this.state.pos);
+ }
+
+ if ((next === 69 || next === 101) && !isOctal) {
+ next = this.input.charCodeAt(++this.state.pos);
+
+ if (next === 43 || next === 45) {
+ ++this.state.pos;
+ }
+
+ if (this.readInt(10) === null) {
+ this.raise(start, ErrorMessages.InvalidOrMissingExponent);
+ }
+
+ isFloat = true;
+ hasExponent = true;
+ next = this.input.charCodeAt(this.state.pos);
+ }
+
+ if (next === 110) {
+ if (isFloat || hasLeadingZero) {
+ this.raise(start, ErrorMessages.InvalidBigIntLiteral);
+ }
+
+ ++this.state.pos;
+ isBigInt = true;
+ }
+
+ if (next === 109) {
+ this.expectPlugin("decimal", this.state.pos);
+
+ if (hasExponent || hasLeadingZero) {
+ this.raise(start, ErrorMessages.InvalidDecimal);
+ }
+
+ ++this.state.pos;
+ isDecimal = true;
+ }
+
+ if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
+ throw this.raise(this.state.pos, ErrorMessages.NumberIdentifier);
+ }
+
+ const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, "");
+
+ if (isBigInt) {
+ this.finishToken(125, str);
+ return;
+ }
+
+ if (isDecimal) {
+ this.finishToken(126, str);
+ return;
+ }
+
+ const val = isOctal ? parseInt(str, 8) : parseFloat(str);
+ this.finishToken(124, val);
+ }
+
+ readCodePoint(throwOnInvalid) {
+ const ch = this.input.charCodeAt(this.state.pos);
+ let code;
+
+ if (ch === 123) {
+ const codePos = ++this.state.pos;
+ code = this.readHexChar(this.input.indexOf("}", this.state.pos) - this.state.pos, true, throwOnInvalid);
+ ++this.state.pos;
+
+ if (code !== null && code > 0x10ffff) {
+ if (throwOnInvalid) {
+ this.raise(codePos, ErrorMessages.InvalidCodePoint);
+ } else {
+ return null;
+ }
+ }
+ } else {
+ code = this.readHexChar(4, false, throwOnInvalid);
+ }
+
+ return code;
+ }
+
+ readString(quote) {
+ let out = "",
+ chunkStart = ++this.state.pos;
+
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(this.state.start, ErrorMessages.UnterminatedString);
+ }
+
+ const ch = this.input.charCodeAt(this.state.pos);
+ if (ch === quote) break;
+
+ if (ch === 92) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.readEscapedChar(false);
+ chunkStart = this.state.pos;
+ } else if (ch === 8232 || ch === 8233) {
+ ++this.state.pos;
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ } else if (isNewLine(ch)) {
+ throw this.raise(this.state.start, ErrorMessages.UnterminatedString);
+ } else {
+ ++this.state.pos;
+ }
+ }
+
+ out += this.input.slice(chunkStart, this.state.pos++);
+ this.finishToken(123, out);
+ }
+
+ readTmplToken() {
+ let out = "",
+ chunkStart = this.state.pos,
+ containsInvalid = false;
+
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(this.state.start, ErrorMessages.UnterminatedTemplate);
+ }
+
+ const ch = this.input.charCodeAt(this.state.pos);
+
+ if (ch === 96 || ch === 36 && this.input.charCodeAt(this.state.pos + 1) === 123) {
+ if (this.state.pos === this.state.start && this.match(20)) {
+ if (ch === 36) {
+ this.state.pos += 2;
+ this.finishToken(23);
+ return;
+ } else {
+ ++this.state.pos;
+ this.finishToken(22);
+ return;
+ }
+ }
+
+ out += this.input.slice(chunkStart, this.state.pos);
+ this.finishToken(20, containsInvalid ? null : out);
+ return;
+ }
+
+ if (ch === 92) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ const escaped = this.readEscapedChar(true);
+
+ if (escaped === null) {
+ containsInvalid = true;
+ } else {
+ out += escaped;
+ }
+
+ chunkStart = this.state.pos;
+ } else if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ ++this.state.pos;
+
+ switch (ch) {
+ case 13:
+ if (this.input.charCodeAt(this.state.pos) === 10) {
+ ++this.state.pos;
+ }
+
+ case 10:
+ out += "\n";
+ break;
+
+ default:
+ out += String.fromCharCode(ch);
+ break;
+ }
+
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ }
+
+ recordStrictModeErrors(pos, message) {
+ if (this.state.strict && !this.state.strictErrors.has(pos)) {
+ this.raise(pos, message);
+ } else {
+ this.state.strictErrors.set(pos, message);
+ }
+ }
+
+ readEscapedChar(inTemplate) {
+ const throwOnInvalid = !inTemplate;
+ const ch = this.input.charCodeAt(++this.state.pos);
+ ++this.state.pos;
+
+ switch (ch) {
+ case 110:
+ return "\n";
+
+ case 114:
+ return "\r";
+
+ case 120:
+ {
+ const code = this.readHexChar(2, false, throwOnInvalid);
+ return code === null ? null : String.fromCharCode(code);
+ }
+
+ case 117:
+ {
+ const code = this.readCodePoint(throwOnInvalid);
+ return code === null ? null : String.fromCodePoint(code);
+ }
+
+ case 116:
+ return "\t";
+
+ case 98:
+ return "\b";
+
+ case 118:
+ return "\u000b";
+
+ case 102:
+ return "\f";
+
+ case 13:
+ if (this.input.charCodeAt(this.state.pos) === 10) {
+ ++this.state.pos;
+ }
+
+ case 10:
+ this.state.lineStart = this.state.pos;
+ ++this.state.curLine;
+
+ case 8232:
+ case 8233:
+ return "";
+
+ case 56:
+ case 57:
+ if (inTemplate) {
+ return null;
+ } else {
+ this.recordStrictModeErrors(this.state.pos - 1, ErrorMessages.StrictNumericEscape);
+ }
+
+ default:
+ if (ch >= 48 && ch <= 55) {
+ const codePos = this.state.pos - 1;
+ const match = this.input.substr(this.state.pos - 1, 3).match(/^[0-7]+/);
+ let octalStr = match[0];
+ let octal = parseInt(octalStr, 8);
+
+ if (octal > 255) {
+ octalStr = octalStr.slice(0, -1);
+ octal = parseInt(octalStr, 8);
+ }
+
+ this.state.pos += octalStr.length - 1;
+ const next = this.input.charCodeAt(this.state.pos);
+
+ if (octalStr !== "0" || next === 56 || next === 57) {
+ if (inTemplate) {
+ return null;
+ } else {
+ this.recordStrictModeErrors(codePos, ErrorMessages.StrictNumericEscape);
+ }
+ }
+
+ return String.fromCharCode(octal);
+ }
+
+ return String.fromCharCode(ch);
+ }
+ }
+
+ readHexChar(len, forceLen, throwOnInvalid) {
+ const codePos = this.state.pos;
+ const n = this.readInt(16, len, forceLen, false);
+
+ if (n === null) {
+ if (throwOnInvalid) {
+ this.raise(codePos, ErrorMessages.InvalidEscapeSequence);
+ } else {
+ this.state.pos = codePos - 1;
+ }
+ }
+
+ return n;
+ }
+
+ readWord1(firstCode) {
+ this.state.containsEsc = false;
+ let word = "";
+ const start = this.state.pos;
+ let chunkStart = this.state.pos;
+
+ if (firstCode !== undefined) {
+ this.state.pos += firstCode <= 0xffff ? 1 : 2;
+ }
+
+ while (this.state.pos < this.length) {
+ const ch = this.codePointAtPos(this.state.pos);
+
+ if (isIdentifierChar(ch)) {
+ this.state.pos += ch <= 0xffff ? 1 : 2;
+ } else if (ch === 92) {
+ this.state.containsEsc = true;
+ word += this.input.slice(chunkStart, this.state.pos);
+ const escStart = this.state.pos;
+ const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;
+
+ if (this.input.charCodeAt(++this.state.pos) !== 117) {
+ this.raise(this.state.pos, ErrorMessages.MissingUnicodeEscape);
+ chunkStart = this.state.pos - 1;
+ continue;
+ }
+
+ ++this.state.pos;
+ const esc = this.readCodePoint(true);
+
+ if (esc !== null) {
+ if (!identifierCheck(esc)) {
+ this.raise(escStart, ErrorMessages.EscapedCharNotAnIdentifier);
+ }
+
+ word += String.fromCodePoint(esc);
+ }
+
+ chunkStart = this.state.pos;
+ } else {
+ break;
+ }
+ }
+
+ return word + this.input.slice(chunkStart, this.state.pos);
+ }
+
+ readWord(firstCode) {
+ const word = this.readWord1(firstCode);
+ const type = keywords$1.get(word);
+
+ if (type !== undefined) {
+ this.finishToken(type, tokenLabelName(type));
+ } else {
+ this.finishToken(122, word);
+ }
+ }
+
+ checkKeywordEscapes() {
+ const {
+ type
+ } = this.state;
+
+ if (tokenIsKeyword(type) && this.state.containsEsc) {
+ this.raise(this.state.start, ErrorMessages.InvalidEscapedReservedWord, tokenLabelName(type));
+ }
+ }
+
+ updateContext(prevType) {
+ const {
+ context,
+ type
+ } = this.state;
+
+ switch (type) {
+ case 8:
+ context.pop();
+ break;
+
+ case 5:
+ case 7:
+ case 23:
+ context.push(types.brace);
+ break;
+
+ case 22:
+ if (context[context.length - 1] === types.template) {
+ context.pop();
+ } else {
+ context.push(types.template);
+ }
+
+ break;
+ }
+ }
+
+}
+
+class ClassScope {
+ constructor() {
+ this.privateNames = new Set();
+ this.loneAccessors = new Map();
+ this.undefinedPrivateNames = new Map();
+ }
+
+}
+class ClassScopeHandler {
+ constructor(raise) {
+ this.stack = [];
+ this.undefinedPrivateNames = new Map();
+ this.raise = raise;
+ }
+
+ current() {
+ return this.stack[this.stack.length - 1];
+ }
+
+ enter() {
+ this.stack.push(new ClassScope());
+ }
+
+ exit() {
+ const oldClassScope = this.stack.pop();
+ const current = this.current();
+
+ for (const [name, pos] of Array.from(oldClassScope.undefinedPrivateNames)) {
+ if (current) {
+ if (!current.undefinedPrivateNames.has(name)) {
+ current.undefinedPrivateNames.set(name, pos);
+ }
+ } else {
+ this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name);
+ }
+ }
+ }
+
+ declarePrivateName(name, elementType, pos) {
+ const classScope = this.current();
+ let redefined = classScope.privateNames.has(name);
+
+ if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {
+ const accessor = redefined && classScope.loneAccessors.get(name);
+
+ if (accessor) {
+ const oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;
+ const newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;
+ const oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;
+ const newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;
+ redefined = oldKind === newKind || oldStatic !== newStatic;
+ if (!redefined) classScope.loneAccessors.delete(name);
+ } else if (!redefined) {
+ classScope.loneAccessors.set(name, elementType);
+ }
+ }
+
+ if (redefined) {
+ this.raise(pos, ErrorMessages.PrivateNameRedeclaration, name);
+ }
+
+ classScope.privateNames.add(name);
+ classScope.undefinedPrivateNames.delete(name);
+ }
+
+ usePrivateName(name, pos) {
+ let classScope;
+
+ for (classScope of this.stack) {
+ if (classScope.privateNames.has(name)) return;
+ }
+
+ if (classScope) {
+ classScope.undefinedPrivateNames.set(name, pos);
+ } else {
+ this.raise(pos, ErrorMessages.InvalidPrivateFieldResolution, name);
+ }
+ }
+
+}
+
+const kExpression = 0,
+ kMaybeArrowParameterDeclaration = 1,
+ kMaybeAsyncArrowParameterDeclaration = 2,
+ kParameterDeclaration = 3;
+
+class ExpressionScope {
+ constructor(type = kExpression) {
+ this.type = void 0;
+ this.type = type;
+ }
+
+ canBeArrowParameterDeclaration() {
+ return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration;
+ }
+
+ isCertainlyParameterDeclaration() {
+ return this.type === kParameterDeclaration;
+ }
+
+}
+
+class ArrowHeadParsingScope extends ExpressionScope {
+ constructor(type) {
+ super(type);
+ this.errors = new Map();
+ }
+
+ recordDeclarationError(pos, template) {
+ this.errors.set(pos, template);
+ }
+
+ clearDeclarationError(pos) {
+ this.errors.delete(pos);
+ }
+
+ iterateErrors(iterator) {
+ this.errors.forEach(iterator);
+ }
+
+}
+
+class ExpressionScopeHandler {
+ constructor(raise) {
+ this.stack = [new ExpressionScope()];
+ this.raise = raise;
+ }
+
+ enter(scope) {
+ this.stack.push(scope);
+ }
+
+ exit() {
+ this.stack.pop();
+ }
+
+ recordParameterInitializerError(pos, template) {
+ const {
+ stack
+ } = this;
+ let i = stack.length - 1;
+ let scope = stack[i];
+
+ while (!scope.isCertainlyParameterDeclaration()) {
+ if (scope.canBeArrowParameterDeclaration()) {
+ scope.recordDeclarationError(pos, template);
+ } else {
+ return;
+ }
+
+ scope = stack[--i];
+ }
+
+ this.raise(pos, template);
+ }
+
+ recordParenthesizedIdentifierError(pos, template) {
+ const {
+ stack
+ } = this;
+ const scope = stack[stack.length - 1];
+
+ if (scope.isCertainlyParameterDeclaration()) {
+ this.raise(pos, template);
+ } else if (scope.canBeArrowParameterDeclaration()) {
+ scope.recordDeclarationError(pos, template);
+ } else {
+ return;
+ }
+ }
+
+ recordAsyncArrowParametersError(pos, template) {
+ const {
+ stack
+ } = this;
+ let i = stack.length - 1;
+ let scope = stack[i];
+
+ while (scope.canBeArrowParameterDeclaration()) {
+ if (scope.type === kMaybeAsyncArrowParameterDeclaration) {
+ scope.recordDeclarationError(pos, template);
+ }
+
+ scope = stack[--i];
+ }
+ }
+
+ validateAsPattern() {
+ const {
+ stack
+ } = this;
+ const currentScope = stack[stack.length - 1];
+ if (!currentScope.canBeArrowParameterDeclaration()) return;
+ currentScope.iterateErrors((template, pos) => {
+ this.raise(pos, template);
+ let i = stack.length - 2;
+ let scope = stack[i];
+
+ while (scope.canBeArrowParameterDeclaration()) {
+ scope.clearDeclarationError(pos);
+ scope = stack[--i];
+ }
+ });
+ }
+
+}
+function newParameterDeclarationScope() {
+ return new ExpressionScope(kParameterDeclaration);
+}
+function newArrowHeadScope() {
+ return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration);
+}
+function newAsyncArrowScope() {
+ return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration);
+}
+function newExpressionScope() {
+ return new ExpressionScope();
+}
+
+const PARAM = 0b0000,
+ PARAM_YIELD = 0b0001,
+ PARAM_AWAIT = 0b0010,
+ PARAM_RETURN = 0b0100,
+ PARAM_IN = 0b1000;
+class ProductionParameterHandler {
+ constructor() {
+ this.stacks = [];
+ }
+
+ enter(flags) {
+ this.stacks.push(flags);
+ }
+
+ exit() {
+ this.stacks.pop();
+ }
+
+ currentFlags() {
+ return this.stacks[this.stacks.length - 1];
+ }
+
+ get hasAwait() {
+ return (this.currentFlags() & PARAM_AWAIT) > 0;
+ }
+
+ get hasYield() {
+ return (this.currentFlags() & PARAM_YIELD) > 0;
+ }
+
+ get hasReturn() {
+ return (this.currentFlags() & PARAM_RETURN) > 0;
+ }
+
+ get hasIn() {
+ return (this.currentFlags() & PARAM_IN) > 0;
+ }
+
+}
+function functionFlags(isAsync, isGenerator) {
+ return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);
+}
+
+class UtilParser extends Tokenizer {
+ addExtra(node, key, val) {
+ if (!node) return;
+ const extra = node.extra = node.extra || {};
+ extra[key] = val;
+ }
+
+ isContextual(token) {
+ return this.state.type === token && !this.state.containsEsc;
+ }
+
+ isUnparsedContextual(nameStart, name) {
+ const nameEnd = nameStart + name.length;
+
+ if (this.input.slice(nameStart, nameEnd) === name) {
+ const nextCh = this.input.charCodeAt(nameEnd);
+ return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);
+ }
+
+ return false;
+ }
+
+ isLookaheadContextual(name) {
+ const next = this.nextTokenStart();
+ return this.isUnparsedContextual(next, name);
+ }
+
+ eatContextual(token) {
+ if (this.isContextual(token)) {
+ this.next();
+ return true;
+ }
+
+ return false;
+ }
+
+ expectContextual(token, template) {
+ if (!this.eatContextual(token)) this.unexpected(null, template);
+ }
+
+ canInsertSemicolon() {
+ return this.match(129) || this.match(8) || this.hasPrecedingLineBreak();
+ }
+
+ hasPrecedingLineBreak() {
+ return lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));
+ }
+
+ hasFollowingLineBreak() {
+ skipWhiteSpaceToLineBreak.lastIndex = this.state.end;
+ return skipWhiteSpaceToLineBreak.test(this.input);
+ }
+
+ isLineTerminator() {
+ return this.eat(13) || this.canInsertSemicolon();
+ }
+
+ semicolon(allowAsi = true) {
+ if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;
+ this.raise(this.state.lastTokEnd, ErrorMessages.MissingSemicolon);
+ }
+
+ expect(type, pos) {
+ this.eat(type) || this.unexpected(pos, type);
+ }
+
+ assertNoSpace(message = "Unexpected space.") {
+ if (this.state.start > this.state.lastTokEnd) {
+ this.raise(this.state.lastTokEnd, {
+ code: ErrorCodes.SyntaxError,
+ reasonCode: "UnexpectedSpace",
+ template: message
+ });
+ }
+ }
+
+ unexpected(pos, messageOrType = {
+ code: ErrorCodes.SyntaxError,
+ reasonCode: "UnexpectedToken",
+ template: "Unexpected token"
+ }) {
+ if (isTokenType(messageOrType)) {
+ messageOrType = {
+ code: ErrorCodes.SyntaxError,
+ reasonCode: "UnexpectedToken",
+ template: `Unexpected token, expected "${tokenLabelName(messageOrType)}"`
+ };
+ }
+
+ throw this.raise(pos != null ? pos : this.state.start, messageOrType);
+ }
+
+ expectPlugin(name, pos) {
+ if (!this.hasPlugin(name)) {
+ throw this.raiseWithData(pos != null ? pos : this.state.start, {
+ missingPlugin: [name]
+ }, `This experimental syntax requires enabling the parser plugin: '${name}'`);
+ }
+
+ return true;
+ }
+
+ expectOnePlugin(names, pos) {
+ if (!names.some(n => this.hasPlugin(n))) {
+ throw this.raiseWithData(pos != null ? pos : this.state.start, {
+ missingPlugin: names
+ }, `This experimental syntax requires enabling one of the following parser plugin(s): '${names.join(", ")}'`);
+ }
+ }
+
+ tryParse(fn, oldState = this.state.clone()) {
+ const abortSignal = {
+ node: null
+ };
+
+ try {
+ const node = fn((node = null) => {
+ abortSignal.node = node;
+ throw abortSignal;
+ });
+
+ if (this.state.errors.length > oldState.errors.length) {
+ const failState = this.state;
+ this.state = oldState;
+ this.state.tokensLength = failState.tokensLength;
+ return {
+ node,
+ error: failState.errors[oldState.errors.length],
+ thrown: false,
+ aborted: false,
+ failState
+ };
+ }
+
+ return {
+ node,
+ error: null,
+ thrown: false,
+ aborted: false,
+ failState: null
+ };
+ } catch (error) {
+ const failState = this.state;
+ this.state = oldState;
+
+ if (error instanceof SyntaxError) {
+ return {
+ node: null,
+ error,
+ thrown: true,
+ aborted: false,
+ failState
+ };
+ }
+
+ if (error === abortSignal) {
+ return {
+ node: abortSignal.node,
+ error: null,
+ thrown: false,
+ aborted: true,
+ failState
+ };
+ }
+
+ throw error;
+ }
+ }
+
+ checkExpressionErrors(refExpressionErrors, andThrow) {
+ if (!refExpressionErrors) return false;
+ const {
+ shorthandAssign,
+ doubleProto,
+ optionalParameters
+ } = refExpressionErrors;
+ const hasErrors = shorthandAssign + doubleProto + optionalParameters > -3;
+
+ if (!andThrow) {
+ return hasErrors;
+ } else if (hasErrors) {
+ if (shorthandAssign >= 0) {
+ this.unexpected(shorthandAssign);
+ }
+
+ if (doubleProto >= 0) {
+ this.raise(doubleProto, ErrorMessages.DuplicateProto);
+ }
+
+ if (optionalParameters >= 0) {
+ this.unexpected(optionalParameters);
+ }
+ }
+ }
+
+ isLiteralPropertyName() {
+ return tokenIsLiteralPropertyName(this.state.type);
+ }
+
+ isPrivateName(node) {
+ return node.type === "PrivateName";
+ }
+
+ getPrivateNameSV(node) {
+ return node.id.name;
+ }
+
+ hasPropertyAsPrivateName(node) {
+ return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property);
+ }
+
+ isOptionalChain(node) {
+ return node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression";
+ }
+
+ isObjectProperty(node) {
+ return node.type === "ObjectProperty";
+ }
+
+ isObjectMethod(node) {
+ return node.type === "ObjectMethod";
+ }
+
+ initializeScopes(inModule = this.options.sourceType === "module") {
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ const oldExportedIdentifiers = this.exportedIdentifiers;
+ this.exportedIdentifiers = new Set();
+ const oldInModule = this.inModule;
+ this.inModule = inModule;
+ const oldScope = this.scope;
+ const ScopeHandler = this.getScopeHandler();
+ this.scope = new ScopeHandler(this.raise.bind(this), this.inModule);
+ const oldProdParam = this.prodParam;
+ this.prodParam = new ProductionParameterHandler();
+ const oldClassScope = this.classScope;
+ this.classScope = new ClassScopeHandler(this.raise.bind(this));
+ const oldExpressionScope = this.expressionScope;
+ this.expressionScope = new ExpressionScopeHandler(this.raise.bind(this));
+ return () => {
+ this.state.labels = oldLabels;
+ this.exportedIdentifiers = oldExportedIdentifiers;
+ this.inModule = oldInModule;
+ this.scope = oldScope;
+ this.prodParam = oldProdParam;
+ this.classScope = oldClassScope;
+ this.expressionScope = oldExpressionScope;
+ };
+ }
+
+ enterInitialScopes() {
+ let paramFlags = PARAM;
+
+ if (this.inModule) {
+ paramFlags |= PARAM_AWAIT;
+ }
+
+ this.scope.enter(SCOPE_PROGRAM);
+ this.prodParam.enter(paramFlags);
+ }
+
+}
+class ExpressionErrors {
+ constructor() {
+ this.shorthandAssign = -1;
+ this.doubleProto = -1;
+ this.optionalParameters = -1;
+ }
+
+}
+
+class Node {
+ constructor(parser, pos, loc) {
+ this.type = "";
+ this.start = pos;
+ this.end = 0;
+ this.loc = new SourceLocation(loc);
+ if (parser != null && parser.options.ranges) this.range = [pos, 0];
+ if (parser != null && parser.filename) this.loc.filename = parser.filename;
+ }
+
+}
+
+const NodePrototype = Node.prototype;
+{
+ NodePrototype.__clone = function () {
+ const newNode = new Node();
+ const keys = Object.keys(this);
+
+ for (let i = 0, length = keys.length; i < length; i++) {
+ const key = keys[i];
+
+ if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") {
+ newNode[key] = this[key];
+ }
+ }
+
+ return newNode;
+ };
+}
+
+function clonePlaceholder(node) {
+ return cloneIdentifier(node);
+}
+
+function cloneIdentifier(node) {
+ const {
+ type,
+ start,
+ end,
+ loc,
+ range,
+ extra,
+ name
+ } = node;
+ const cloned = Object.create(NodePrototype);
+ cloned.type = type;
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.extra = extra;
+ cloned.name = name;
+
+ if (type === "Placeholder") {
+ cloned.expectedNode = node.expectedNode;
+ }
+
+ return cloned;
+}
+function cloneStringLiteral(node) {
+ const {
+ type,
+ start,
+ end,
+ loc,
+ range,
+ extra
+ } = node;
+
+ if (type === "Placeholder") {
+ return clonePlaceholder(node);
+ }
+
+ const cloned = Object.create(NodePrototype);
+ cloned.type = "StringLiteral";
+ cloned.start = start;
+ cloned.end = end;
+ cloned.loc = loc;
+ cloned.range = range;
+ cloned.extra = extra;
+ cloned.value = node.value;
+ return cloned;
+}
+class NodeUtils extends UtilParser {
+ startNode() {
+ return new Node(this, this.state.start, this.state.startLoc);
+ }
+
+ startNodeAt(pos, loc) {
+ return new Node(this, pos, loc);
+ }
+
+ startNodeAtNode(type) {
+ return this.startNodeAt(type.start, type.loc.start);
+ }
+
+ finishNode(node, type) {
+ return this.finishNodeAt(node, type, this.state.lastTokEnd, this.state.lastTokEndLoc);
+ }
+
+ finishNodeAt(node, type, pos, loc) {
+
+ node.type = type;
+ node.end = pos;
+ node.loc.end = loc;
+ if (this.options.ranges) node.range[1] = pos;
+ if (this.options.attachComment) this.processComment(node);
+ return node;
+ }
+
+ resetStartLocation(node, start, startLoc) {
+ node.start = start;
+ node.loc.start = startLoc;
+ if (this.options.ranges) node.range[0] = start;
+ }
+
+ resetEndLocation(node, end = this.state.lastTokEnd, endLoc = this.state.lastTokEndLoc) {
+ node.end = end;
+ node.loc.end = endLoc;
+ if (this.options.ranges) node.range[1] = end;
+ }
+
+ resetStartLocationFromNode(node, locationNode) {
+ this.resetStartLocation(node, locationNode.start, locationNode.loc.start);
+ }
+
+}
+
+const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
+const FlowErrors = makeErrorTemplates({
+ AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",
+ AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",
+ AssignReservedType: "Cannot overwrite reserved type %0.",
+ DeclareClassElement: "The `declare` modifier can only appear on class fields.",
+ DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.",
+ DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.",
+ EnumBooleanMemberNotInitialized: "Boolean enum members need to be initialized. Use either `%0 = true,` or `%0 = false,` in enum `%1`.",
+ EnumDuplicateMemberName: "Enum member names need to be unique, but the name `%0` has already been used before in enum `%1`.",
+ EnumInconsistentMemberValues: "Enum `%0` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.",
+ EnumInvalidExplicitType: "Enum type `%1` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.",
+ EnumInvalidExplicitTypeUnknownSupplied: "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `%0`.",
+ EnumInvalidMemberInitializerPrimaryType: "Enum `%0` has type `%2`, so the initializer of `%1` needs to be a %2 literal.",
+ EnumInvalidMemberInitializerSymbolType: "Symbol enum members cannot be initialized. Use `%1,` in enum `%0`.",
+ EnumInvalidMemberInitializerUnknownType: "The enum member initializer for `%1` needs to be a literal (either a boolean, number, or string) in enum `%0`.",
+ EnumInvalidMemberName: "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%0`, consider using `%1`, in enum `%2`.",
+ EnumNumberMemberNotInitialized: "Number enum members need to be initialized, e.g. `%1 = 1` in enum `%0`.",
+ EnumStringMemberInconsistentlyInitailized: "String enum members need to consistently either all use initializers, or use no initializers, in enum `%0`.",
+ GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.",
+ ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",
+ InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.",
+ InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.",
+ InexactVariance: "Explicit inexact syntax cannot have variance.",
+ InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.",
+ MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",
+ NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.",
+ NestedFlowComment: "Cannot have a flow comment inside another flow comment.",
+ PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",
+ SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.",
+ SpreadVariance: "Spread properties cannot have variance.",
+ ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.",
+ ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",
+ ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.",
+ ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.",
+ ThisParamNoDefault: "The `this` parameter may not have a default value.",
+ TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
+ TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.",
+ UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.",
+ UnexpectedReservedType: "Unexpected reserved type %0.",
+ UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.",
+ UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.",
+ UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.",
+ UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".',
+ UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.",
+ UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",
+ UnsupportedDeclareExportKind: "`declare export %0` is not supported. Use `%1` instead.",
+ UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.",
+ UnterminatedFlowComment: "Unterminated flow-comment."
+}, ErrorCodes.SyntaxError, "flow");
+
+function isEsModuleType(bodyElement) {
+ return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration");
+}
+
+function hasTypeImportKind(node) {
+ return node.importKind === "type" || node.importKind === "typeof";
+}
+
+function isMaybeDefaultImport(type) {
+ return tokenIsKeywordOrIdentifier(type) && type !== 91;
+}
+
+const exportSuggestions = {
+ const: "declare export var",
+ let: "declare export var",
+ type: "export type",
+ interface: "export interface"
+};
+
+function partition(list, test) {
+ const list1 = [];
+ const list2 = [];
+
+ for (let i = 0; i < list.length; i++) {
+ (test(list[i], i, list) ? list1 : list2).push(list[i]);
+ }
+
+ return [list1, list2];
+}
+
+const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;
+var flow = (superClass => class extends superClass {
+ constructor(...args) {
+ super(...args);
+ this.flowPragma = undefined;
+ }
+
+ getScopeHandler() {
+ return FlowScopeHandler;
+ }
+
+ shouldParseTypes() {
+ return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
+ }
+
+ shouldParseEnums() {
+ return !!this.getPluginOption("flow", "enums");
+ }
+
+ finishToken(type, val) {
+ if (type !== 123 && type !== 13 && type !== 26) {
+ if (this.flowPragma === undefined) {
+ this.flowPragma = null;
+ }
+ }
+
+ return super.finishToken(type, val);
+ }
+
+ addComment(comment) {
+ if (this.flowPragma === undefined) {
+ const matches = FLOW_PRAGMA_REGEX.exec(comment.value);
+
+ if (!matches) ; else if (matches[1] === "flow") {
+ this.flowPragma = "flow";
+ } else if (matches[1] === "noflow") {
+ this.flowPragma = "noflow";
+ } else {
+ throw new Error("Unexpected flow pragma");
+ }
+ }
+
+ return super.addComment(comment);
+ }
+
+ flowParseTypeInitialiser(tok) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(tok || 14);
+ const type = this.flowParseType();
+ this.state.inType = oldInType;
+ return type;
+ }
+
+ flowParsePredicate() {
+ const node = this.startNode();
+ const moduloPos = this.state.start;
+ this.next();
+ this.expectContextual(101);
+
+ if (this.state.lastTokStart > moduloPos + 1) {
+ this.raise(moduloPos, FlowErrors.UnexpectedSpaceBetweenModuloChecks);
+ }
+
+ if (this.eat(10)) {
+ node.value = this.parseExpression();
+ this.expect(11);
+ return this.finishNode(node, "DeclaredPredicate");
+ } else {
+ return this.finishNode(node, "InferredPredicate");
+ }
+ }
+
+ flowParseTypeAndPredicateInitialiser() {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(14);
+ let type = null;
+ let predicate = null;
+
+ if (this.match(48)) {
+ this.state.inType = oldInType;
+ predicate = this.flowParsePredicate();
+ } else {
+ type = this.flowParseType();
+ this.state.inType = oldInType;
+
+ if (this.match(48)) {
+ predicate = this.flowParsePredicate();
+ }
+ }
+
+ return [type, predicate];
+ }
+
+ flowParseDeclareClass(node) {
+ this.next();
+ this.flowParseInterfaceish(node, true);
+ return this.finishNode(node, "DeclareClass");
+ }
+
+ flowParseDeclareFunction(node) {
+ this.next();
+ const id = node.id = this.parseIdentifier();
+ const typeNode = this.startNode();
+ const typeContainer = this.startNode();
+
+ if (this.match(43)) {
+ typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ typeNode.typeParameters = null;
+ }
+
+ this.expect(10);
+ const tmp = this.flowParseFunctionTypeParams();
+ typeNode.params = tmp.params;
+ typeNode.rest = tmp.rest;
+ typeNode.this = tmp._this;
+ this.expect(11);
+ [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
+ id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
+ this.resetEndLocation(id);
+ this.semicolon();
+ this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.start);
+ return this.finishNode(node, "DeclareFunction");
+ }
+
+ flowParseDeclare(node, insideModule) {
+ if (this.match(74)) {
+ return this.flowParseDeclareClass(node);
+ } else if (this.match(62)) {
+ return this.flowParseDeclareFunction(node);
+ } else if (this.match(68)) {
+ return this.flowParseDeclareVariable(node);
+ } else if (this.eatContextual(117)) {
+ if (this.match(16)) {
+ return this.flowParseDeclareModuleExports(node);
+ } else {
+ if (insideModule) {
+ this.raise(this.state.lastTokStart, FlowErrors.NestedDeclareModule);
+ }
+
+ return this.flowParseDeclareModule(node);
+ }
+ } else if (this.isContextual(120)) {
+ return this.flowParseDeclareTypeAlias(node);
+ } else if (this.isContextual(121)) {
+ return this.flowParseDeclareOpaqueType(node);
+ } else if (this.isContextual(119)) {
+ return this.flowParseDeclareInterface(node);
+ } else if (this.match(76)) {
+ return this.flowParseDeclareExportDeclaration(node, insideModule);
+ } else {
+ throw this.unexpected();
+ }
+ }
+
+ flowParseDeclareVariable(node) {
+ this.next();
+ node.id = this.flowParseTypeAnnotatableIdentifier(true);
+ this.scope.declareName(node.id.name, BIND_VAR, node.id.start);
+ this.semicolon();
+ return this.finishNode(node, "DeclareVariable");
+ }
+
+ flowParseDeclareModule(node) {
+ this.scope.enter(SCOPE_OTHER);
+
+ if (this.match(123)) {
+ node.id = this.parseExprAtom();
+ } else {
+ node.id = this.parseIdentifier();
+ }
+
+ const bodyNode = node.body = this.startNode();
+ const body = bodyNode.body = [];
+ this.expect(5);
+
+ while (!this.match(8)) {
+ let bodyNode = this.startNode();
+
+ if (this.match(77)) {
+ this.next();
+
+ if (!this.isContextual(120) && !this.match(81)) {
+ this.raise(this.state.lastTokStart, FlowErrors.InvalidNonTypeImportInDeclareModule);
+ }
+
+ this.parseImport(bodyNode);
+ } else {
+ this.expectContextual(115, FlowErrors.UnsupportedStatementInDeclareModule);
+ bodyNode = this.flowParseDeclare(bodyNode, true);
+ }
+
+ body.push(bodyNode);
+ }
+
+ this.scope.exit();
+ this.expect(8);
+ this.finishNode(bodyNode, "BlockStatement");
+ let kind = null;
+ let hasModuleExport = false;
+ body.forEach(bodyElement => {
+ if (isEsModuleType(bodyElement)) {
+ if (kind === "CommonJS") {
+ this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind);
+ }
+
+ kind = "ES";
+ } else if (bodyElement.type === "DeclareModuleExports") {
+ if (hasModuleExport) {
+ this.raise(bodyElement.start, FlowErrors.DuplicateDeclareModuleExports);
+ }
+
+ if (kind === "ES") {
+ this.raise(bodyElement.start, FlowErrors.AmbiguousDeclareModuleKind);
+ }
+
+ kind = "CommonJS";
+ hasModuleExport = true;
+ }
+ });
+ node.kind = kind || "CommonJS";
+ return this.finishNode(node, "DeclareModule");
+ }
+
+ flowParseDeclareExportDeclaration(node, insideModule) {
+ this.expect(76);
+
+ if (this.eat(59)) {
+ if (this.match(62) || this.match(74)) {
+ node.declaration = this.flowParseDeclare(this.startNode());
+ } else {
+ node.declaration = this.flowParseType();
+ this.semicolon();
+ }
+
+ node.default = true;
+ return this.finishNode(node, "DeclareExportDeclaration");
+ } else {
+ if (this.match(69) || this.isLet() || (this.isContextual(120) || this.isContextual(119)) && !insideModule) {
+ const label = this.state.value;
+ const suggestion = exportSuggestions[label];
+ throw this.raise(this.state.start, FlowErrors.UnsupportedDeclareExportKind, label, suggestion);
+ }
+
+ if (this.match(68) || this.match(62) || this.match(74) || this.isContextual(121)) {
+ node.declaration = this.flowParseDeclare(this.startNode());
+ node.default = false;
+ return this.finishNode(node, "DeclareExportDeclaration");
+ } else if (this.match(49) || this.match(5) || this.isContextual(119) || this.isContextual(120) || this.isContextual(121)) {
+ node = this.parseExport(node);
+
+ if (node.type === "ExportNamedDeclaration") {
+ node.type = "ExportDeclaration";
+ node.default = false;
+ delete node.exportKind;
+ }
+
+ node.type = "Declare" + node.type;
+ return node;
+ }
+ }
+
+ throw this.unexpected();
+ }
+
+ flowParseDeclareModuleExports(node) {
+ this.next();
+ this.expectContextual(102);
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ this.semicolon();
+ return this.finishNode(node, "DeclareModuleExports");
+ }
+
+ flowParseDeclareTypeAlias(node) {
+ this.next();
+ this.flowParseTypeAlias(node);
+ node.type = "DeclareTypeAlias";
+ return node;
+ }
+
+ flowParseDeclareOpaqueType(node) {
+ this.next();
+ this.flowParseOpaqueType(node, true);
+ node.type = "DeclareOpaqueType";
+ return node;
+ }
+
+ flowParseDeclareInterface(node) {
+ this.next();
+ this.flowParseInterfaceish(node);
+ return this.finishNode(node, "DeclareInterface");
+ }
+
+ flowParseInterfaceish(node, isClass = false) {
+ node.id = this.flowParseRestrictedIdentifier(!isClass, true);
+ this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.start);
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+
+ node.extends = [];
+ node.implements = [];
+ node.mixins = [];
+
+ if (this.eat(75)) {
+ do {
+ node.extends.push(this.flowParseInterfaceExtends());
+ } while (!isClass && this.eat(12));
+ }
+
+ if (this.isContextual(108)) {
+ this.next();
+
+ do {
+ node.mixins.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+
+ if (this.isContextual(104)) {
+ this.next();
+
+ do {
+ node.implements.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+
+ node.body = this.flowParseObjectType({
+ allowStatic: isClass,
+ allowExact: false,
+ allowSpread: false,
+ allowProto: isClass,
+ allowInexact: false
+ });
+ }
+
+ flowParseInterfaceExtends() {
+ const node = this.startNode();
+ node.id = this.flowParseQualifiedTypeIdentifier();
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+
+ return this.finishNode(node, "InterfaceExtends");
+ }
+
+ flowParseInterface(node) {
+ this.flowParseInterfaceish(node);
+ return this.finishNode(node, "InterfaceDeclaration");
+ }
+
+ checkNotUnderscore(word) {
+ if (word === "_") {
+ this.raise(this.state.start, FlowErrors.UnexpectedReservedUnderscore);
+ }
+ }
+
+ checkReservedType(word, startLoc, declaration) {
+ if (!reservedTypes.has(word)) return;
+ this.raise(startLoc, declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, word);
+ }
+
+ flowParseRestrictedIdentifier(liberal, declaration) {
+ this.checkReservedType(this.state.value, this.state.start, declaration);
+ return this.parseIdentifier(liberal);
+ }
+
+ flowParseTypeAlias(node) {
+ node.id = this.flowParseRestrictedIdentifier(false, true);
+ this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+
+ node.right = this.flowParseTypeInitialiser(27);
+ this.semicolon();
+ return this.finishNode(node, "TypeAlias");
+ }
+
+ flowParseOpaqueType(node, declare) {
+ this.expectContextual(120);
+ node.id = this.flowParseRestrictedIdentifier(true, true);
+ this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.start);
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+
+ node.supertype = null;
+
+ if (this.match(14)) {
+ node.supertype = this.flowParseTypeInitialiser(14);
+ }
+
+ node.impltype = null;
+
+ if (!declare) {
+ node.impltype = this.flowParseTypeInitialiser(27);
+ }
+
+ this.semicolon();
+ return this.finishNode(node, "OpaqueType");
+ }
+
+ flowParseTypeParameter(requireDefault = false) {
+ const nodeStart = this.state.start;
+ const node = this.startNode();
+ const variance = this.flowParseVariance();
+ const ident = this.flowParseTypeAnnotatableIdentifier();
+ node.name = ident.name;
+ node.variance = variance;
+ node.bound = ident.typeAnnotation;
+
+ if (this.match(27)) {
+ this.eat(27);
+ node.default = this.flowParseType();
+ } else {
+ if (requireDefault) {
+ this.raise(nodeStart, FlowErrors.MissingTypeParamDefault);
+ }
+ }
+
+ return this.finishNode(node, "TypeParameter");
+ }
+
+ flowParseTypeParameterDeclaration() {
+ const oldInType = this.state.inType;
+ const node = this.startNode();
+ node.params = [];
+ this.state.inType = true;
+
+ if (this.match(43) || this.match(132)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+
+ let defaultRequired = false;
+
+ do {
+ const typeParameter = this.flowParseTypeParameter(defaultRequired);
+ node.params.push(typeParameter);
+
+ if (typeParameter.default) {
+ defaultRequired = true;
+ }
+
+ if (!this.match(44)) {
+ this.expect(12);
+ }
+ } while (!this.match(44));
+
+ this.expect(44);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterDeclaration");
+ }
+
+ flowParseTypeParameterInstantiation() {
+ const node = this.startNode();
+ const oldInType = this.state.inType;
+ node.params = [];
+ this.state.inType = true;
+ this.expect(43);
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = false;
+
+ while (!this.match(44)) {
+ node.params.push(this.flowParseType());
+
+ if (!this.match(44)) {
+ this.expect(12);
+ }
+ }
+
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ this.expect(44);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterInstantiation");
+ }
+
+ flowParseTypeParameterInstantiationCallOrNew() {
+ const node = this.startNode();
+ const oldInType = this.state.inType;
+ node.params = [];
+ this.state.inType = true;
+ this.expect(43);
+
+ while (!this.match(44)) {
+ node.params.push(this.flowParseTypeOrImplicitInstantiation());
+
+ if (!this.match(44)) {
+ this.expect(12);
+ }
+ }
+
+ this.expect(44);
+ this.state.inType = oldInType;
+ return this.finishNode(node, "TypeParameterInstantiation");
+ }
+
+ flowParseInterfaceType() {
+ const node = this.startNode();
+ this.expectContextual(119);
+ node.extends = [];
+
+ if (this.eat(75)) {
+ do {
+ node.extends.push(this.flowParseInterfaceExtends());
+ } while (this.eat(12));
+ }
+
+ node.body = this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: false,
+ allowSpread: false,
+ allowProto: false,
+ allowInexact: false
+ });
+ return this.finishNode(node, "InterfaceTypeAnnotation");
+ }
+
+ flowParseObjectPropertyKey() {
+ return this.match(124) || this.match(123) ? this.parseExprAtom() : this.parseIdentifier(true);
+ }
+
+ flowParseObjectTypeIndexer(node, isStatic, variance) {
+ node.static = isStatic;
+
+ if (this.lookahead().type === 14) {
+ node.id = this.flowParseObjectPropertyKey();
+ node.key = this.flowParseTypeInitialiser();
+ } else {
+ node.id = null;
+ node.key = this.flowParseType();
+ }
+
+ this.expect(3);
+ node.value = this.flowParseTypeInitialiser();
+ node.variance = variance;
+ return this.finishNode(node, "ObjectTypeIndexer");
+ }
+
+ flowParseObjectTypeInternalSlot(node, isStatic) {
+ node.static = isStatic;
+ node.id = this.flowParseObjectPropertyKey();
+ this.expect(3);
+ this.expect(3);
+
+ if (this.match(43) || this.match(10)) {
+ node.method = true;
+ node.optional = false;
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));
+ } else {
+ node.method = false;
+
+ if (this.eat(17)) {
+ node.optional = true;
+ }
+
+ node.value = this.flowParseTypeInitialiser();
+ }
+
+ return this.finishNode(node, "ObjectTypeInternalSlot");
+ }
+
+ flowParseObjectTypeMethodish(node) {
+ node.params = [];
+ node.rest = null;
+ node.typeParameters = null;
+ node.this = null;
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+
+ this.expect(10);
+
+ if (this.match(72)) {
+ node.this = this.flowParseFunctionTypeParam(true);
+ node.this.name = null;
+
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+
+ while (!this.match(11) && !this.match(21)) {
+ node.params.push(this.flowParseFunctionTypeParam(false));
+
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+
+ if (this.eat(21)) {
+ node.rest = this.flowParseFunctionTypeParam(false);
+ }
+
+ this.expect(11);
+ node.returnType = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+
+ flowParseObjectTypeCallProperty(node, isStatic) {
+ const valueNode = this.startNode();
+ node.static = isStatic;
+ node.value = this.flowParseObjectTypeMethodish(valueNode);
+ return this.finishNode(node, "ObjectTypeCallProperty");
+ }
+
+ flowParseObjectType({
+ allowStatic,
+ allowExact,
+ allowSpread,
+ allowProto,
+ allowInexact
+ }) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ const nodeStart = this.startNode();
+ nodeStart.callProperties = [];
+ nodeStart.properties = [];
+ nodeStart.indexers = [];
+ nodeStart.internalSlots = [];
+ let endDelim;
+ let exact;
+ let inexact = false;
+
+ if (allowExact && this.match(6)) {
+ this.expect(6);
+ endDelim = 9;
+ exact = true;
+ } else {
+ this.expect(5);
+ endDelim = 8;
+ exact = false;
+ }
+
+ nodeStart.exact = exact;
+
+ while (!this.match(endDelim)) {
+ let isStatic = false;
+ let protoStart = null;
+ let inexactStart = null;
+ const node = this.startNode();
+
+ if (allowProto && this.isContextual(109)) {
+ const lookahead = this.lookahead();
+
+ if (lookahead.type !== 14 && lookahead.type !== 17) {
+ this.next();
+ protoStart = this.state.start;
+ allowStatic = false;
+ }
+ }
+
+ if (allowStatic && this.isContextual(98)) {
+ const lookahead = this.lookahead();
+
+ if (lookahead.type !== 14 && lookahead.type !== 17) {
+ this.next();
+ isStatic = true;
+ }
+ }
+
+ const variance = this.flowParseVariance();
+
+ if (this.eat(0)) {
+ if (protoStart != null) {
+ this.unexpected(protoStart);
+ }
+
+ if (this.eat(0)) {
+ if (variance) {
+ this.unexpected(variance.start);
+ }
+
+ nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));
+ } else {
+ nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));
+ }
+ } else if (this.match(10) || this.match(43)) {
+ if (protoStart != null) {
+ this.unexpected(protoStart);
+ }
+
+ if (variance) {
+ this.unexpected(variance.start);
+ }
+
+ nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));
+ } else {
+ let kind = "init";
+
+ if (this.isContextual(92) || this.isContextual(97)) {
+ const lookahead = this.lookahead();
+
+ if (tokenIsLiteralPropertyName(lookahead.type)) {
+ kind = this.state.value;
+ this.next();
+ }
+ }
+
+ const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);
+
+ if (propOrInexact === null) {
+ inexact = true;
+ inexactStart = this.state.lastTokStart;
+ } else {
+ nodeStart.properties.push(propOrInexact);
+ }
+ }
+
+ this.flowObjectTypeSemicolon();
+
+ if (inexactStart && !this.match(8) && !this.match(9)) {
+ this.raise(inexactStart, FlowErrors.UnexpectedExplicitInexactInObject);
+ }
+ }
+
+ this.expect(endDelim);
+
+ if (allowSpread) {
+ nodeStart.inexact = inexact;
+ }
+
+ const out = this.finishNode(nodeStart, "ObjectTypeAnnotation");
+ this.state.inType = oldInType;
+ return out;
+ }
+
+ flowParseObjectTypeProperty(node, isStatic, protoStart, variance, kind, allowSpread, allowInexact) {
+ if (this.eat(21)) {
+ const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);
+
+ if (isInexactToken) {
+ if (!allowSpread) {
+ this.raise(this.state.lastTokStart, FlowErrors.InexactInsideNonObject);
+ } else if (!allowInexact) {
+ this.raise(this.state.lastTokStart, FlowErrors.InexactInsideExact);
+ }
+
+ if (variance) {
+ this.raise(variance.start, FlowErrors.InexactVariance);
+ }
+
+ return null;
+ }
+
+ if (!allowSpread) {
+ this.raise(this.state.lastTokStart, FlowErrors.UnexpectedSpreadType);
+ }
+
+ if (protoStart != null) {
+ this.unexpected(protoStart);
+ }
+
+ if (variance) {
+ this.raise(variance.start, FlowErrors.SpreadVariance);
+ }
+
+ node.argument = this.flowParseType();
+ return this.finishNode(node, "ObjectTypeSpreadProperty");
+ } else {
+ node.key = this.flowParseObjectPropertyKey();
+ node.static = isStatic;
+ node.proto = protoStart != null;
+ node.kind = kind;
+ let optional = false;
+
+ if (this.match(43) || this.match(10)) {
+ node.method = true;
+
+ if (protoStart != null) {
+ this.unexpected(protoStart);
+ }
+
+ if (variance) {
+ this.unexpected(variance.start);
+ }
+
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.start, node.loc.start));
+
+ if (kind === "get" || kind === "set") {
+ this.flowCheckGetterSetterParams(node);
+ }
+
+ if (!allowSpread && node.key.name === "constructor" && node.value.this) {
+ this.raise(node.value.this.start, FlowErrors.ThisParamBannedInConstructor);
+ }
+ } else {
+ if (kind !== "init") this.unexpected();
+ node.method = false;
+
+ if (this.eat(17)) {
+ optional = true;
+ }
+
+ node.value = this.flowParseTypeInitialiser();
+ node.variance = variance;
+ }
+
+ node.optional = optional;
+ return this.finishNode(node, "ObjectTypeProperty");
+ }
+ }
+
+ flowCheckGetterSetterParams(property) {
+ const paramCount = property.kind === "get" ? 0 : 1;
+ const start = property.start;
+ const length = property.value.params.length + (property.value.rest ? 1 : 0);
+
+ if (property.value.this) {
+ this.raise(property.value.this.start, property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam);
+ }
+
+ if (length !== paramCount) {
+ if (property.kind === "get") {
+ this.raise(start, ErrorMessages.BadGetterArity);
+ } else {
+ this.raise(start, ErrorMessages.BadSetterArity);
+ }
+ }
+
+ if (property.kind === "set" && property.value.rest) {
+ this.raise(start, ErrorMessages.BadSetterRestParameter);
+ }
+ }
+
+ flowObjectTypeSemicolon() {
+ if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {
+ this.unexpected();
+ }
+ }
+
+ flowParseQualifiedTypeIdentifier(startPos, startLoc, id) {
+ startPos = startPos || this.state.start;
+ startLoc = startLoc || this.state.startLoc;
+ let node = id || this.flowParseRestrictedIdentifier(true);
+
+ while (this.eat(16)) {
+ const node2 = this.startNodeAt(startPos, startLoc);
+ node2.qualification = node;
+ node2.id = this.flowParseRestrictedIdentifier(true);
+ node = this.finishNode(node2, "QualifiedTypeIdentifier");
+ }
+
+ return node;
+ }
+
+ flowParseGenericType(startPos, startLoc, id) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.typeParameters = null;
+ node.id = this.flowParseQualifiedTypeIdentifier(startPos, startLoc, id);
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ }
+
+ return this.finishNode(node, "GenericTypeAnnotation");
+ }
+
+ flowParseTypeofType() {
+ const node = this.startNode();
+ this.expect(81);
+ node.argument = this.flowParsePrimaryType();
+ return this.finishNode(node, "TypeofTypeAnnotation");
+ }
+
+ flowParseTupleType() {
+ const node = this.startNode();
+ node.types = [];
+ this.expect(0);
+
+ while (this.state.pos < this.length && !this.match(3)) {
+ node.types.push(this.flowParseType());
+ if (this.match(3)) break;
+ this.expect(12);
+ }
+
+ this.expect(3);
+ return this.finishNode(node, "TupleTypeAnnotation");
+ }
+
+ flowParseFunctionTypeParam(first) {
+ let name = null;
+ let optional = false;
+ let typeAnnotation = null;
+ const node = this.startNode();
+ const lh = this.lookahead();
+ const isThis = this.state.type === 72;
+
+ if (lh.type === 14 || lh.type === 17) {
+ if (isThis && !first) {
+ this.raise(node.start, FlowErrors.ThisParamMustBeFirst);
+ }
+
+ name = this.parseIdentifier(isThis);
+
+ if (this.eat(17)) {
+ optional = true;
+
+ if (isThis) {
+ this.raise(node.start, FlowErrors.ThisParamMayNotBeOptional);
+ }
+ }
+
+ typeAnnotation = this.flowParseTypeInitialiser();
+ } else {
+ typeAnnotation = this.flowParseType();
+ }
+
+ node.name = name;
+ node.optional = optional;
+ node.typeAnnotation = typeAnnotation;
+ return this.finishNode(node, "FunctionTypeParam");
+ }
+
+ reinterpretTypeAsFunctionTypeParam(type) {
+ const node = this.startNodeAt(type.start, type.loc.start);
+ node.name = null;
+ node.optional = false;
+ node.typeAnnotation = type;
+ return this.finishNode(node, "FunctionTypeParam");
+ }
+
+ flowParseFunctionTypeParams(params = []) {
+ let rest = null;
+ let _this = null;
+
+ if (this.match(72)) {
+ _this = this.flowParseFunctionTypeParam(true);
+ _this.name = null;
+
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+
+ while (!this.match(11) && !this.match(21)) {
+ params.push(this.flowParseFunctionTypeParam(false));
+
+ if (!this.match(11)) {
+ this.expect(12);
+ }
+ }
+
+ if (this.eat(21)) {
+ rest = this.flowParseFunctionTypeParam(false);
+ }
+
+ return {
+ params,
+ rest,
+ _this
+ };
+ }
+
+ flowIdentToTypeAnnotation(startPos, startLoc, node, id) {
+ switch (id.name) {
+ case "any":
+ return this.finishNode(node, "AnyTypeAnnotation");
+
+ case "bool":
+ case "boolean":
+ return this.finishNode(node, "BooleanTypeAnnotation");
+
+ case "mixed":
+ return this.finishNode(node, "MixedTypeAnnotation");
+
+ case "empty":
+ return this.finishNode(node, "EmptyTypeAnnotation");
+
+ case "number":
+ return this.finishNode(node, "NumberTypeAnnotation");
+
+ case "string":
+ return this.finishNode(node, "StringTypeAnnotation");
+
+ case "symbol":
+ return this.finishNode(node, "SymbolTypeAnnotation");
+
+ default:
+ this.checkNotUnderscore(id.name);
+ return this.flowParseGenericType(startPos, startLoc, id);
+ }
+ }
+
+ flowParsePrimaryType() {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const node = this.startNode();
+ let tmp;
+ let type;
+ let isGroupedType = false;
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+
+ switch (this.state.type) {
+ case 5:
+ return this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: false,
+ allowSpread: true,
+ allowProto: false,
+ allowInexact: true
+ });
+
+ case 6:
+ return this.flowParseObjectType({
+ allowStatic: false,
+ allowExact: true,
+ allowSpread: true,
+ allowProto: false,
+ allowInexact: false
+ });
+
+ case 0:
+ this.state.noAnonFunctionType = false;
+ type = this.flowParseTupleType();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ return type;
+
+ case 43:
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ this.expect(10);
+ tmp = this.flowParseFunctionTypeParams();
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ node.this = tmp._this;
+ this.expect(11);
+ this.expect(19);
+ node.returnType = this.flowParseType();
+ return this.finishNode(node, "FunctionTypeAnnotation");
+
+ case 10:
+ this.next();
+
+ if (!this.match(11) && !this.match(21)) {
+ if (tokenIsIdentifier(this.state.type) || this.match(72)) {
+ const token = this.lookahead().type;
+ isGroupedType = token !== 17 && token !== 14;
+ } else {
+ isGroupedType = true;
+ }
+ }
+
+ if (isGroupedType) {
+ this.state.noAnonFunctionType = false;
+ type = this.flowParseType();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+
+ if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {
+ this.expect(11);
+ return type;
+ } else {
+ this.eat(12);
+ }
+ }
+
+ if (type) {
+ tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
+ } else {
+ tmp = this.flowParseFunctionTypeParams();
+ }
+
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ node.this = tmp._this;
+ this.expect(11);
+ this.expect(19);
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+ return this.finishNode(node, "FunctionTypeAnnotation");
+
+ case 123:
+ return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
+
+ case 79:
+ case 80:
+ node.value = this.match(79);
+ this.next();
+ return this.finishNode(node, "BooleanLiteralTypeAnnotation");
+
+ case 47:
+ if (this.state.value === "-") {
+ this.next();
+
+ if (this.match(124)) {
+ return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node);
+ }
+
+ if (this.match(125)) {
+ return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node);
+ }
+
+ throw this.raise(this.state.start, FlowErrors.UnexpectedSubtractionOperand);
+ }
+
+ throw this.unexpected();
+
+ case 124:
+ return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
+
+ case 125:
+ return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
+
+ case 82:
+ this.next();
+ return this.finishNode(node, "VoidTypeAnnotation");
+
+ case 78:
+ this.next();
+ return this.finishNode(node, "NullLiteralTypeAnnotation");
+
+ case 72:
+ this.next();
+ return this.finishNode(node, "ThisTypeAnnotation");
+
+ case 49:
+ this.next();
+ return this.finishNode(node, "ExistsTypeAnnotation");
+
+ case 81:
+ return this.flowParseTypeofType();
+
+ default:
+ if (tokenIsKeyword(this.state.type)) {
+ const label = tokenLabelName(this.state.type);
+ this.next();
+ return super.createIdentifier(node, label);
+ } else if (tokenIsIdentifier(this.state.type)) {
+ if (this.isContextual(119)) {
+ return this.flowParseInterfaceType();
+ }
+
+ return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());
+ }
+
+ }
+
+ throw this.unexpected();
+ }
+
+ flowParsePostfixType() {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ let type = this.flowParsePrimaryType();
+ let seenOptionalIndexedAccess = false;
+
+ while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {
+ const node = this.startNodeAt(startPos, startLoc);
+ const optional = this.eat(18);
+ seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;
+ this.expect(0);
+
+ if (!optional && this.match(3)) {
+ node.elementType = type;
+ this.next();
+ type = this.finishNode(node, "ArrayTypeAnnotation");
+ } else {
+ node.objectType = type;
+ node.indexType = this.flowParseType();
+ this.expect(3);
+
+ if (seenOptionalIndexedAccess) {
+ node.optional = optional;
+ type = this.finishNode(node, "OptionalIndexedAccessType");
+ } else {
+ type = this.finishNode(node, "IndexedAccessType");
+ }
+ }
+ }
+
+ return type;
+ }
+
+ flowParsePrefixType() {
+ const node = this.startNode();
+
+ if (this.eat(17)) {
+ node.typeAnnotation = this.flowParsePrefixType();
+ return this.finishNode(node, "NullableTypeAnnotation");
+ } else {
+ return this.flowParsePostfixType();
+ }
+ }
+
+ flowParseAnonFunctionWithoutParens() {
+ const param = this.flowParsePrefixType();
+
+ if (!this.state.noAnonFunctionType && this.eat(19)) {
+ const node = this.startNodeAt(param.start, param.loc.start);
+ node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
+ node.rest = null;
+ node.this = null;
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+
+ return param;
+ }
+
+ flowParseIntersectionType() {
+ const node = this.startNode();
+ this.eat(41);
+ const type = this.flowParseAnonFunctionWithoutParens();
+ node.types = [type];
+
+ while (this.eat(41)) {
+ node.types.push(this.flowParseAnonFunctionWithoutParens());
+ }
+
+ return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
+ }
+
+ flowParseUnionType() {
+ const node = this.startNode();
+ this.eat(39);
+ const type = this.flowParseIntersectionType();
+ node.types = [type];
+
+ while (this.eat(39)) {
+ node.types.push(this.flowParseIntersectionType());
+ }
+
+ return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");
+ }
+
+ flowParseType() {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+ const type = this.flowParseUnionType();
+ this.state.inType = oldInType;
+ return type;
+ }
+
+ flowParseTypeOrImplicitInstantiation() {
+ if (this.state.type === 122 && this.state.value === "_") {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const node = this.parseIdentifier();
+ return this.flowParseGenericType(startPos, startLoc, node);
+ } else {
+ return this.flowParseType();
+ }
+ }
+
+ flowParseTypeAnnotation() {
+ const node = this.startNode();
+ node.typeAnnotation = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "TypeAnnotation");
+ }
+
+ flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {
+ const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();
+
+ if (this.match(14)) {
+ ident.typeAnnotation = this.flowParseTypeAnnotation();
+ this.resetEndLocation(ident);
+ }
+
+ return ident;
+ }
+
+ typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end);
+ return node.expression;
+ }
+
+ flowParseVariance() {
+ let variance = null;
+
+ if (this.match(47)) {
+ variance = this.startNode();
+
+ if (this.state.value === "+") {
+ variance.kind = "plus";
+ } else {
+ variance.kind = "minus";
+ }
+
+ this.next();
+ this.finishNode(variance, "Variance");
+ }
+
+ return variance;
+ }
+
+ parseFunctionBody(node, allowExpressionBody, isMethod = false) {
+ if (allowExpressionBody) {
+ return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));
+ }
+
+ return super.parseFunctionBody(node, false, isMethod);
+ }
+
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ if (this.match(14)) {
+ const typeNode = this.startNode();
+ [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null;
+ }
+
+ super.parseFunctionBodyAndFinish(node, type, isMethod);
+ }
+
+ parseStatement(context, topLevel) {
+ if (this.state.strict && this.isContextual(119)) {
+ const lookahead = this.lookahead();
+
+ if (tokenIsKeywordOrIdentifier(lookahead.type)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseInterface(node);
+ }
+ } else if (this.shouldParseEnums() && this.isContextual(116)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(node);
+ }
+
+ const stmt = super.parseStatement(context, topLevel);
+
+ if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {
+ this.flowPragma = null;
+ }
+
+ return stmt;
+ }
+
+ parseExpressionStatement(node, expr) {
+ if (expr.type === "Identifier") {
+ if (expr.name === "declare") {
+ if (this.match(74) || tokenIsIdentifier(this.state.type) || this.match(62) || this.match(68) || this.match(76)) {
+ return this.flowParseDeclare(node);
+ }
+ } else if (tokenIsIdentifier(this.state.type)) {
+ if (expr.name === "interface") {
+ return this.flowParseInterface(node);
+ } else if (expr.name === "type") {
+ return this.flowParseTypeAlias(node);
+ } else if (expr.name === "opaque") {
+ return this.flowParseOpaqueType(node, false);
+ }
+ }
+ }
+
+ return super.parseExpressionStatement(node, expr);
+ }
+
+ shouldParseExportDeclaration() {
+ const {
+ type
+ } = this.state;
+
+ if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 116) {
+ return !this.state.containsEsc;
+ }
+
+ return super.shouldParseExportDeclaration();
+ }
+
+ isExportDefaultSpecifier() {
+ const {
+ type
+ } = this.state;
+
+ if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 116) {
+ return this.state.containsEsc;
+ }
+
+ return super.isExportDefaultSpecifier();
+ }
+
+ parseExportDefaultExpression() {
+ if (this.shouldParseEnums() && this.isContextual(116)) {
+ const node = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(node);
+ }
+
+ return super.parseExportDefaultExpression();
+ }
+
+ parseConditional(expr, startPos, startLoc, refExpressionErrors) {
+ if (!this.match(17)) return expr;
+
+ if (this.state.maybeInArrowParameters) {
+ const nextCh = this.lookaheadCharCode();
+
+ if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
+ this.setOptionalParametersError(refExpressionErrors);
+ return expr;
+ }
+ }
+
+ this.expect(17);
+ const state = this.state.clone();
+ const originalNoArrowAt = this.state.noArrowAt;
+ const node = this.startNodeAt(startPos, startLoc);
+ let {
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent();
+ let [valid, invalid] = this.getArrowLikeExpressions(consequent);
+
+ if (failed || invalid.length > 0) {
+ const noArrowAt = [...originalNoArrowAt];
+
+ if (invalid.length > 0) {
+ this.state = state;
+ this.state.noArrowAt = noArrowAt;
+
+ for (let i = 0; i < invalid.length; i++) {
+ noArrowAt.push(invalid[i].start);
+ }
+
+ ({
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent());
+ [valid, invalid] = this.getArrowLikeExpressions(consequent);
+ }
+
+ if (failed && valid.length > 1) {
+ this.raise(state.start, FlowErrors.AmbiguousConditionalArrow);
+ }
+
+ if (failed && valid.length === 1) {
+ this.state = state;
+ noArrowAt.push(valid[0].start);
+ this.state.noArrowAt = noArrowAt;
+ ({
+ consequent,
+ failed
+ } = this.tryParseConditionalConsequent());
+ }
+ }
+
+ this.getArrowLikeExpressions(consequent, true);
+ this.state.noArrowAt = originalNoArrowAt;
+ this.expect(14);
+ node.test = expr;
+ node.consequent = consequent;
+ node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined));
+ return this.finishNode(node, "ConditionalExpression");
+ }
+
+ tryParseConditionalConsequent() {
+ this.state.noArrowParamsConversionAt.push(this.state.start);
+ const consequent = this.parseMaybeAssignAllowIn();
+ const failed = !this.match(14);
+ this.state.noArrowParamsConversionAt.pop();
+ return {
+ consequent,
+ failed
+ };
+ }
+
+ getArrowLikeExpressions(node, disallowInvalid) {
+ const stack = [node];
+ const arrows = [];
+
+ while (stack.length !== 0) {
+ const node = stack.pop();
+
+ if (node.type === "ArrowFunctionExpression") {
+ if (node.typeParameters || !node.returnType) {
+ this.finishArrowValidation(node);
+ } else {
+ arrows.push(node);
+ }
+
+ stack.push(node.body);
+ } else if (node.type === "ConditionalExpression") {
+ stack.push(node.consequent);
+ stack.push(node.alternate);
+ }
+ }
+
+ if (disallowInvalid) {
+ arrows.forEach(node => this.finishArrowValidation(node));
+ return [arrows, []];
+ }
+
+ return partition(arrows, node => node.params.every(param => this.isAssignable(param, true)));
+ }
+
+ finishArrowValidation(node) {
+ var _node$extra;
+
+ this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingComma, false);
+ this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);
+ super.checkParams(node, false, true);
+ this.scope.exit();
+ }
+
+ forwardNoArrowParamsConversionAt(node, parse) {
+ let result;
+
+ if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {
+ this.state.noArrowParamsConversionAt.push(this.state.start);
+ result = parse();
+ this.state.noArrowParamsConversionAt.pop();
+ } else {
+ result = parse();
+ }
+
+ return result;
+ }
+
+ parseParenItem(node, startPos, startLoc) {
+ node = super.parseParenItem(node, startPos, startLoc);
+
+ if (this.eat(17)) {
+ node.optional = true;
+ this.resetEndLocation(node);
+ }
+
+ if (this.match(14)) {
+ const typeCastNode = this.startNodeAt(startPos, startLoc);
+ typeCastNode.expression = node;
+ typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();
+ return this.finishNode(typeCastNode, "TypeCastExpression");
+ }
+
+ return node;
+ }
+
+ assertModuleNodeAllowed(node) {
+ if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") {
+ return;
+ }
+
+ super.assertModuleNodeAllowed(node);
+ }
+
+ parseExport(node) {
+ const decl = super.parseExport(node);
+
+ if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") {
+ decl.exportKind = decl.exportKind || "value";
+ }
+
+ return decl;
+ }
+
+ parseExportDeclaration(node) {
+ if (this.isContextual(120)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+
+ if (this.match(5)) {
+ node.specifiers = this.parseExportSpecifiers(true);
+ this.parseExportFrom(node);
+ return null;
+ } else {
+ return this.flowParseTypeAlias(declarationNode);
+ }
+ } else if (this.isContextual(121)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseOpaqueType(declarationNode, false);
+ } else if (this.isContextual(119)) {
+ node.exportKind = "type";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseInterface(declarationNode);
+ } else if (this.shouldParseEnums() && this.isContextual(116)) {
+ node.exportKind = "value";
+ const declarationNode = this.startNode();
+ this.next();
+ return this.flowParseEnumDeclaration(declarationNode);
+ } else {
+ return super.parseExportDeclaration(node);
+ }
+ }
+
+ eatExportStar(node) {
+ if (super.eatExportStar(...arguments)) return true;
+
+ if (this.isContextual(120) && this.lookahead().type === 49) {
+ node.exportKind = "type";
+ this.next();
+ this.next();
+ return true;
+ }
+
+ return false;
+ }
+
+ maybeParseExportNamespaceSpecifier(node) {
+ const pos = this.state.start;
+ const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);
+
+ if (hasNamespace && node.exportKind === "type") {
+ this.unexpected(pos);
+ }
+
+ return hasNamespace;
+ }
+
+ parseClassId(node, isStatement, optionalId) {
+ super.parseClassId(node, isStatement, optionalId);
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ }
+
+ parseClassMember(classBody, member, state) {
+ const pos = this.state.start;
+
+ if (this.isContextual(115)) {
+ if (this.parseClassMemberFromModifier(classBody, member)) {
+ return;
+ }
+
+ member.declare = true;
+ }
+
+ super.parseClassMember(classBody, member, state);
+
+ if (member.declare) {
+ if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") {
+ this.raise(pos, FlowErrors.DeclareClassElement);
+ } else if (member.value) {
+ this.raise(member.value.start, FlowErrors.DeclareClassFieldInitializer);
+ }
+ }
+ }
+
+ isIterator(word) {
+ return word === "iterator" || word === "asyncIterator";
+ }
+
+ readIterator() {
+ const word = super.readWord1();
+ const fullWord = "@@" + word;
+
+ if (!this.isIterator(word) || !this.state.inType) {
+ this.raise(this.state.pos, ErrorMessages.InvalidIdentifier, fullWord);
+ }
+
+ this.finishToken(122, fullWord);
+ }
+
+ getTokenFromCode(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (code === 123 && next === 124) {
+ return this.finishOp(6, 2);
+ } else if (this.state.inType && (code === 62 || code === 60)) {
+ return this.finishOp(code === 62 ? 44 : 43, 1);
+ } else if (this.state.inType && code === 63) {
+ if (next === 46) {
+ return this.finishOp(18, 2);
+ }
+
+ return this.finishOp(17, 1);
+ } else if (isIteratorStart(code, next)) {
+ this.state.pos += 2;
+ return this.readIterator();
+ } else {
+ return super.getTokenFromCode(code);
+ }
+ }
+
+ isAssignable(node, isBinding) {
+ if (node.type === "TypeCastExpression") {
+ return this.isAssignable(node.expression, isBinding);
+ } else {
+ return super.isAssignable(node, isBinding);
+ }
+ }
+
+ toAssignable(node, isLHS = false) {
+ if (node.type === "TypeCastExpression") {
+ return super.toAssignable(this.typeCastToParameter(node), isLHS);
+ } else {
+ return super.toAssignable(node, isLHS);
+ }
+ }
+
+ toAssignableList(exprList, trailingCommaPos, isLHS) {
+ for (let i = 0; i < exprList.length; i++) {
+ const expr = exprList[i];
+
+ if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") {
+ exprList[i] = this.typeCastToParameter(expr);
+ }
+ }
+
+ return super.toAssignableList(exprList, trailingCommaPos, isLHS);
+ }
+
+ toReferencedList(exprList, isParenthesizedExpr) {
+ for (let i = 0; i < exprList.length; i++) {
+ var _expr$extra;
+
+ const expr = exprList[i];
+
+ if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
+ this.raise(expr.typeAnnotation.start, FlowErrors.TypeCastInPattern);
+ }
+ }
+
+ return exprList;
+ }
+
+ parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
+ const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors);
+
+ if (canBePattern && !this.state.maybeInArrowParameters) {
+ this.toReferencedList(node.elements);
+ }
+
+ return node;
+ }
+
+ checkLVal(expr, ...args) {
+ if (expr.type !== "TypeCastExpression") {
+ return super.checkLVal(expr, ...args);
+ }
+ }
+
+ parseClassProperty(node) {
+ if (this.match(14)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+
+ return super.parseClassProperty(node);
+ }
+
+ parseClassPrivateProperty(node) {
+ if (this.match(14)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+
+ return super.parseClassPrivateProperty(node);
+ }
+
+ isClassMethod() {
+ return this.match(43) || super.isClassMethod();
+ }
+
+ isClassProperty() {
+ return this.match(14) || super.isClassProperty();
+ }
+
+ isNonstaticConstructor(method) {
+ return !this.match(14) && super.isNonstaticConstructor(method);
+ }
+
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ if (method.variance) {
+ this.unexpected(method.variance.start);
+ }
+
+ delete method.variance;
+
+ if (this.match(43)) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+
+ super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
+
+ if (method.params && isConstructor) {
+ const params = method.params;
+
+ if (params.length > 0 && this.isThisParam(params[0])) {
+ this.raise(method.start, FlowErrors.ThisParamBannedInConstructor);
+ }
+ } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) {
+ const params = method.value.params;
+
+ if (params.length > 0 && this.isThisParam(params[0])) {
+ this.raise(method.start, FlowErrors.ThisParamBannedInConstructor);
+ }
+ }
+ }
+
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ if (method.variance) {
+ this.unexpected(method.variance.start);
+ }
+
+ delete method.variance;
+
+ if (this.match(43)) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+
+ super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
+ }
+
+ parseClassSuper(node) {
+ super.parseClassSuper(node);
+
+ if (node.superClass && this.match(43)) {
+ node.superTypeParameters = this.flowParseTypeParameterInstantiation();
+ }
+
+ if (this.isContextual(104)) {
+ this.next();
+ const implemented = node.implements = [];
+
+ do {
+ const node = this.startNode();
+ node.id = this.flowParseRestrictedIdentifier(true);
+
+ if (this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+
+ implemented.push(this.finishNode(node, "ClassImplements"));
+ } while (this.eat(12));
+ }
+ }
+
+ checkGetterSetterParams(method) {
+ super.checkGetterSetterParams(method);
+ const params = this.getObjectOrClassMethodParams(method);
+
+ if (params.length > 0) {
+ const param = params[0];
+
+ if (this.isThisParam(param) && method.kind === "get") {
+ this.raise(param.start, FlowErrors.GetterMayNotHaveThisParam);
+ } else if (this.isThisParam(param)) {
+ this.raise(param.start, FlowErrors.SetterMayNotHaveThisParam);
+ }
+ }
+ }
+
+ parsePropertyNamePrefixOperator(node) {
+ node.variance = this.flowParseVariance();
+ }
+
+ parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ if (prop.variance) {
+ this.unexpected(prop.variance.start);
+ }
+
+ delete prop.variance;
+ let typeParameters;
+
+ if (this.match(43) && !isAccessor) {
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ if (!this.match(10)) this.unexpected();
+ }
+
+ super.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
+
+ if (typeParameters) {
+ (prop.value || prop).typeParameters = typeParameters;
+ }
+ }
+
+ parseAssignableListItemTypes(param) {
+ if (this.eat(17)) {
+ if (param.type !== "Identifier") {
+ this.raise(param.start, FlowErrors.PatternIsOptional);
+ }
+
+ if (this.isThisParam(param)) {
+ this.raise(param.start, FlowErrors.ThisParamMayNotBeOptional);
+ }
+
+ param.optional = true;
+ }
+
+ if (this.match(14)) {
+ param.typeAnnotation = this.flowParseTypeAnnotation();
+ } else if (this.isThisParam(param)) {
+ this.raise(param.start, FlowErrors.ThisParamAnnotationRequired);
+ }
+
+ if (this.match(27) && this.isThisParam(param)) {
+ this.raise(param.start, FlowErrors.ThisParamNoDefault);
+ }
+
+ this.resetEndLocation(param);
+ return param;
+ }
+
+ parseMaybeDefault(startPos, startLoc, left) {
+ const node = super.parseMaybeDefault(startPos, startLoc, left);
+
+ if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
+ this.raise(node.typeAnnotation.start, FlowErrors.TypeBeforeInitializer);
+ }
+
+ return node;
+ }
+
+ shouldParseDefaultImport(node) {
+ if (!hasTypeImportKind(node)) {
+ return super.shouldParseDefaultImport(node);
+ }
+
+ return isMaybeDefaultImport(this.state.type);
+ }
+
+ parseImportSpecifierLocal(node, specifier, type, contextDescription) {
+ specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
+ this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);
+ node.specifiers.push(this.finishNode(specifier, type));
+ }
+
+ maybeParseDefaultImportSpecifier(node) {
+ node.importKind = "value";
+ let kind = null;
+
+ if (this.match(81)) {
+ kind = "typeof";
+ } else if (this.isContextual(120)) {
+ kind = "type";
+ }
+
+ if (kind) {
+ const lh = this.lookahead();
+ const {
+ type
+ } = lh;
+
+ if (kind === "type" && type === 49) {
+ this.unexpected(lh.start);
+ }
+
+ if (isMaybeDefaultImport(type) || type === 5 || type === 49) {
+ this.next();
+ node.importKind = kind;
+ }
+ }
+
+ return super.maybeParseDefaultImportSpecifier(node);
+ }
+
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {
+ const firstIdent = specifier.imported;
+ let specifierTypeKind = null;
+
+ if (firstIdent.type === "Identifier") {
+ if (firstIdent.name === "type") {
+ specifierTypeKind = "type";
+ } else if (firstIdent.name === "typeof") {
+ specifierTypeKind = "typeof";
+ }
+ }
+
+ let isBinding = false;
+
+ if (this.isContextual(87) && !this.isLookaheadContextual("as")) {
+ const as_ident = this.parseIdentifier(true);
+
+ if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {
+ specifier.imported = as_ident;
+ specifier.importKind = specifierTypeKind;
+ specifier.local = cloneIdentifier(as_ident);
+ } else {
+ specifier.imported = firstIdent;
+ specifier.importKind = null;
+ specifier.local = this.parseIdentifier();
+ }
+ } else {
+ if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {
+ specifier.imported = this.parseIdentifier(true);
+ specifier.importKind = specifierTypeKind;
+ } else {
+ if (importedIsString) {
+ throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, firstIdent.value);
+ }
+
+ specifier.imported = firstIdent;
+ specifier.importKind = null;
+ }
+
+ if (this.eatContextual(87)) {
+ specifier.local = this.parseIdentifier();
+ } else {
+ isBinding = true;
+ specifier.local = cloneIdentifier(specifier.imported);
+ }
+ }
+
+ const specifierIsTypeImport = hasTypeImportKind(specifier);
+
+ if (isInTypeOnlyImport && specifierIsTypeImport) {
+ this.raise(specifier.start, FlowErrors.ImportTypeShorthandOnlyInPureImport);
+ }
+
+ if (isInTypeOnlyImport || specifierIsTypeImport) {
+ this.checkReservedType(specifier.local.name, specifier.local.start, true);
+ }
+
+ if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {
+ this.checkReservedWord(specifier.local.name, specifier.start, true, true);
+ }
+
+ this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL);
+ return this.finishNode(specifier, "ImportSpecifier");
+ }
+
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 72:
+ return this.parseIdentifier(true);
+
+ default:
+ return super.parseBindingAtom();
+ }
+ }
+
+ parseFunctionParams(node, allowModifiers) {
+ const kind = node.kind;
+
+ if (kind !== "get" && kind !== "set" && this.match(43)) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+
+ super.parseFunctionParams(node, allowModifiers);
+ }
+
+ parseVarId(decl, kind) {
+ super.parseVarId(decl, kind);
+
+ if (this.match(14)) {
+ decl.id.typeAnnotation = this.flowParseTypeAnnotation();
+ this.resetEndLocation(decl.id);
+ }
+ }
+
+ parseAsyncArrowFromCallExpression(node, call) {
+ if (this.match(14)) {
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = true;
+ node.returnType = this.flowParseTypeAnnotation();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ }
+
+ return super.parseAsyncArrowFromCallExpression(node, call);
+ }
+
+ shouldParseAsyncArrow() {
+ return this.match(14) || super.shouldParseAsyncArrow();
+ }
+
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ var _jsx;
+
+ let state = null;
+ let jsx;
+
+ if (this.hasPlugin("jsx") && (this.match(132) || this.match(43))) {
+ state = this.state.clone();
+ jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state);
+ if (!jsx.error) return jsx.node;
+ const {
+ context
+ } = this.state;
+ const curContext = context[context.length - 1];
+
+ if (curContext === types.j_oTag) {
+ context.length -= 2;
+ } else if (curContext === types.j_expr) {
+ context.length -= 1;
+ }
+ }
+
+ if ((_jsx = jsx) != null && _jsx.error || this.match(43)) {
+ var _jsx2, _jsx3;
+
+ state = state || this.state.clone();
+ let typeParameters;
+ const arrow = this.tryParse(abort => {
+ var _arrowExpression$extr;
+
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => {
+ const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ this.resetStartLocationFromNode(result, typeParameters);
+ return result;
+ });
+ if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();
+ const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);
+ if (expr.type !== "ArrowFunctionExpression") abort();
+ expr.typeParameters = typeParameters;
+ this.resetStartLocationFromNode(expr, typeParameters);
+ return arrowExpression;
+ }, state);
+ let arrowExpression = null;
+
+ if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") {
+ if (!arrow.error && !arrow.aborted) {
+ if (arrow.node.async) {
+ this.raise(typeParameters.start, FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction);
+ }
+
+ return arrow.node;
+ }
+
+ arrowExpression = arrow.node;
+ }
+
+ if ((_jsx2 = jsx) != null && _jsx2.node) {
+ this.state = jsx.failState;
+ return jsx.node;
+ }
+
+ if (arrowExpression) {
+ this.state = arrow.failState;
+ return arrowExpression;
+ }
+
+ if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;
+ if (arrow.thrown) throw arrow.error;
+ throw this.raise(typeParameters.start, FlowErrors.UnexpectedTokenAfterTypeParameter);
+ }
+
+ return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);
+ }
+
+ parseArrow(node) {
+ if (this.match(14)) {
+ const result = this.tryParse(() => {
+ const oldNoAnonFunctionType = this.state.noAnonFunctionType;
+ this.state.noAnonFunctionType = true;
+ const typeNode = this.startNode();
+ [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser();
+ this.state.noAnonFunctionType = oldNoAnonFunctionType;
+ if (this.canInsertSemicolon()) this.unexpected();
+ if (!this.match(19)) this.unexpected();
+ return typeNode;
+ });
+ if (result.thrown) return null;
+ if (result.error) this.state = result.failState;
+ node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null;
+ }
+
+ return super.parseArrow(node);
+ }
+
+ shouldParseArrow(params) {
+ return this.match(14) || super.shouldParseArrow(params);
+ }
+
+ setArrowFunctionParameters(node, params) {
+ if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {
+ node.params = params;
+ } else {
+ super.setArrowFunctionParameters(node, params);
+ }
+ }
+
+ checkParams(node, allowDuplicates, isArrowFunction) {
+ if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {
+ return;
+ }
+
+ for (let i = 0; i < node.params.length; i++) {
+ if (this.isThisParam(node.params[i]) && i > 0) {
+ this.raise(node.params[i].start, FlowErrors.ThisParamMustBeFirst);
+ }
+ }
+
+ return super.checkParams(...arguments);
+ }
+
+ parseParenAndDistinguishExpression(canBeArrow) {
+ return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);
+ }
+
+ parseSubscripts(base, startPos, startLoc, noCalls) {
+ if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startPos) !== -1) {
+ this.next();
+ const node = this.startNodeAt(startPos, startLoc);
+ node.callee = base;
+ node.arguments = this.parseCallExpressionArguments(11, false);
+ base = this.finishNode(node, "CallExpression");
+ } else if (base.type === "Identifier" && base.name === "async" && this.match(43)) {
+ const state = this.state.clone();
+ const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startPos, startLoc) || abort(), state);
+ if (!arrow.error && !arrow.aborted) return arrow.node;
+ const result = this.tryParse(() => super.parseSubscripts(base, startPos, startLoc, noCalls), state);
+ if (result.node && !result.error) return result.node;
+
+ if (arrow.node) {
+ this.state = arrow.failState;
+ return arrow.node;
+ }
+
+ if (result.node) {
+ this.state = result.failState;
+ return result.node;
+ }
+
+ throw arrow.error || result.error;
+ }
+
+ return super.parseSubscripts(base, startPos, startLoc, noCalls);
+ }
+
+ parseSubscript(base, startPos, startLoc, noCalls, subscriptState) {
+ if (this.match(18) && this.isLookaheadToken_lt()) {
+ subscriptState.optionalChainMember = true;
+
+ if (noCalls) {
+ subscriptState.stop = true;
+ return base;
+ }
+
+ this.next();
+ const node = this.startNodeAt(startPos, startLoc);
+ node.callee = base;
+ node.typeArguments = this.flowParseTypeParameterInstantiation();
+ this.expect(10);
+ node.arguments = this.parseCallExpressionArguments(11, false);
+ node.optional = true;
+ return this.finishCallExpression(node, true);
+ } else if (!noCalls && this.shouldParseTypes() && this.match(43)) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.callee = base;
+ const result = this.tryParse(() => {
+ node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew();
+ this.expect(10);
+ node.arguments = this.parseCallExpressionArguments(11, false);
+ if (subscriptState.optionalChainMember) node.optional = false;
+ return this.finishCallExpression(node, subscriptState.optionalChainMember);
+ });
+
+ if (result.node) {
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+ }
+
+ return super.parseSubscript(base, startPos, startLoc, noCalls, subscriptState);
+ }
+
+ parseNewArguments(node) {
+ let targs = null;
+
+ if (this.shouldParseTypes() && this.match(43)) {
+ targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node;
+ }
+
+ node.typeArguments = targs;
+ super.parseNewArguments(node);
+ }
+
+ parseAsyncArrowWithTypeParameters(startPos, startLoc) {
+ const node = this.startNodeAt(startPos, startLoc);
+ this.parseFunctionParams(node);
+ if (!this.parseArrow(node)) return;
+ return this.parseArrowExpression(node, undefined, true);
+ }
+
+ readToken_mult_modulo(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (code === 42 && next === 47 && this.state.hasFlowComment) {
+ this.state.hasFlowComment = false;
+ this.state.pos += 2;
+ this.nextToken();
+ return;
+ }
+
+ super.readToken_mult_modulo(code);
+ }
+
+ readToken_pipe_amp(code) {
+ const next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (code === 124 && next === 125) {
+ this.finishOp(9, 2);
+ return;
+ }
+
+ super.readToken_pipe_amp(code);
+ }
+
+ parseTopLevel(file, program) {
+ const fileNode = super.parseTopLevel(file, program);
+
+ if (this.state.hasFlowComment) {
+ this.raise(this.state.pos, FlowErrors.UnterminatedFlowComment);
+ }
+
+ return fileNode;
+ }
+
+ skipBlockComment() {
+ if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
+ if (this.state.hasFlowComment) {
+ this.unexpected(null, FlowErrors.NestedFlowComment);
+ }
+
+ this.hasFlowCommentCompletion();
+ this.state.pos += this.skipFlowComment();
+ this.state.hasFlowComment = true;
+ return;
+ }
+
+ if (this.state.hasFlowComment) {
+ const end = this.input.indexOf("*-/", this.state.pos += 2);
+
+ if (end === -1) {
+ throw this.raise(this.state.pos - 2, ErrorMessages.UnterminatedComment);
+ }
+
+ this.state.pos = end + 3;
+ return;
+ }
+
+ return super.skipBlockComment();
+ }
+
+ skipFlowComment() {
+ const {
+ pos
+ } = this.state;
+ let shiftToFirstNonWhiteSpace = 2;
+
+ while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {
+ shiftToFirstNonWhiteSpace++;
+ }
+
+ const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);
+ const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);
+
+ if (ch2 === 58 && ch3 === 58) {
+ return shiftToFirstNonWhiteSpace + 2;
+ }
+
+ if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") {
+ return shiftToFirstNonWhiteSpace + 12;
+ }
+
+ if (ch2 === 58 && ch3 !== 58) {
+ return shiftToFirstNonWhiteSpace;
+ }
+
+ return false;
+ }
+
+ hasFlowCommentCompletion() {
+ const end = this.input.indexOf("*/", this.state.pos);
+
+ if (end === -1) {
+ throw this.raise(this.state.pos, ErrorMessages.UnterminatedComment);
+ }
+ }
+
+ flowEnumErrorBooleanMemberNotInitialized(pos, {
+ enumName,
+ memberName
+ }) {
+ this.raise(pos, FlowErrors.EnumBooleanMemberNotInitialized, memberName, enumName);
+ }
+
+ flowEnumErrorInvalidMemberName(pos, {
+ enumName,
+ memberName
+ }) {
+ const suggestion = memberName[0].toUpperCase() + memberName.slice(1);
+ this.raise(pos, FlowErrors.EnumInvalidMemberName, memberName, suggestion, enumName);
+ }
+
+ flowEnumErrorDuplicateMemberName(pos, {
+ enumName,
+ memberName
+ }) {
+ this.raise(pos, FlowErrors.EnumDuplicateMemberName, memberName, enumName);
+ }
+
+ flowEnumErrorInconsistentMemberValues(pos, {
+ enumName
+ }) {
+ this.raise(pos, FlowErrors.EnumInconsistentMemberValues, enumName);
+ }
+
+ flowEnumErrorInvalidExplicitType(pos, {
+ enumName,
+ suppliedType
+ }) {
+ return this.raise(pos, suppliedType === null ? FlowErrors.EnumInvalidExplicitTypeUnknownSupplied : FlowErrors.EnumInvalidExplicitType, enumName, suppliedType);
+ }
+
+ flowEnumErrorInvalidMemberInitializer(pos, {
+ enumName,
+ explicitType,
+ memberName
+ }) {
+ let message = null;
+
+ switch (explicitType) {
+ case "boolean":
+ case "number":
+ case "string":
+ message = FlowErrors.EnumInvalidMemberInitializerPrimaryType;
+ break;
+
+ case "symbol":
+ message = FlowErrors.EnumInvalidMemberInitializerSymbolType;
+ break;
+
+ default:
+ message = FlowErrors.EnumInvalidMemberInitializerUnknownType;
+ }
+
+ return this.raise(pos, message, enumName, memberName, explicitType);
+ }
+
+ flowEnumErrorNumberMemberNotInitialized(pos, {
+ enumName,
+ memberName
+ }) {
+ this.raise(pos, FlowErrors.EnumNumberMemberNotInitialized, enumName, memberName);
+ }
+
+ flowEnumErrorStringMemberInconsistentlyInitailized(pos, {
+ enumName
+ }) {
+ this.raise(pos, FlowErrors.EnumStringMemberInconsistentlyInitailized, enumName);
+ }
+
+ flowEnumMemberInit() {
+ const startPos = this.state.start;
+
+ const endOfInit = () => this.match(12) || this.match(8);
+
+ switch (this.state.type) {
+ case 124:
+ {
+ const literal = this.parseNumericLiteral(this.state.value);
+
+ if (endOfInit()) {
+ return {
+ type: "number",
+ pos: literal.start,
+ value: literal
+ };
+ }
+
+ return {
+ type: "invalid",
+ pos: startPos
+ };
+ }
+
+ case 123:
+ {
+ const literal = this.parseStringLiteral(this.state.value);
+
+ if (endOfInit()) {
+ return {
+ type: "string",
+ pos: literal.start,
+ value: literal
+ };
+ }
+
+ return {
+ type: "invalid",
+ pos: startPos
+ };
+ }
+
+ case 79:
+ case 80:
+ {
+ const literal = this.parseBooleanLiteral(this.match(79));
+
+ if (endOfInit()) {
+ return {
+ type: "boolean",
+ pos: literal.start,
+ value: literal
+ };
+ }
+
+ return {
+ type: "invalid",
+ pos: startPos
+ };
+ }
+
+ default:
+ return {
+ type: "invalid",
+ pos: startPos
+ };
+ }
+ }
+
+ flowEnumMemberRaw() {
+ const pos = this.state.start;
+ const id = this.parseIdentifier(true);
+ const init = this.eat(27) ? this.flowEnumMemberInit() : {
+ type: "none",
+ pos
+ };
+ return {
+ id,
+ init
+ };
+ }
+
+ flowEnumCheckExplicitTypeMismatch(pos, context, expectedType) {
+ const {
+ explicitType
+ } = context;
+
+ if (explicitType === null) {
+ return;
+ }
+
+ if (explicitType !== expectedType) {
+ this.flowEnumErrorInvalidMemberInitializer(pos, context);
+ }
+ }
+
+ flowEnumMembers({
+ enumName,
+ explicitType
+ }) {
+ const seenNames = new Set();
+ const members = {
+ booleanMembers: [],
+ numberMembers: [],
+ stringMembers: [],
+ defaultedMembers: []
+ };
+ let hasUnknownMembers = false;
+
+ while (!this.match(8)) {
+ if (this.eat(21)) {
+ hasUnknownMembers = true;
+ break;
+ }
+
+ const memberNode = this.startNode();
+ const {
+ id,
+ init
+ } = this.flowEnumMemberRaw();
+ const memberName = id.name;
+
+ if (memberName === "") {
+ continue;
+ }
+
+ if (/^[a-z]/.test(memberName)) {
+ this.flowEnumErrorInvalidMemberName(id.start, {
+ enumName,
+ memberName
+ });
+ }
+
+ if (seenNames.has(memberName)) {
+ this.flowEnumErrorDuplicateMemberName(id.start, {
+ enumName,
+ memberName
+ });
+ }
+
+ seenNames.add(memberName);
+ const context = {
+ enumName,
+ explicitType,
+ memberName
+ };
+ memberNode.id = id;
+
+ switch (init.type) {
+ case "boolean":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "boolean");
+ memberNode.init = init.value;
+ members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember"));
+ break;
+ }
+
+ case "number":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "number");
+ memberNode.init = init.value;
+ members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember"));
+ break;
+ }
+
+ case "string":
+ {
+ this.flowEnumCheckExplicitTypeMismatch(init.pos, context, "string");
+ memberNode.init = init.value;
+ members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember"));
+ break;
+ }
+
+ case "invalid":
+ {
+ throw this.flowEnumErrorInvalidMemberInitializer(init.pos, context);
+ }
+
+ case "none":
+ {
+ switch (explicitType) {
+ case "boolean":
+ this.flowEnumErrorBooleanMemberNotInitialized(init.pos, context);
+ break;
+
+ case "number":
+ this.flowEnumErrorNumberMemberNotInitialized(init.pos, context);
+ break;
+
+ default:
+ members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember"));
+ }
+ }
+ }
+
+ if (!this.match(8)) {
+ this.expect(12);
+ }
+ }
+
+ return {
+ members,
+ hasUnknownMembers
+ };
+ }
+
+ flowEnumStringMembers(initializedMembers, defaultedMembers, {
+ enumName
+ }) {
+ if (initializedMembers.length === 0) {
+ return defaultedMembers;
+ } else if (defaultedMembers.length === 0) {
+ return initializedMembers;
+ } else if (defaultedMembers.length > initializedMembers.length) {
+ for (const member of initializedMembers) {
+ this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {
+ enumName
+ });
+ }
+
+ return defaultedMembers;
+ } else {
+ for (const member of defaultedMembers) {
+ this.flowEnumErrorStringMemberInconsistentlyInitailized(member.start, {
+ enumName
+ });
+ }
+
+ return initializedMembers;
+ }
+ }
+
+ flowEnumParseExplicitType({
+ enumName
+ }) {
+ if (this.eatContextual(95)) {
+ if (!tokenIsIdentifier(this.state.type)) {
+ throw this.flowEnumErrorInvalidExplicitType(this.state.start, {
+ enumName,
+ suppliedType: null
+ });
+ }
+
+ const {
+ value
+ } = this.state;
+ this.next();
+
+ if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") {
+ this.flowEnumErrorInvalidExplicitType(this.state.start, {
+ enumName,
+ suppliedType: value
+ });
+ }
+
+ return value;
+ }
+
+ return null;
+ }
+
+ flowEnumBody(node, {
+ enumName,
+ nameLoc
+ }) {
+ const explicitType = this.flowEnumParseExplicitType({
+ enumName
+ });
+ this.expect(5);
+ const {
+ members,
+ hasUnknownMembers
+ } = this.flowEnumMembers({
+ enumName,
+ explicitType
+ });
+ node.hasUnknownMembers = hasUnknownMembers;
+
+ switch (explicitType) {
+ case "boolean":
+ node.explicitType = true;
+ node.members = members.booleanMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumBooleanBody");
+
+ case "number":
+ node.explicitType = true;
+ node.members = members.numberMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumNumberBody");
+
+ case "string":
+ node.explicitType = true;
+ node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
+ enumName
+ });
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+
+ case "symbol":
+ node.members = members.defaultedMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumSymbolBody");
+
+ default:
+ {
+ const empty = () => {
+ node.members = [];
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ };
+
+ node.explicitType = false;
+ const boolsLen = members.booleanMembers.length;
+ const numsLen = members.numberMembers.length;
+ const strsLen = members.stringMembers.length;
+ const defaultedLen = members.defaultedMembers.length;
+
+ if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {
+ return empty();
+ } else if (!boolsLen && !numsLen) {
+ node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
+ enumName
+ });
+ this.expect(8);
+ return this.finishNode(node, "EnumStringBody");
+ } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
+ for (const member of members.defaultedMembers) {
+ this.flowEnumErrorBooleanMemberNotInitialized(member.start, {
+ enumName,
+ memberName: member.id.name
+ });
+ }
+
+ node.members = members.booleanMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumBooleanBody");
+ } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
+ for (const member of members.defaultedMembers) {
+ this.flowEnumErrorNumberMemberNotInitialized(member.start, {
+ enumName,
+ memberName: member.id.name
+ });
+ }
+
+ node.members = members.numberMembers;
+ this.expect(8);
+ return this.finishNode(node, "EnumNumberBody");
+ } else {
+ this.flowEnumErrorInconsistentMemberValues(nameLoc, {
+ enumName
+ });
+ return empty();
+ }
+ }
+ }
+ }
+
+ flowParseEnumDeclaration(node) {
+ const id = this.parseIdentifier();
+ node.id = id;
+ node.body = this.flowEnumBody(this.startNode(), {
+ enumName: id.name,
+ nameLoc: id.start
+ });
+ return this.finishNode(node, "EnumDeclaration");
+ }
+
+ isLookaheadToken_lt() {
+ const next = this.nextTokenStart();
+
+ if (this.input.charCodeAt(next) === 60) {
+ const afterNext = this.input.charCodeAt(next + 1);
+ return afterNext !== 60 && afterNext !== 61;
+ }
+
+ return false;
+ }
+
+ maybeUnwrapTypeCastExpression(node) {
+ return node.type === "TypeCastExpression" ? node.expression : node;
+ }
+
+});
+
+const entities = {
+ quot: "\u0022",
+ amp: "&",
+ apos: "\u0027",
+ lt: "<",
+ gt: ">",
+ nbsp: "\u00A0",
+ iexcl: "\u00A1",
+ cent: "\u00A2",
+ pound: "\u00A3",
+ curren: "\u00A4",
+ yen: "\u00A5",
+ brvbar: "\u00A6",
+ sect: "\u00A7",
+ uml: "\u00A8",
+ copy: "\u00A9",
+ ordf: "\u00AA",
+ laquo: "\u00AB",
+ not: "\u00AC",
+ shy: "\u00AD",
+ reg: "\u00AE",
+ macr: "\u00AF",
+ deg: "\u00B0",
+ plusmn: "\u00B1",
+ sup2: "\u00B2",
+ sup3: "\u00B3",
+ acute: "\u00B4",
+ micro: "\u00B5",
+ para: "\u00B6",
+ middot: "\u00B7",
+ cedil: "\u00B8",
+ sup1: "\u00B9",
+ ordm: "\u00BA",
+ raquo: "\u00BB",
+ frac14: "\u00BC",
+ frac12: "\u00BD",
+ frac34: "\u00BE",
+ iquest: "\u00BF",
+ Agrave: "\u00C0",
+ Aacute: "\u00C1",
+ Acirc: "\u00C2",
+ Atilde: "\u00C3",
+ Auml: "\u00C4",
+ Aring: "\u00C5",
+ AElig: "\u00C6",
+ Ccedil: "\u00C7",
+ Egrave: "\u00C8",
+ Eacute: "\u00C9",
+ Ecirc: "\u00CA",
+ Euml: "\u00CB",
+ Igrave: "\u00CC",
+ Iacute: "\u00CD",
+ Icirc: "\u00CE",
+ Iuml: "\u00CF",
+ ETH: "\u00D0",
+ Ntilde: "\u00D1",
+ Ograve: "\u00D2",
+ Oacute: "\u00D3",
+ Ocirc: "\u00D4",
+ Otilde: "\u00D5",
+ Ouml: "\u00D6",
+ times: "\u00D7",
+ Oslash: "\u00D8",
+ Ugrave: "\u00D9",
+ Uacute: "\u00DA",
+ Ucirc: "\u00DB",
+ Uuml: "\u00DC",
+ Yacute: "\u00DD",
+ THORN: "\u00DE",
+ szlig: "\u00DF",
+ agrave: "\u00E0",
+ aacute: "\u00E1",
+ acirc: "\u00E2",
+ atilde: "\u00E3",
+ auml: "\u00E4",
+ aring: "\u00E5",
+ aelig: "\u00E6",
+ ccedil: "\u00E7",
+ egrave: "\u00E8",
+ eacute: "\u00E9",
+ ecirc: "\u00EA",
+ euml: "\u00EB",
+ igrave: "\u00EC",
+ iacute: "\u00ED",
+ icirc: "\u00EE",
+ iuml: "\u00EF",
+ eth: "\u00F0",
+ ntilde: "\u00F1",
+ ograve: "\u00F2",
+ oacute: "\u00F3",
+ ocirc: "\u00F4",
+ otilde: "\u00F5",
+ ouml: "\u00F6",
+ divide: "\u00F7",
+ oslash: "\u00F8",
+ ugrave: "\u00F9",
+ uacute: "\u00FA",
+ ucirc: "\u00FB",
+ uuml: "\u00FC",
+ yacute: "\u00FD",
+ thorn: "\u00FE",
+ yuml: "\u00FF",
+ OElig: "\u0152",
+ oelig: "\u0153",
+ Scaron: "\u0160",
+ scaron: "\u0161",
+ Yuml: "\u0178",
+ fnof: "\u0192",
+ circ: "\u02C6",
+ tilde: "\u02DC",
+ Alpha: "\u0391",
+ Beta: "\u0392",
+ Gamma: "\u0393",
+ Delta: "\u0394",
+ Epsilon: "\u0395",
+ Zeta: "\u0396",
+ Eta: "\u0397",
+ Theta: "\u0398",
+ Iota: "\u0399",
+ Kappa: "\u039A",
+ Lambda: "\u039B",
+ Mu: "\u039C",
+ Nu: "\u039D",
+ Xi: "\u039E",
+ Omicron: "\u039F",
+ Pi: "\u03A0",
+ Rho: "\u03A1",
+ Sigma: "\u03A3",
+ Tau: "\u03A4",
+ Upsilon: "\u03A5",
+ Phi: "\u03A6",
+ Chi: "\u03A7",
+ Psi: "\u03A8",
+ Omega: "\u03A9",
+ alpha: "\u03B1",
+ beta: "\u03B2",
+ gamma: "\u03B3",
+ delta: "\u03B4",
+ epsilon: "\u03B5",
+ zeta: "\u03B6",
+ eta: "\u03B7",
+ theta: "\u03B8",
+ iota: "\u03B9",
+ kappa: "\u03BA",
+ lambda: "\u03BB",
+ mu: "\u03BC",
+ nu: "\u03BD",
+ xi: "\u03BE",
+ omicron: "\u03BF",
+ pi: "\u03C0",
+ rho: "\u03C1",
+ sigmaf: "\u03C2",
+ sigma: "\u03C3",
+ tau: "\u03C4",
+ upsilon: "\u03C5",
+ phi: "\u03C6",
+ chi: "\u03C7",
+ psi: "\u03C8",
+ omega: "\u03C9",
+ thetasym: "\u03D1",
+ upsih: "\u03D2",
+ piv: "\u03D6",
+ ensp: "\u2002",
+ emsp: "\u2003",
+ thinsp: "\u2009",
+ zwnj: "\u200C",
+ zwj: "\u200D",
+ lrm: "\u200E",
+ rlm: "\u200F",
+ ndash: "\u2013",
+ mdash: "\u2014",
+ lsquo: "\u2018",
+ rsquo: "\u2019",
+ sbquo: "\u201A",
+ ldquo: "\u201C",
+ rdquo: "\u201D",
+ bdquo: "\u201E",
+ dagger: "\u2020",
+ Dagger: "\u2021",
+ bull: "\u2022",
+ hellip: "\u2026",
+ permil: "\u2030",
+ prime: "\u2032",
+ Prime: "\u2033",
+ lsaquo: "\u2039",
+ rsaquo: "\u203A",
+ oline: "\u203E",
+ frasl: "\u2044",
+ euro: "\u20AC",
+ image: "\u2111",
+ weierp: "\u2118",
+ real: "\u211C",
+ trade: "\u2122",
+ alefsym: "\u2135",
+ larr: "\u2190",
+ uarr: "\u2191",
+ rarr: "\u2192",
+ darr: "\u2193",
+ harr: "\u2194",
+ crarr: "\u21B5",
+ lArr: "\u21D0",
+ uArr: "\u21D1",
+ rArr: "\u21D2",
+ dArr: "\u21D3",
+ hArr: "\u21D4",
+ forall: "\u2200",
+ part: "\u2202",
+ exist: "\u2203",
+ empty: "\u2205",
+ nabla: "\u2207",
+ isin: "\u2208",
+ notin: "\u2209",
+ ni: "\u220B",
+ prod: "\u220F",
+ sum: "\u2211",
+ minus: "\u2212",
+ lowast: "\u2217",
+ radic: "\u221A",
+ prop: "\u221D",
+ infin: "\u221E",
+ ang: "\u2220",
+ and: "\u2227",
+ or: "\u2228",
+ cap: "\u2229",
+ cup: "\u222A",
+ int: "\u222B",
+ there4: "\u2234",
+ sim: "\u223C",
+ cong: "\u2245",
+ asymp: "\u2248",
+ ne: "\u2260",
+ equiv: "\u2261",
+ le: "\u2264",
+ ge: "\u2265",
+ sub: "\u2282",
+ sup: "\u2283",
+ nsub: "\u2284",
+ sube: "\u2286",
+ supe: "\u2287",
+ oplus: "\u2295",
+ otimes: "\u2297",
+ perp: "\u22A5",
+ sdot: "\u22C5",
+ lceil: "\u2308",
+ rceil: "\u2309",
+ lfloor: "\u230A",
+ rfloor: "\u230B",
+ lang: "\u2329",
+ rang: "\u232A",
+ loz: "\u25CA",
+ spades: "\u2660",
+ clubs: "\u2663",
+ hearts: "\u2665",
+ diams: "\u2666"
+};
+
+const HEX_NUMBER = /^[\da-fA-F]+$/;
+const DECIMAL_NUMBER = /^\d+$/;
+const JsxErrors = makeErrorTemplates({
+ AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",
+ MissingClosingTagElement: "Expected corresponding JSX closing tag for <%0>.",
+ MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.",
+ UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",
+ UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.",
+ UnterminatedJsxContent: "Unterminated JSX contents.",
+ UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"
+}, ErrorCodes.SyntaxError, "jsx");
+types.j_oTag = new TokContext("<tag");
+types.j_cTag = new TokContext("</tag");
+types.j_expr = new TokContext("<tag>...</tag>", true);
+
+function isFragment(object) {
+ return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false;
+}
+
+function getQualifiedJSXName(object) {
+ if (object.type === "JSXIdentifier") {
+ return object.name;
+ }
+
+ if (object.type === "JSXNamespacedName") {
+ return object.namespace.name + ":" + object.name.name;
+ }
+
+ if (object.type === "JSXMemberExpression") {
+ return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
+ }
+
+ throw new Error("Node had unexpected type: " + object.type);
+}
+
+var jsx = (superClass => class extends superClass {
+ jsxReadToken() {
+ let out = "";
+ let chunkStart = this.state.pos;
+
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(this.state.start, JsxErrors.UnterminatedJsxContent);
+ }
+
+ const ch = this.input.charCodeAt(this.state.pos);
+
+ switch (ch) {
+ case 60:
+ case 123:
+ if (this.state.pos === this.state.start) {
+ if (ch === 60 && this.state.canStartJSXElement) {
+ ++this.state.pos;
+ return this.finishToken(132);
+ }
+
+ return super.getTokenFromCode(ch);
+ }
+
+ out += this.input.slice(chunkStart, this.state.pos);
+ return this.finishToken(131, out);
+
+ case 38:
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ break;
+
+ case 62:
+ case 125:
+
+ default:
+ if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(true);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+
+ }
+ }
+ }
+
+ jsxReadNewLine(normalizeCRLF) {
+ const ch = this.input.charCodeAt(this.state.pos);
+ let out;
+ ++this.state.pos;
+
+ if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {
+ ++this.state.pos;
+ out = normalizeCRLF ? "\n" : "\r\n";
+ } else {
+ out = String.fromCharCode(ch);
+ }
+
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ return out;
+ }
+
+ jsxReadString(quote) {
+ let out = "";
+ let chunkStart = ++this.state.pos;
+
+ for (;;) {
+ if (this.state.pos >= this.length) {
+ throw this.raise(this.state.start, ErrorMessages.UnterminatedString);
+ }
+
+ const ch = this.input.charCodeAt(this.state.pos);
+ if (ch === quote) break;
+
+ if (ch === 38) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ } else if (isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(false);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+
+ out += this.input.slice(chunkStart, this.state.pos++);
+ return this.finishToken(123, out);
+ }
+
+ jsxReadEntity() {
+ let str = "";
+ let count = 0;
+ let entity;
+ let ch = this.input[this.state.pos];
+ const startPos = ++this.state.pos;
+
+ while (this.state.pos < this.length && count++ < 10) {
+ ch = this.input[this.state.pos++];
+
+ if (ch === ";") {
+ if (str[0] === "#") {
+ if (str[1] === "x") {
+ str = str.substr(2);
+
+ if (HEX_NUMBER.test(str)) {
+ entity = String.fromCodePoint(parseInt(str, 16));
+ }
+ } else {
+ str = str.substr(1);
+
+ if (DECIMAL_NUMBER.test(str)) {
+ entity = String.fromCodePoint(parseInt(str, 10));
+ }
+ }
+ } else {
+ entity = entities[str];
+ }
+
+ break;
+ }
+
+ str += ch;
+ }
+
+ if (!entity) {
+ this.state.pos = startPos;
+ return "&";
+ }
+
+ return entity;
+ }
+
+ jsxReadWord() {
+ let ch;
+ const start = this.state.pos;
+
+ do {
+ ch = this.input.charCodeAt(++this.state.pos);
+ } while (isIdentifierChar(ch) || ch === 45);
+
+ return this.finishToken(130, this.input.slice(start, this.state.pos));
+ }
+
+ jsxParseIdentifier() {
+ const node = this.startNode();
+
+ if (this.match(130)) {
+ node.name = this.state.value;
+ } else if (tokenIsKeyword(this.state.type)) {
+ node.name = tokenLabelName(this.state.type);
+ } else {
+ this.unexpected();
+ }
+
+ this.next();
+ return this.finishNode(node, "JSXIdentifier");
+ }
+
+ jsxParseNamespacedName() {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const name = this.jsxParseIdentifier();
+ if (!this.eat(14)) return name;
+ const node = this.startNodeAt(startPos, startLoc);
+ node.namespace = name;
+ node.name = this.jsxParseIdentifier();
+ return this.finishNode(node, "JSXNamespacedName");
+ }
+
+ jsxParseElementName() {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ let node = this.jsxParseNamespacedName();
+
+ if (node.type === "JSXNamespacedName") {
+ return node;
+ }
+
+ while (this.eat(16)) {
+ const newNode = this.startNodeAt(startPos, startLoc);
+ newNode.object = node;
+ newNode.property = this.jsxParseIdentifier();
+ node = this.finishNode(newNode, "JSXMemberExpression");
+ }
+
+ return node;
+ }
+
+ jsxParseAttributeValue() {
+ let node;
+
+ switch (this.state.type) {
+ case 5:
+ node = this.startNode();
+ this.next();
+ node = this.jsxParseExpressionContainer(node);
+
+ if (node.expression.type === "JSXEmptyExpression") {
+ this.raise(node.start, JsxErrors.AttributeIsEmpty);
+ }
+
+ return node;
+
+ case 132:
+ case 123:
+ return this.parseExprAtom();
+
+ default:
+ throw this.raise(this.state.start, JsxErrors.UnsupportedJsxValue);
+ }
+ }
+
+ jsxParseEmptyExpression() {
+ const node = this.startNodeAt(this.state.lastTokEnd, this.state.lastTokEndLoc);
+ return this.finishNodeAt(node, "JSXEmptyExpression", this.state.start, this.state.startLoc);
+ }
+
+ jsxParseSpreadChild(node) {
+ this.next();
+ node.expression = this.parseExpression();
+ this.expect(8);
+ return this.finishNode(node, "JSXSpreadChild");
+ }
+
+ jsxParseExpressionContainer(node) {
+ if (this.match(8)) {
+ node.expression = this.jsxParseEmptyExpression();
+ } else {
+ const expression = this.parseExpression();
+ node.expression = expression;
+ }
+
+ this.expect(8);
+ return this.finishNode(node, "JSXExpressionContainer");
+ }
+
+ jsxParseAttribute() {
+ const node = this.startNode();
+
+ if (this.eat(5)) {
+ this.expect(21);
+ node.argument = this.parseMaybeAssignAllowIn();
+ this.expect(8);
+ return this.finishNode(node, "JSXSpreadAttribute");
+ }
+
+ node.name = this.jsxParseNamespacedName();
+ node.value = this.eat(27) ? this.jsxParseAttributeValue() : null;
+ return this.finishNode(node, "JSXAttribute");
+ }
+
+ jsxParseOpeningElementAt(startPos, startLoc) {
+ const node = this.startNodeAt(startPos, startLoc);
+
+ if (this.match(133)) {
+ this.expect(133);
+ return this.finishNode(node, "JSXOpeningFragment");
+ }
+
+ node.name = this.jsxParseElementName();
+ return this.jsxParseOpeningElementAfterName(node);
+ }
+
+ jsxParseOpeningElementAfterName(node) {
+ const attributes = [];
+
+ while (!this.match(50) && !this.match(133)) {
+ attributes.push(this.jsxParseAttribute());
+ }
+
+ node.attributes = attributes;
+ node.selfClosing = this.eat(50);
+ this.expect(133);
+ return this.finishNode(node, "JSXOpeningElement");
+ }
+
+ jsxParseClosingElementAt(startPos, startLoc) {
+ const node = this.startNodeAt(startPos, startLoc);
+
+ if (this.match(133)) {
+ this.expect(133);
+ return this.finishNode(node, "JSXClosingFragment");
+ }
+
+ node.name = this.jsxParseElementName();
+ this.expect(133);
+ return this.finishNode(node, "JSXClosingElement");
+ }
+
+ jsxParseElementAt(startPos, startLoc) {
+ const node = this.startNodeAt(startPos, startLoc);
+ const children = [];
+ const openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);
+ let closingElement = null;
+
+ if (!openingElement.selfClosing) {
+ contents: for (;;) {
+ switch (this.state.type) {
+ case 132:
+ startPos = this.state.start;
+ startLoc = this.state.startLoc;
+ this.next();
+
+ if (this.eat(50)) {
+ closingElement = this.jsxParseClosingElementAt(startPos, startLoc);
+ break contents;
+ }
+
+ children.push(this.jsxParseElementAt(startPos, startLoc));
+ break;
+
+ case 131:
+ children.push(this.parseExprAtom());
+ break;
+
+ case 5:
+ {
+ const node = this.startNode();
+ this.next();
+
+ if (this.match(21)) {
+ children.push(this.jsxParseSpreadChild(node));
+ } else {
+ children.push(this.jsxParseExpressionContainer(node));
+ }
+
+ break;
+ }
+
+ default:
+ throw this.unexpected();
+ }
+ }
+
+ if (isFragment(openingElement) && !isFragment(closingElement)) {
+ this.raise(closingElement.start, JsxErrors.MissingClosingTagFragment);
+ } else if (!isFragment(openingElement) && isFragment(closingElement)) {
+ this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name));
+ } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
+ if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
+ this.raise(closingElement.start, JsxErrors.MissingClosingTagElement, getQualifiedJSXName(openingElement.name));
+ }
+ }
+ }
+
+ if (isFragment(openingElement)) {
+ node.openingFragment = openingElement;
+ node.closingFragment = closingElement;
+ } else {
+ node.openingElement = openingElement;
+ node.closingElement = closingElement;
+ }
+
+ node.children = children;
+
+ if (this.match(43)) {
+ throw this.raise(this.state.start, JsxErrors.UnwrappedAdjacentJSXElements);
+ }
+
+ return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement");
+ }
+
+ jsxParseElement() {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ this.next();
+ return this.jsxParseElementAt(startPos, startLoc);
+ }
+
+ parseExprAtom(refExpressionErrors) {
+ if (this.match(131)) {
+ return this.parseLiteral(this.state.value, "JSXText");
+ } else if (this.match(132)) {
+ return this.jsxParseElement();
+ } else if (this.match(43) && this.input.charCodeAt(this.state.pos) !== 33) {
+ this.replaceToken(132);
+ return this.jsxParseElement();
+ } else {
+ return super.parseExprAtom(refExpressionErrors);
+ }
+ }
+
+ getTokenFromCode(code) {
+ const context = this.curContext();
+
+ if (context === types.j_expr) {
+ return this.jsxReadToken();
+ }
+
+ if (context === types.j_oTag || context === types.j_cTag) {
+ if (isIdentifierStart(code)) {
+ return this.jsxReadWord();
+ }
+
+ if (code === 62) {
+ ++this.state.pos;
+ return this.finishToken(133);
+ }
+
+ if ((code === 34 || code === 39) && context === types.j_oTag) {
+ return this.jsxReadString(code);
+ }
+ }
+
+ if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {
+ ++this.state.pos;
+ return this.finishToken(132);
+ }
+
+ return super.getTokenFromCode(code);
+ }
+
+ updateContext(prevType) {
+ super.updateContext(prevType);
+ const {
+ context,
+ type
+ } = this.state;
+
+ if (type === 50 && prevType === 132) {
+ context.splice(-2, 2, types.j_cTag);
+ this.state.canStartJSXElement = false;
+ } else if (type === 132) {
+ context.push(types.j_expr, types.j_oTag);
+ } else if (type === 133) {
+ const out = context.pop();
+
+ if (out === types.j_oTag && prevType === 50 || out === types.j_cTag) {
+ context.pop();
+ this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;
+ } else {
+ this.state.canStartJSXElement = true;
+ }
+ } else {
+ this.state.canStartJSXElement = tokenComesBeforeExpression(type);
+ }
+ }
+
+});
+
+class TypeScriptScope extends Scope {
+ constructor(...args) {
+ super(...args);
+ this.types = new Set();
+ this.enums = new Set();
+ this.constEnums = new Set();
+ this.classes = new Set();
+ this.exportOnlyBindings = new Set();
+ }
+
+}
+
+class TypeScriptScopeHandler extends ScopeHandler {
+ createScope(flags) {
+ return new TypeScriptScope(flags);
+ }
+
+ declareName(name, bindingType, pos) {
+ const scope = this.currentScope();
+
+ if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {
+ this.maybeExportDefined(scope, name);
+ scope.exportOnlyBindings.add(name);
+ return;
+ }
+
+ super.declareName(...arguments);
+
+ if (bindingType & BIND_KIND_TYPE) {
+ if (!(bindingType & BIND_KIND_VALUE)) {
+ this.checkRedeclarationInScope(scope, name, bindingType, pos);
+ this.maybeExportDefined(scope, name);
+ }
+
+ scope.types.add(name);
+ }
+
+ if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name);
+ if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name);
+ if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name);
+ }
+
+ isRedeclaredInScope(scope, name, bindingType) {
+ if (scope.enums.has(name)) {
+ if (bindingType & BIND_FLAGS_TS_ENUM) {
+ const isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);
+ const wasConst = scope.constEnums.has(name);
+ return isConst !== wasConst;
+ }
+
+ return true;
+ }
+
+ if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) {
+ if (scope.lexical.has(name)) {
+ return !!(bindingType & BIND_KIND_VALUE);
+ } else {
+ return false;
+ }
+ }
+
+ if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) {
+ return true;
+ }
+
+ return super.isRedeclaredInScope(...arguments);
+ }
+
+ checkLocalExport(id) {
+ const topLevelScope = this.scopeStack[0];
+ const {
+ name
+ } = id;
+
+ if (!topLevelScope.types.has(name) && !topLevelScope.exportOnlyBindings.has(name)) {
+ super.checkLocalExport(id);
+ }
+ }
+
+}
+
+function nonNull(x) {
+ if (x == null) {
+ throw new Error(`Unexpected ${x} value.`);
+ }
+
+ return x;
+}
+
+function assert(x) {
+ if (!x) {
+ throw new Error("Assert fail");
+ }
+}
+
+const TSErrors = makeErrorTemplates({
+ AbstractMethodHasImplementation: "Method '%0' cannot have an implementation because it is marked abstract.",
+ AbstractPropertyHasInitializer: "Property '%0' cannot have an initializer because it is marked abstract.",
+ AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.",
+ AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.",
+ ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.",
+ ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.",
+ ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.",
+ DeclareAccessor: "'declare' is not allowed in %0ters.",
+ DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.",
+ DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.",
+ DuplicateAccessibilityModifier: "Accessibility modifier already seen.",
+ DuplicateModifier: "Duplicate modifier: '%0'.",
+ EmptyHeritageClauseType: "'%0' list cannot be empty.",
+ EmptyTypeArguments: "Type argument list cannot be empty.",
+ EmptyTypeParameters: "Type parameter list cannot be empty.",
+ ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.",
+ ImportAliasHasImportType: "An import alias can not use 'import type'.",
+ IncompatibleModifiers: "'%0' modifier cannot be used with '%1' modifier.",
+ IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.",
+ IndexSignatureHasAccessibility: "Index signatures cannot have an accessibility modifier ('%0').",
+ IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.",
+ IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.",
+ IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.",
+ InvalidModifierOnTypeMember: "'%0' modifier cannot appear on a type member.",
+ InvalidModifiersOrder: "'%0' modifier must precede '%1' modifier.",
+ InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.",
+ MissingInterfaceName: "'interface' declarations must be followed by an identifier.",
+ MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.",
+ NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.",
+ NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.",
+ OptionalTypeBeforeRequired: "A required element cannot follow an optional element.",
+ OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.",
+ PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",
+ PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.",
+ PrivateElementHasAccessibility: "Private elements cannot have an accessibility modifier ('%0').",
+ ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.",
+ ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",
+ ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",
+ SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.",
+ SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.",
+ SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.",
+ StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",
+ TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
+ TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",
+ TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",
+ TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",
+ UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.",
+ UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.",
+ UnexpectedTypeAnnotation: "Did not expect a type annotation here.",
+ UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.",
+ UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.",
+ UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.",
+ UnsupportedSignatureParameterKind: "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got %0."
+}, ErrorCodes.SyntaxError, "typescript");
+
+function keywordTypeFromName(value) {
+ switch (value) {
+ case "any":
+ return "TSAnyKeyword";
+
+ case "boolean":
+ return "TSBooleanKeyword";
+
+ case "bigint":
+ return "TSBigIntKeyword";
+
+ case "never":
+ return "TSNeverKeyword";
+
+ case "number":
+ return "TSNumberKeyword";
+
+ case "object":
+ return "TSObjectKeyword";
+
+ case "string":
+ return "TSStringKeyword";
+
+ case "symbol":
+ return "TSSymbolKeyword";
+
+ case "undefined":
+ return "TSUndefinedKeyword";
+
+ case "unknown":
+ return "TSUnknownKeyword";
+
+ default:
+ return undefined;
+ }
+}
+
+function tsIsAccessModifier(modifier) {
+ return modifier === "private" || modifier === "public" || modifier === "protected";
+}
+
+var typescript = (superClass => class extends superClass {
+ getScopeHandler() {
+ return TypeScriptScopeHandler;
+ }
+
+ tsIsIdentifier() {
+ return tokenIsIdentifier(this.state.type);
+ }
+
+ tsTokenCanFollowModifier() {
+ return (this.match(0) || this.match(5) || this.match(49) || this.match(21) || this.match(128) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak();
+ }
+
+ tsNextTokenCanFollowModifier() {
+ this.next();
+ return this.tsTokenCanFollowModifier();
+ }
+
+ tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {
+ if (!tokenIsIdentifier(this.state.type)) {
+ return undefined;
+ }
+
+ const modifier = this.state.value;
+
+ if (allowedModifiers.indexOf(modifier) !== -1) {
+ if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {
+ return undefined;
+ }
+
+ if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
+ return modifier;
+ }
+ }
+
+ return undefined;
+ }
+
+ tsParseModifiers(modified, allowedModifiers, disallowedModifiers, errorTemplate, stopOnStartOfClassStaticBlock) {
+ const enforceOrder = (pos, modifier, before, after) => {
+ if (modifier === before && modified[after]) {
+ this.raise(pos, TSErrors.InvalidModifiersOrder, before, after);
+ }
+ };
+
+ const incompatible = (pos, modifier, mod1, mod2) => {
+ if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {
+ this.raise(pos, TSErrors.IncompatibleModifiers, mod1, mod2);
+ }
+ };
+
+ for (;;) {
+ const startPos = this.state.start;
+ const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);
+ if (!modifier) break;
+
+ if (tsIsAccessModifier(modifier)) {
+ if (modified.accessibility) {
+ this.raise(startPos, TSErrors.DuplicateAccessibilityModifier);
+ } else {
+ enforceOrder(startPos, modifier, modifier, "override");
+ enforceOrder(startPos, modifier, modifier, "static");
+ enforceOrder(startPos, modifier, modifier, "readonly");
+ modified.accessibility = modifier;
+ }
+ } else {
+ if (Object.hasOwnProperty.call(modified, modifier)) {
+ this.raise(startPos, TSErrors.DuplicateModifier, modifier);
+ } else {
+ enforceOrder(startPos, modifier, "static", "readonly");
+ enforceOrder(startPos, modifier, "static", "override");
+ enforceOrder(startPos, modifier, "override", "readonly");
+ enforceOrder(startPos, modifier, "abstract", "override");
+ incompatible(startPos, modifier, "declare", "override");
+ incompatible(startPos, modifier, "static", "abstract");
+ }
+
+ modified[modifier] = true;
+ }
+
+ if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {
+ this.raise(startPos, errorTemplate, modifier);
+ }
+ }
+ }
+
+ tsIsListTerminator(kind) {
+ switch (kind) {
+ case "EnumMembers":
+ case "TypeMembers":
+ return this.match(8);
+
+ case "HeritageClauseElement":
+ return this.match(5);
+
+ case "TupleElementTypes":
+ return this.match(3);
+
+ case "TypeParametersOrArguments":
+ return this.match(44);
+ }
+
+ throw new Error("Unreachable");
+ }
+
+ tsParseList(kind, parseElement) {
+ const result = [];
+
+ while (!this.tsIsListTerminator(kind)) {
+ result.push(parseElement());
+ }
+
+ return result;
+ }
+
+ tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {
+ return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));
+ }
+
+ tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {
+ const result = [];
+ let trailingCommaPos = -1;
+
+ for (;;) {
+ if (this.tsIsListTerminator(kind)) {
+ break;
+ }
+
+ trailingCommaPos = -1;
+ const element = parseElement();
+
+ if (element == null) {
+ return undefined;
+ }
+
+ result.push(element);
+
+ if (this.eat(12)) {
+ trailingCommaPos = this.state.lastTokStart;
+ continue;
+ }
+
+ if (this.tsIsListTerminator(kind)) {
+ break;
+ }
+
+ if (expectSuccess) {
+ this.expect(12);
+ }
+
+ return undefined;
+ }
+
+ if (refTrailingCommaPos) {
+ refTrailingCommaPos.value = trailingCommaPos;
+ }
+
+ return result;
+ }
+
+ tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {
+ if (!skipFirstToken) {
+ if (bracket) {
+ this.expect(0);
+ } else {
+ this.expect(43);
+ }
+ }
+
+ const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);
+
+ if (bracket) {
+ this.expect(3);
+ } else {
+ this.expect(44);
+ }
+
+ return result;
+ }
+
+ tsParseImportType() {
+ const node = this.startNode();
+ this.expect(77);
+ this.expect(10);
+
+ if (!this.match(123)) {
+ this.raise(this.state.start, TSErrors.UnsupportedImportTypeArgument);
+ }
+
+ node.argument = this.parseExprAtom();
+ this.expect(11);
+
+ if (this.eat(16)) {
+ node.qualifier = this.tsParseEntityName(true);
+ }
+
+ if (this.match(43)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+
+ return this.finishNode(node, "TSImportType");
+ }
+
+ tsParseEntityName(allowReservedWords) {
+ let entity = this.parseIdentifier();
+
+ while (this.eat(16)) {
+ const node = this.startNodeAtNode(entity);
+ node.left = entity;
+ node.right = this.parseIdentifier(allowReservedWords);
+ entity = this.finishNode(node, "TSQualifiedName");
+ }
+
+ return entity;
+ }
+
+ tsParseTypeReference() {
+ const node = this.startNode();
+ node.typeName = this.tsParseEntityName(false);
+
+ if (!this.hasPrecedingLineBreak() && this.match(43)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+
+ return this.finishNode(node, "TSTypeReference");
+ }
+
+ tsParseThisTypePredicate(lhs) {
+ this.next();
+ const node = this.startNodeAtNode(lhs);
+ node.parameterName = lhs;
+ node.typeAnnotation = this.tsParseTypeAnnotation(false);
+ node.asserts = false;
+ return this.finishNode(node, "TSTypePredicate");
+ }
+
+ tsParseThisTypeNode() {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "TSThisType");
+ }
+
+ tsParseTypeQuery() {
+ const node = this.startNode();
+ this.expect(81);
+
+ if (this.match(77)) {
+ node.exprName = this.tsParseImportType();
+ } else {
+ node.exprName = this.tsParseEntityName(true);
+ }
+
+ return this.finishNode(node, "TSTypeQuery");
+ }
+
+ tsParseTypeParameter() {
+ const node = this.startNode();
+ node.name = this.tsParseTypeParameterName();
+ node.constraint = this.tsEatThenParseType(75);
+ node.default = this.tsEatThenParseType(27);
+ return this.finishNode(node, "TSTypeParameter");
+ }
+
+ tsTryParseTypeParameters() {
+ if (this.match(43)) {
+ return this.tsParseTypeParameters();
+ }
+ }
+
+ tsParseTypeParameters() {
+ const node = this.startNode();
+
+ if (this.match(43) || this.match(132)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+
+ const refTrailingCommaPos = {
+ value: -1
+ };
+ node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this), false, true, refTrailingCommaPos);
+
+ if (node.params.length === 0) {
+ this.raise(node.start, TSErrors.EmptyTypeParameters);
+ }
+
+ if (refTrailingCommaPos.value !== -1) {
+ this.addExtra(node, "trailingComma", refTrailingCommaPos.value);
+ }
+
+ return this.finishNode(node, "TSTypeParameterDeclaration");
+ }
+
+ tsTryNextParseConstantContext() {
+ if (this.lookahead().type === 69) {
+ this.next();
+ return this.tsParseTypeReference();
+ }
+
+ return null;
+ }
+
+ tsFillSignature(returnToken, signature) {
+ const returnTokenRequired = returnToken === 19;
+ signature.typeParameters = this.tsTryParseTypeParameters();
+ this.expect(10);
+ signature.parameters = this.tsParseBindingListForSignature();
+
+ if (returnTokenRequired) {
+ signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
+ } else if (this.match(returnToken)) {
+ signature.typeAnnotation = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
+ }
+ }
+
+ tsParseBindingListForSignature() {
+ return this.parseBindingList(11, 41).map(pattern => {
+ if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") {
+ this.raise(pattern.start, TSErrors.UnsupportedSignatureParameterKind, pattern.type);
+ }
+
+ return pattern;
+ });
+ }
+
+ tsParseTypeMemberSemicolon() {
+ if (!this.eat(12) && !this.isLineTerminator()) {
+ this.expect(13);
+ }
+ }
+
+ tsParseSignatureMember(kind, node) {
+ this.tsFillSignature(14, node);
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(node, kind);
+ }
+
+ tsIsUnambiguouslyIndexSignature() {
+ this.next();
+
+ if (tokenIsIdentifier(this.state.type)) {
+ this.next();
+ return this.match(14);
+ }
+
+ return false;
+ }
+
+ tsTryParseIndexSignature(node) {
+ if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
+ return undefined;
+ }
+
+ this.expect(0);
+ const id = this.parseIdentifier();
+ id.typeAnnotation = this.tsParseTypeAnnotation();
+ this.resetEndLocation(id);
+ this.expect(3);
+ node.parameters = [id];
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) node.typeAnnotation = type;
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(node, "TSIndexSignature");
+ }
+
+ tsParsePropertyOrMethodSignature(node, readonly) {
+ if (this.eat(17)) node.optional = true;
+ const nodeAny = node;
+
+ if (this.match(10) || this.match(43)) {
+ if (readonly) {
+ this.raise(node.start, TSErrors.ReadonlyForMethodSignature);
+ }
+
+ const method = nodeAny;
+
+ if (method.kind && this.match(43)) {
+ this.raise(this.state.pos, TSErrors.AccesorCannotHaveTypeParameters);
+ }
+
+ this.tsFillSignature(14, method);
+ this.tsParseTypeMemberSemicolon();
+
+ if (method.kind === "get") {
+ if (method.parameters.length > 0) {
+ this.raise(this.state.pos, ErrorMessages.BadGetterArity);
+
+ if (this.isThisParam(method.parameters[0])) {
+ this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter);
+ }
+ }
+ } else if (method.kind === "set") {
+ if (method.parameters.length !== 1) {
+ this.raise(this.state.pos, ErrorMessages.BadSetterArity);
+ } else {
+ const firstParameter = method.parameters[0];
+
+ if (this.isThisParam(firstParameter)) {
+ this.raise(this.state.pos, TSErrors.AccesorCannotDeclareThisParameter);
+ }
+
+ if (firstParameter.type === "Identifier" && firstParameter.optional) {
+ this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveOptionalParameter);
+ }
+
+ if (firstParameter.type === "RestElement") {
+ this.raise(this.state.pos, TSErrors.SetAccesorCannotHaveRestParameter);
+ }
+ }
+
+ if (method.typeAnnotation) {
+ this.raise(method.typeAnnotation.start, TSErrors.SetAccesorCannotHaveReturnType);
+ }
+ } else {
+ method.kind = "method";
+ }
+
+ return this.finishNode(method, "TSMethodSignature");
+ } else {
+ const property = nodeAny;
+ if (readonly) property.readonly = true;
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) property.typeAnnotation = type;
+ this.tsParseTypeMemberSemicolon();
+ return this.finishNode(property, "TSPropertySignature");
+ }
+ }
+
+ tsParseTypeMember() {
+ const node = this.startNode();
+
+ if (this.match(10) || this.match(43)) {
+ return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
+ }
+
+ if (this.match(71)) {
+ const id = this.startNode();
+ this.next();
+
+ if (this.match(10) || this.match(43)) {
+ return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
+ } else {
+ node.key = this.createIdentifier(id, "new");
+ return this.tsParsePropertyOrMethodSignature(node, false);
+ }
+ }
+
+ this.tsParseModifiers(node, ["readonly"], ["declare", "abstract", "private", "protected", "public", "static", "override"], TSErrors.InvalidModifierOnTypeMember);
+ const idx = this.tsTryParseIndexSignature(node);
+
+ if (idx) {
+ return idx;
+ }
+
+ this.parsePropertyName(node);
+
+ if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) {
+ node.kind = node.key.name;
+ this.parsePropertyName(node);
+ }
+
+ return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);
+ }
+
+ tsParseTypeLiteral() {
+ const node = this.startNode();
+ node.members = this.tsParseObjectTypeMembers();
+ return this.finishNode(node, "TSTypeLiteral");
+ }
+
+ tsParseObjectTypeMembers() {
+ this.expect(5);
+ const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
+ this.expect(8);
+ return members;
+ }
+
+ tsIsStartOfMappedType() {
+ this.next();
+
+ if (this.eat(47)) {
+ return this.isContextual(112);
+ }
+
+ if (this.isContextual(112)) {
+ this.next();
+ }
+
+ if (!this.match(0)) {
+ return false;
+ }
+
+ this.next();
+
+ if (!this.tsIsIdentifier()) {
+ return false;
+ }
+
+ this.next();
+ return this.match(52);
+ }
+
+ tsParseMappedTypeParameter() {
+ const node = this.startNode();
+ node.name = this.tsParseTypeParameterName();
+ node.constraint = this.tsExpectThenParseType(52);
+ return this.finishNode(node, "TSTypeParameter");
+ }
+
+ tsParseMappedType() {
+ const node = this.startNode();
+ this.expect(5);
+
+ if (this.match(47)) {
+ node.readonly = this.state.value;
+ this.next();
+ this.expectContextual(112);
+ } else if (this.eatContextual(112)) {
+ node.readonly = true;
+ }
+
+ this.expect(0);
+ node.typeParameter = this.tsParseMappedTypeParameter();
+ node.nameType = this.eatContextual(87) ? this.tsParseType() : null;
+ this.expect(3);
+
+ if (this.match(47)) {
+ node.optional = this.state.value;
+ this.next();
+ this.expect(17);
+ } else if (this.eat(17)) {
+ node.optional = true;
+ }
+
+ node.typeAnnotation = this.tsTryParseType();
+ this.semicolon();
+ this.expect(8);
+ return this.finishNode(node, "TSMappedType");
+ }
+
+ tsParseTupleType() {
+ const node = this.startNode();
+ node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
+ let seenOptionalElement = false;
+ let labeledElements = null;
+ node.elementTypes.forEach(elementNode => {
+ var _labeledElements;
+
+ let {
+ type
+ } = elementNode;
+
+ if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) {
+ this.raise(elementNode.start, TSErrors.OptionalTypeBeforeRequired);
+ }
+
+ seenOptionalElement = seenOptionalElement || type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType";
+
+ if (type === "TSRestType") {
+ elementNode = elementNode.typeAnnotation;
+ type = elementNode.type;
+ }
+
+ const isLabeled = type === "TSNamedTupleMember";
+ labeledElements = (_labeledElements = labeledElements) != null ? _labeledElements : isLabeled;
+
+ if (labeledElements !== isLabeled) {
+ this.raise(elementNode.start, TSErrors.MixedLabeledAndUnlabeledElements);
+ }
+ });
+ return this.finishNode(node, "TSTupleType");
+ }
+
+ tsParseTupleElementType() {
+ const {
+ start: startPos,
+ startLoc
+ } = this.state;
+ const rest = this.eat(21);
+ let type = this.tsParseType();
+ const optional = this.eat(17);
+ const labeled = this.eat(14);
+
+ if (labeled) {
+ const labeledNode = this.startNodeAtNode(type);
+ labeledNode.optional = optional;
+
+ if (type.type === "TSTypeReference" && !type.typeParameters && type.typeName.type === "Identifier") {
+ labeledNode.label = type.typeName;
+ } else {
+ this.raise(type.start, TSErrors.InvalidTupleMemberLabel);
+ labeledNode.label = type;
+ }
+
+ labeledNode.elementType = this.tsParseType();
+ type = this.finishNode(labeledNode, "TSNamedTupleMember");
+ } else if (optional) {
+ const optionalTypeNode = this.startNodeAtNode(type);
+ optionalTypeNode.typeAnnotation = type;
+ type = this.finishNode(optionalTypeNode, "TSOptionalType");
+ }
+
+ if (rest) {
+ const restNode = this.startNodeAt(startPos, startLoc);
+ restNode.typeAnnotation = type;
+ type = this.finishNode(restNode, "TSRestType");
+ }
+
+ return type;
+ }
+
+ tsParseParenthesizedType() {
+ const node = this.startNode();
+ this.expect(10);
+ node.typeAnnotation = this.tsParseType();
+ this.expect(11);
+ return this.finishNode(node, "TSParenthesizedType");
+ }
+
+ tsParseFunctionOrConstructorType(type, abstract) {
+ const node = this.startNode();
+
+ if (type === "TSConstructorType") {
+ node.abstract = !!abstract;
+ if (abstract) this.next();
+ this.next();
+ }
+
+ this.tsFillSignature(19, node);
+ return this.finishNode(node, type);
+ }
+
+ tsParseLiteralTypeNode() {
+ const node = this.startNode();
+
+ node.literal = (() => {
+ switch (this.state.type) {
+ case 124:
+ case 125:
+ case 123:
+ case 79:
+ case 80:
+ return this.parseExprAtom();
+
+ default:
+ throw this.unexpected();
+ }
+ })();
+
+ return this.finishNode(node, "TSLiteralType");
+ }
+
+ tsParseTemplateLiteralType() {
+ const node = this.startNode();
+ node.literal = this.parseTemplate(false);
+ return this.finishNode(node, "TSLiteralType");
+ }
+
+ parseTemplateSubstitution() {
+ if (this.state.inType) return this.tsParseType();
+ return super.parseTemplateSubstitution();
+ }
+
+ tsParseThisTypeOrThisTypePredicate() {
+ const thisKeyword = this.tsParseThisTypeNode();
+
+ if (this.isContextual(107) && !this.hasPrecedingLineBreak()) {
+ return this.tsParseThisTypePredicate(thisKeyword);
+ } else {
+ return thisKeyword;
+ }
+ }
+
+ tsParseNonArrayType() {
+ switch (this.state.type) {
+ case 123:
+ case 124:
+ case 125:
+ case 79:
+ case 80:
+ return this.tsParseLiteralTypeNode();
+
+ case 47:
+ if (this.state.value === "-") {
+ const node = this.startNode();
+ const nextToken = this.lookahead();
+
+ if (nextToken.type !== 124 && nextToken.type !== 125) {
+ throw this.unexpected();
+ }
+
+ node.literal = this.parseMaybeUnary();
+ return this.finishNode(node, "TSLiteralType");
+ }
+
+ break;
+
+ case 72:
+ return this.tsParseThisTypeOrThisTypePredicate();
+
+ case 81:
+ return this.tsParseTypeQuery();
+
+ case 77:
+ return this.tsParseImportType();
+
+ case 5:
+ return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
+
+ case 0:
+ return this.tsParseTupleType();
+
+ case 10:
+ return this.tsParseParenthesizedType();
+
+ case 22:
+ return this.tsParseTemplateLiteralType();
+
+ default:
+ {
+ const {
+ type
+ } = this.state;
+
+ if (tokenIsIdentifier(type) || type === 82 || type === 78) {
+ const nodeType = type === 82 ? "TSVoidKeyword" : type === 78 ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
+
+ if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, nodeType);
+ }
+
+ return this.tsParseTypeReference();
+ }
+ }
+ }
+
+ throw this.unexpected();
+ }
+
+ tsParseArrayTypeOrHigher() {
+ let type = this.tsParseNonArrayType();
+
+ while (!this.hasPrecedingLineBreak() && this.eat(0)) {
+ if (this.match(3)) {
+ const node = this.startNodeAtNode(type);
+ node.elementType = type;
+ this.expect(3);
+ type = this.finishNode(node, "TSArrayType");
+ } else {
+ const node = this.startNodeAtNode(type);
+ node.objectType = type;
+ node.indexType = this.tsParseType();
+ this.expect(3);
+ type = this.finishNode(node, "TSIndexedAccessType");
+ }
+ }
+
+ return type;
+ }
+
+ tsParseTypeOperator() {
+ const node = this.startNode();
+ const operator = this.state.value;
+ this.next();
+ node.operator = operator;
+ node.typeAnnotation = this.tsParseTypeOperatorOrHigher();
+
+ if (operator === "readonly") {
+ this.tsCheckTypeAnnotationForReadOnly(node);
+ }
+
+ return this.finishNode(node, "TSTypeOperator");
+ }
+
+ tsCheckTypeAnnotationForReadOnly(node) {
+ switch (node.typeAnnotation.type) {
+ case "TSTupleType":
+ case "TSArrayType":
+ return;
+
+ default:
+ this.raise(node.start, TSErrors.UnexpectedReadonly);
+ }
+ }
+
+ tsParseInferType() {
+ const node = this.startNode();
+ this.expectContextual(106);
+ const typeParameter = this.startNode();
+ typeParameter.name = this.tsParseTypeParameterName();
+ node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
+ return this.finishNode(node, "TSInferType");
+ }
+
+ tsParseTypeOperatorOrHigher() {
+ const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;
+ return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(106) ? this.tsParseInferType() : this.tsParseArrayTypeOrHigher();
+ }
+
+ tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
+ const node = this.startNode();
+ const hasLeadingOperator = this.eat(operator);
+ const types = [];
+
+ do {
+ types.push(parseConstituentType());
+ } while (this.eat(operator));
+
+ if (types.length === 1 && !hasLeadingOperator) {
+ return types[0];
+ }
+
+ node.types = types;
+ return this.finishNode(node, kind);
+ }
+
+ tsParseIntersectionTypeOrHigher() {
+ return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 41);
+ }
+
+ tsParseUnionTypeOrHigher() {
+ return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 39);
+ }
+
+ tsIsStartOfFunctionType() {
+ if (this.match(43)) {
+ return true;
+ }
+
+ return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
+ }
+
+ tsSkipParameterStart() {
+ if (tokenIsIdentifier(this.state.type) || this.match(72)) {
+ this.next();
+ return true;
+ }
+
+ if (this.match(5)) {
+ let braceStackCounter = 1;
+ this.next();
+
+ while (braceStackCounter > 0) {
+ if (this.match(5)) {
+ ++braceStackCounter;
+ } else if (this.match(8)) {
+ --braceStackCounter;
+ }
+
+ this.next();
+ }
+
+ return true;
+ }
+
+ if (this.match(0)) {
+ let braceStackCounter = 1;
+ this.next();
+
+ while (braceStackCounter > 0) {
+ if (this.match(0)) {
+ ++braceStackCounter;
+ } else if (this.match(3)) {
+ --braceStackCounter;
+ }
+
+ this.next();
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ tsIsUnambiguouslyStartOfFunctionType() {
+ this.next();
+
+ if (this.match(11) || this.match(21)) {
+ return true;
+ }
+
+ if (this.tsSkipParameterStart()) {
+ if (this.match(14) || this.match(12) || this.match(17) || this.match(27)) {
+ return true;
+ }
+
+ if (this.match(11)) {
+ this.next();
+
+ if (this.match(19)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ tsParseTypeOrTypePredicateAnnotation(returnToken) {
+ return this.tsInType(() => {
+ const t = this.startNode();
+ this.expect(returnToken);
+ const node = this.startNode();
+ const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this));
+
+ if (asserts && this.match(72)) {
+ let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();
+
+ if (thisTypePredicate.type === "TSThisType") {
+ node.parameterName = thisTypePredicate;
+ node.asserts = true;
+ node.typeAnnotation = null;
+ thisTypePredicate = this.finishNode(node, "TSTypePredicate");
+ } else {
+ this.resetStartLocationFromNode(thisTypePredicate, node);
+ thisTypePredicate.asserts = true;
+ }
+
+ t.typeAnnotation = thisTypePredicate;
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+
+ const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));
+
+ if (!typePredicateVariable) {
+ if (!asserts) {
+ return this.tsParseTypeAnnotation(false, t);
+ }
+
+ node.parameterName = this.parseIdentifier();
+ node.asserts = asserts;
+ node.typeAnnotation = null;
+ t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+
+ const type = this.tsParseTypeAnnotation(false);
+ node.parameterName = typePredicateVariable;
+ node.typeAnnotation = type;
+ node.asserts = asserts;
+ t.typeAnnotation = this.finishNode(node, "TSTypePredicate");
+ return this.finishNode(t, "TSTypeAnnotation");
+ });
+ }
+
+ tsTryParseTypeOrTypePredicateAnnotation() {
+ return this.match(14) ? this.tsParseTypeOrTypePredicateAnnotation(14) : undefined;
+ }
+
+ tsTryParseTypeAnnotation() {
+ return this.match(14) ? this.tsParseTypeAnnotation() : undefined;
+ }
+
+ tsTryParseType() {
+ return this.tsEatThenParseType(14);
+ }
+
+ tsParseTypePredicatePrefix() {
+ const id = this.parseIdentifier();
+
+ if (this.isContextual(107) && !this.hasPrecedingLineBreak()) {
+ this.next();
+ return id;
+ }
+ }
+
+ tsParseTypePredicateAsserts() {
+ if (this.state.type !== 100) {
+ return false;
+ }
+
+ const containsEsc = this.state.containsEsc;
+ this.next();
+
+ if (!tokenIsIdentifier(this.state.type) && !this.match(72)) {
+ return false;
+ }
+
+ if (containsEsc) {
+ this.raise(this.state.lastTokStart, ErrorMessages.InvalidEscapedReservedWord, "asserts");
+ }
+
+ return true;
+ }
+
+ tsParseTypeAnnotation(eatColon = true, t = this.startNode()) {
+ this.tsInType(() => {
+ if (eatColon) this.expect(14);
+ t.typeAnnotation = this.tsParseType();
+ });
+ return this.finishNode(t, "TSTypeAnnotation");
+ }
+
+ tsParseType() {
+ assert(this.state.inType);
+ const type = this.tsParseNonConditionalType();
+
+ if (this.hasPrecedingLineBreak() || !this.eat(75)) {
+ return type;
+ }
+
+ const node = this.startNodeAtNode(type);
+ node.checkType = type;
+ node.extendsType = this.tsParseNonConditionalType();
+ this.expect(17);
+ node.trueType = this.tsParseType();
+ this.expect(14);
+ node.falseType = this.tsParseType();
+ return this.finishNode(node, "TSConditionalType");
+ }
+
+ isAbstractConstructorSignature() {
+ return this.isContextual(114) && this.lookahead().type === 71;
+ }
+
+ tsParseNonConditionalType() {
+ if (this.tsIsStartOfFunctionType()) {
+ return this.tsParseFunctionOrConstructorType("TSFunctionType");
+ }
+
+ if (this.match(71)) {
+ return this.tsParseFunctionOrConstructorType("TSConstructorType");
+ } else if (this.isAbstractConstructorSignature()) {
+ return this.tsParseFunctionOrConstructorType("TSConstructorType", true);
+ }
+
+ return this.tsParseUnionTypeOrHigher();
+ }
+
+ tsParseTypeAssertion() {
+ if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
+ this.raise(this.state.start, TSErrors.ReservedTypeAssertion);
+ }
+
+ const node = this.startNode();
+
+ const _const = this.tsTryNextParseConstantContext();
+
+ node.typeAnnotation = _const || this.tsNextThenParseType();
+ this.expect(44);
+ node.expression = this.parseMaybeUnary();
+ return this.finishNode(node, "TSTypeAssertion");
+ }
+
+ tsParseHeritageClause(descriptor) {
+ const originalStart = this.state.start;
+ const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", this.tsParseExpressionWithTypeArguments.bind(this));
+
+ if (!delimitedList.length) {
+ this.raise(originalStart, TSErrors.EmptyHeritageClauseType, descriptor);
+ }
+
+ return delimitedList;
+ }
+
+ tsParseExpressionWithTypeArguments() {
+ const node = this.startNode();
+ node.expression = this.tsParseEntityName(false);
+
+ if (this.match(43)) {
+ node.typeParameters = this.tsParseTypeArguments();
+ }
+
+ return this.finishNode(node, "TSExpressionWithTypeArguments");
+ }
+
+ tsParseInterfaceDeclaration(node) {
+ if (tokenIsIdentifier(this.state.type)) {
+ node.id = this.parseIdentifier();
+ this.checkLVal(node.id, "typescript interface declaration", BIND_TS_INTERFACE);
+ } else {
+ node.id = null;
+ this.raise(this.state.start, TSErrors.MissingInterfaceName);
+ }
+
+ node.typeParameters = this.tsTryParseTypeParameters();
+
+ if (this.eat(75)) {
+ node.extends = this.tsParseHeritageClause("extends");
+ }
+
+ const body = this.startNode();
+ body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));
+ node.body = this.finishNode(body, "TSInterfaceBody");
+ return this.finishNode(node, "TSInterfaceDeclaration");
+ }
+
+ tsParseTypeAliasDeclaration(node) {
+ node.id = this.parseIdentifier();
+ this.checkLVal(node.id, "typescript type alias", BIND_TS_TYPE);
+ node.typeParameters = this.tsTryParseTypeParameters();
+ node.typeAnnotation = this.tsInType(() => {
+ this.expect(27);
+
+ if (this.isContextual(105) && this.lookahead().type !== 16) {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "TSIntrinsicKeyword");
+ }
+
+ return this.tsParseType();
+ });
+ this.semicolon();
+ return this.finishNode(node, "TSTypeAliasDeclaration");
+ }
+
+ tsInNoContext(cb) {
+ const oldContext = this.state.context;
+ this.state.context = [oldContext[0]];
+
+ try {
+ return cb();
+ } finally {
+ this.state.context = oldContext;
+ }
+ }
+
+ tsInType(cb) {
+ const oldInType = this.state.inType;
+ this.state.inType = true;
+
+ try {
+ return cb();
+ } finally {
+ this.state.inType = oldInType;
+ }
+ }
+
+ tsEatThenParseType(token) {
+ return !this.match(token) ? undefined : this.tsNextThenParseType();
+ }
+
+ tsExpectThenParseType(token) {
+ return this.tsDoThenParseType(() => this.expect(token));
+ }
+
+ tsNextThenParseType() {
+ return this.tsDoThenParseType(() => this.next());
+ }
+
+ tsDoThenParseType(cb) {
+ return this.tsInType(() => {
+ cb();
+ return this.tsParseType();
+ });
+ }
+
+ tsParseEnumMember() {
+ const node = this.startNode();
+ node.id = this.match(123) ? this.parseExprAtom() : this.parseIdentifier(true);
+
+ if (this.eat(27)) {
+ node.initializer = this.parseMaybeAssignAllowIn();
+ }
+
+ return this.finishNode(node, "TSEnumMember");
+ }
+
+ tsParseEnumDeclaration(node, isConst) {
+ if (isConst) node.const = true;
+ node.id = this.parseIdentifier();
+ this.checkLVal(node.id, "typescript enum declaration", isConst ? BIND_TS_CONST_ENUM : BIND_TS_ENUM);
+ this.expect(5);
+ node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
+ this.expect(8);
+ return this.finishNode(node, "TSEnumDeclaration");
+ }
+
+ tsParseModuleBlock() {
+ const node = this.startNode();
+ this.scope.enter(SCOPE_OTHER);
+ this.expect(5);
+ this.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8);
+ this.scope.exit();
+ return this.finishNode(node, "TSModuleBlock");
+ }
+
+ tsParseModuleOrNamespaceDeclaration(node, nested = false) {
+ node.id = this.parseIdentifier();
+
+ if (!nested) {
+ this.checkLVal(node.id, "module or namespace declaration", BIND_TS_NAMESPACE);
+ }
+
+ if (this.eat(16)) {
+ const inner = this.startNode();
+ this.tsParseModuleOrNamespaceDeclaration(inner, true);
+ node.body = inner;
+ } else {
+ this.scope.enter(SCOPE_TS_MODULE);
+ this.prodParam.enter(PARAM);
+ node.body = this.tsParseModuleBlock();
+ this.prodParam.exit();
+ this.scope.exit();
+ }
+
+ return this.finishNode(node, "TSModuleDeclaration");
+ }
+
+ tsParseAmbientExternalModuleDeclaration(node) {
+ if (this.isContextual(103)) {
+ node.global = true;
+ node.id = this.parseIdentifier();
+ } else if (this.match(123)) {
+ node.id = this.parseExprAtom();
+ } else {
+ this.unexpected();
+ }
+
+ if (this.match(5)) {
+ this.scope.enter(SCOPE_TS_MODULE);
+ this.prodParam.enter(PARAM);
+ node.body = this.tsParseModuleBlock();
+ this.prodParam.exit();
+ this.scope.exit();
+ } else {
+ this.semicolon();
+ }
+
+ return this.finishNode(node, "TSModuleDeclaration");
+ }
+
+ tsParseImportEqualsDeclaration(node, isExport) {
+ node.isExport = isExport || false;
+ node.id = this.parseIdentifier();
+ this.checkLVal(node.id, "import equals declaration", BIND_LEXICAL);
+ this.expect(27);
+ const moduleReference = this.tsParseModuleReference();
+
+ if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") {
+ this.raise(moduleReference.start, TSErrors.ImportAliasHasImportType);
+ }
+
+ node.moduleReference = moduleReference;
+ this.semicolon();
+ return this.finishNode(node, "TSImportEqualsDeclaration");
+ }
+
+ tsIsExternalModuleReference() {
+ return this.isContextual(110) && this.lookaheadCharCode() === 40;
+ }
+
+ tsParseModuleReference() {
+ return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);
+ }
+
+ tsParseExternalModuleReference() {
+ const node = this.startNode();
+ this.expectContextual(110);
+ this.expect(10);
+
+ if (!this.match(123)) {
+ throw this.unexpected();
+ }
+
+ node.expression = this.parseExprAtom();
+ this.expect(11);
+ return this.finishNode(node, "TSExternalModuleReference");
+ }
+
+ tsLookAhead(f) {
+ const state = this.state.clone();
+ const res = f();
+ this.state = state;
+ return res;
+ }
+
+ tsTryParseAndCatch(f) {
+ const result = this.tryParse(abort => f() || abort());
+ if (result.aborted || !result.node) return undefined;
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+
+ tsTryParse(f) {
+ const state = this.state.clone();
+ const result = f();
+
+ if (result !== undefined && result !== false) {
+ return result;
+ } else {
+ this.state = state;
+ return undefined;
+ }
+ }
+
+ tsTryParseDeclare(nany) {
+ if (this.isLineTerminator()) {
+ return;
+ }
+
+ let starttype = this.state.type;
+ let kind;
+
+ if (this.isContextual(93)) {
+ starttype = 68;
+ kind = "let";
+ }
+
+ return this.tsInAmbientContext(() => {
+ switch (starttype) {
+ case 62:
+ nany.declare = true;
+ return this.parseFunctionStatement(nany, false, true);
+
+ case 74:
+ nany.declare = true;
+ return this.parseClass(nany, true, false);
+
+ case 69:
+ if (this.match(69) && this.isLookaheadContextual("enum")) {
+ this.expect(69);
+ this.expectContextual(116);
+ return this.tsParseEnumDeclaration(nany, true);
+ }
+
+ case 68:
+ kind = kind || this.state.value;
+ return this.parseVarStatement(nany, kind);
+
+ case 103:
+ return this.tsParseAmbientExternalModuleDeclaration(nany);
+
+ default:
+ {
+ if (tokenIsIdentifier(starttype)) {
+ return this.tsParseDeclaration(nany, this.state.value, true);
+ }
+ }
+ }
+ });
+ }
+
+ tsTryParseExportDeclaration() {
+ return this.tsParseDeclaration(this.startNode(), this.state.value, true);
+ }
+
+ tsParseExpressionStatement(node, expr) {
+ switch (expr.name) {
+ case "declare":
+ {
+ const declaration = this.tsTryParseDeclare(node);
+
+ if (declaration) {
+ declaration.declare = true;
+ return declaration;
+ }
+
+ break;
+ }
+
+ case "global":
+ if (this.match(5)) {
+ this.scope.enter(SCOPE_TS_MODULE);
+ this.prodParam.enter(PARAM);
+ const mod = node;
+ mod.global = true;
+ mod.id = expr;
+ mod.body = this.tsParseModuleBlock();
+ this.scope.exit();
+ this.prodParam.exit();
+ return this.finishNode(mod, "TSModuleDeclaration");
+ }
+
+ break;
+
+ default:
+ return this.tsParseDeclaration(node, expr.name, false);
+ }
+ }
+
+ tsParseDeclaration(node, value, next) {
+ switch (value) {
+ case "abstract":
+ if (this.tsCheckLineTerminator(next) && (this.match(74) || tokenIsIdentifier(this.state.type))) {
+ return this.tsParseAbstractDeclaration(node);
+ }
+
+ break;
+
+ case "enum":
+ if (next || tokenIsIdentifier(this.state.type)) {
+ if (next) this.next();
+ return this.tsParseEnumDeclaration(node, false);
+ }
+
+ break;
+
+ case "interface":
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ return this.tsParseInterfaceDeclaration(node);
+ }
+
+ break;
+
+ case "module":
+ if (this.tsCheckLineTerminator(next)) {
+ if (this.match(123)) {
+ return this.tsParseAmbientExternalModuleDeclaration(node);
+ } else if (tokenIsIdentifier(this.state.type)) {
+ return this.tsParseModuleOrNamespaceDeclaration(node);
+ }
+ }
+
+ break;
+
+ case "namespace":
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ return this.tsParseModuleOrNamespaceDeclaration(node);
+ }
+
+ break;
+
+ case "type":
+ if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
+ return this.tsParseTypeAliasDeclaration(node);
+ }
+
+ break;
+ }
+ }
+
+ tsCheckLineTerminator(next) {
+ if (next) {
+ if (this.hasFollowingLineBreak()) return false;
+ this.next();
+ return true;
+ }
+
+ return !this.isLineTerminator();
+ }
+
+ tsTryParseGenericAsyncArrowFunction(startPos, startLoc) {
+ if (!this.match(43)) {
+ return undefined;
+ }
+
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ this.state.maybeInArrowParameters = true;
+ const res = this.tsTryParseAndCatch(() => {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.typeParameters = this.tsParseTypeParameters();
+ super.parseFunctionParams(node);
+ node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();
+ this.expect(19);
+ return node;
+ });
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+
+ if (!res) {
+ return undefined;
+ }
+
+ return this.parseArrowExpression(res, null, true);
+ }
+
+ tsParseTypeArguments() {
+ const node = this.startNode();
+ node.params = this.tsInType(() => this.tsInNoContext(() => {
+ this.expect(43);
+ return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this));
+ }));
+
+ if (node.params.length === 0) {
+ this.raise(node.start, TSErrors.EmptyTypeArguments);
+ }
+
+ this.expect(44);
+ return this.finishNode(node, "TSTypeParameterInstantiation");
+ }
+
+ tsIsDeclarationStart() {
+ return tokenIsTSDeclarationStart(this.state.type);
+ }
+
+ isExportDefaultSpecifier() {
+ if (this.tsIsDeclarationStart()) return false;
+ return super.isExportDefaultSpecifier();
+ }
+
+ parseAssignableListItem(allowModifiers, decorators) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ let accessibility;
+ let readonly = false;
+ let override = false;
+
+ if (allowModifiers !== undefined) {
+ const modified = {};
+ this.tsParseModifiers(modified, ["public", "private", "protected", "override", "readonly"]);
+ accessibility = modified.accessibility;
+ override = modified.override;
+ readonly = modified.readonly;
+
+ if (allowModifiers === false && (accessibility || readonly || override)) {
+ this.raise(startPos, TSErrors.UnexpectedParameterModifier);
+ }
+ }
+
+ const left = this.parseMaybeDefault();
+ this.parseAssignableListItemTypes(left);
+ const elt = this.parseMaybeDefault(left.start, left.loc.start, left);
+
+ if (accessibility || readonly || override) {
+ const pp = this.startNodeAt(startPos, startLoc);
+
+ if (decorators.length) {
+ pp.decorators = decorators;
+ }
+
+ if (accessibility) pp.accessibility = accessibility;
+ if (readonly) pp.readonly = readonly;
+ if (override) pp.override = override;
+
+ if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
+ this.raise(pp.start, TSErrors.UnsupportedParameterPropertyKind);
+ }
+
+ pp.parameter = elt;
+ return this.finishNode(pp, "TSParameterProperty");
+ }
+
+ if (decorators.length) {
+ left.decorators = decorators;
+ }
+
+ return elt;
+ }
+
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ if (this.match(14)) {
+ node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
+ }
+
+ const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined;
+
+ if (bodilessType && !this.match(5) && this.isLineTerminator()) {
+ this.finishNode(node, bodilessType);
+ return;
+ }
+
+ if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) {
+ this.raise(node.start, TSErrors.DeclareFunctionHasImplementation);
+
+ if (node.declare) {
+ super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);
+ return;
+ }
+ }
+
+ super.parseFunctionBodyAndFinish(node, type, isMethod);
+ }
+
+ registerFunctionStatementId(node) {
+ if (!node.body && node.id) {
+ this.checkLVal(node.id, "function name", BIND_TS_AMBIENT);
+ } else {
+ super.registerFunctionStatementId(...arguments);
+ }
+ }
+
+ tsCheckForInvalidTypeCasts(items) {
+ items.forEach(node => {
+ if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") {
+ this.raise(node.typeAnnotation.start, TSErrors.UnexpectedTypeAnnotation);
+ }
+ });
+ }
+
+ toReferencedList(exprList, isInParens) {
+ this.tsCheckForInvalidTypeCasts(exprList);
+ return exprList;
+ }
+
+ parseArrayLike(...args) {
+ const node = super.parseArrayLike(...args);
+
+ if (node.type === "ArrayExpression") {
+ this.tsCheckForInvalidTypeCasts(node.elements);
+ }
+
+ return node;
+ }
+
+ parseSubscript(base, startPos, startLoc, noCalls, state) {
+ if (!this.hasPrecedingLineBreak() && this.match(33)) {
+ this.state.canStartJSXElement = false;
+ this.next();
+ const nonNullExpression = this.startNodeAt(startPos, startLoc);
+ nonNullExpression.expression = base;
+ return this.finishNode(nonNullExpression, "TSNonNullExpression");
+ }
+
+ let isOptionalCall = false;
+
+ if (this.match(18) && this.lookaheadCharCode() === 60) {
+ if (noCalls) {
+ state.stop = true;
+ return base;
+ }
+
+ state.optionalChainMember = isOptionalCall = true;
+ this.next();
+ }
+
+ if (this.match(43)) {
+ let missingParenErrorPos;
+ const result = this.tsTryParseAndCatch(() => {
+ if (!noCalls && this.atPossibleAsyncArrow(base)) {
+ const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startPos, startLoc);
+
+ if (asyncArrowFn) {
+ return asyncArrowFn;
+ }
+ }
+
+ const node = this.startNodeAt(startPos, startLoc);
+ node.callee = base;
+ const typeArguments = this.tsParseTypeArguments();
+
+ if (typeArguments) {
+ if (isOptionalCall && !this.match(10)) {
+ missingParenErrorPos = this.state.pos;
+ this.unexpected();
+ }
+
+ if (!noCalls && this.eat(10)) {
+ node.arguments = this.parseCallExpressionArguments(11, false);
+ this.tsCheckForInvalidTypeCasts(node.arguments);
+ node.typeParameters = typeArguments;
+
+ if (state.optionalChainMember) {
+ node.optional = isOptionalCall;
+ }
+
+ return this.finishCallExpression(node, state.optionalChainMember);
+ } else if (this.match(22)) {
+ const result = this.parseTaggedTemplateExpression(base, startPos, startLoc, state);
+ result.typeParameters = typeArguments;
+ return result;
+ }
+ }
+
+ this.unexpected();
+ });
+
+ if (missingParenErrorPos) {
+ this.unexpected(missingParenErrorPos, 10);
+ }
+
+ if (result) return result;
+ }
+
+ return super.parseSubscript(base, startPos, startLoc, noCalls, state);
+ }
+
+ parseNewArguments(node) {
+ if (this.match(43)) {
+ const typeParameters = this.tsTryParseAndCatch(() => {
+ const args = this.tsParseTypeArguments();
+ if (!this.match(10)) this.unexpected();
+ return args;
+ });
+
+ if (typeParameters) {
+ node.typeParameters = typeParameters;
+ }
+ }
+
+ super.parseNewArguments(node);
+ }
+
+ parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {
+ if (tokenOperatorPrecedence(52) > minPrec && !this.hasPrecedingLineBreak() && this.isContextual(87)) {
+ const node = this.startNodeAt(leftStartPos, leftStartLoc);
+ node.expression = left;
+
+ const _const = this.tsTryNextParseConstantContext();
+
+ if (_const) {
+ node.typeAnnotation = _const;
+ } else {
+ node.typeAnnotation = this.tsNextThenParseType();
+ }
+
+ this.finishNode(node, "TSAsExpression");
+ this.reScan_lt_gt();
+ return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);
+ }
+
+ return super.parseExprOp(left, leftStartPos, leftStartLoc, minPrec);
+ }
+
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {}
+
+ checkDuplicateExports() {}
+
+ parseImport(node) {
+ node.importKind = "value";
+
+ if (tokenIsIdentifier(this.state.type) || this.match(49) || this.match(5)) {
+ let ahead = this.lookahead();
+
+ if (this.isContextual(120) && ahead.type !== 12 && ahead.type !== 91 && ahead.type !== 27) {
+ node.importKind = "type";
+ this.next();
+ ahead = this.lookahead();
+ }
+
+ if (tokenIsIdentifier(this.state.type) && ahead.type === 27) {
+ return this.tsParseImportEqualsDeclaration(node);
+ }
+ }
+
+ const importNode = super.parseImport(node);
+
+ if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") {
+ this.raise(importNode.start, TSErrors.TypeImportCannotSpecifyDefaultAndNamed);
+ }
+
+ return importNode;
+ }
+
+ parseExport(node) {
+ if (this.match(77)) {
+ this.next();
+
+ if (this.isContextual(120) && this.lookaheadCharCode() !== 61) {
+ node.importKind = "type";
+ this.next();
+ } else {
+ node.importKind = "value";
+ }
+
+ return this.tsParseImportEqualsDeclaration(node, true);
+ } else if (this.eat(27)) {
+ const assign = node;
+ assign.expression = this.parseExpression();
+ this.semicolon();
+ return this.finishNode(assign, "TSExportAssignment");
+ } else if (this.eatContextual(87)) {
+ const decl = node;
+ this.expectContextual(118);
+ decl.id = this.parseIdentifier();
+ this.semicolon();
+ return this.finishNode(decl, "TSNamespaceExportDeclaration");
+ } else {
+ if (this.isContextual(120) && this.lookahead().type === 5) {
+ this.next();
+ node.exportKind = "type";
+ } else {
+ node.exportKind = "value";
+ }
+
+ return super.parseExport(node);
+ }
+ }
+
+ isAbstractClass() {
+ return this.isContextual(114) && this.lookahead().type === 74;
+ }
+
+ parseExportDefaultExpression() {
+ if (this.isAbstractClass()) {
+ const cls = this.startNode();
+ this.next();
+ cls.abstract = true;
+ this.parseClass(cls, true, true);
+ return cls;
+ }
+
+ if (this.match(119)) {
+ const interfaceNode = this.startNode();
+ this.next();
+ const result = this.tsParseInterfaceDeclaration(interfaceNode);
+ if (result) return result;
+ }
+
+ return super.parseExportDefaultExpression();
+ }
+
+ parseStatementContent(context, topLevel) {
+ if (this.state.type === 69) {
+ const ahead = this.lookahead();
+
+ if (ahead.type === 116) {
+ const node = this.startNode();
+ this.next();
+ this.expectContextual(116);
+ return this.tsParseEnumDeclaration(node, true);
+ }
+ }
+
+ return super.parseStatementContent(context, topLevel);
+ }
+
+ parseAccessModifier() {
+ return this.tsParseModifier(["public", "protected", "private"]);
+ }
+
+ tsHasSomeModifiers(member, modifiers) {
+ return modifiers.some(modifier => {
+ if (tsIsAccessModifier(modifier)) {
+ return member.accessibility === modifier;
+ }
+
+ return !!member[modifier];
+ });
+ }
+
+ tsIsStartOfStaticBlocks() {
+ return this.isContextual(98) && this.lookaheadCharCode() === 123;
+ }
+
+ parseClassMember(classBody, member, state) {
+ const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"];
+ this.tsParseModifiers(member, modifiers, undefined, undefined, true);
+
+ const callParseClassMemberWithIsStatic = () => {
+ if (this.tsIsStartOfStaticBlocks()) {
+ this.next();
+ this.next();
+
+ if (this.tsHasSomeModifiers(member, modifiers)) {
+ this.raise(this.state.pos, TSErrors.StaticBlockCannotHaveModifier);
+ }
+
+ this.parseClassStaticBlock(classBody, member);
+ } else {
+ this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static);
+ }
+ };
+
+ if (member.declare) {
+ this.tsInAmbientContext(callParseClassMemberWithIsStatic);
+ } else {
+ callParseClassMemberWithIsStatic();
+ }
+ }
+
+ parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
+ const idx = this.tsTryParseIndexSignature(member);
+
+ if (idx) {
+ classBody.body.push(idx);
+
+ if (member.abstract) {
+ this.raise(member.start, TSErrors.IndexSignatureHasAbstract);
+ }
+
+ if (member.accessibility) {
+ this.raise(member.start, TSErrors.IndexSignatureHasAccessibility, member.accessibility);
+ }
+
+ if (member.declare) {
+ this.raise(member.start, TSErrors.IndexSignatureHasDeclare);
+ }
+
+ if (member.override) {
+ this.raise(member.start, TSErrors.IndexSignatureHasOverride);
+ }
+
+ return;
+ }
+
+ if (!this.state.inAbstractClass && member.abstract) {
+ this.raise(member.start, TSErrors.NonAbstractClassHasAbstractMethod);
+ }
+
+ if (member.override) {
+ if (!state.hadSuperClass) {
+ this.raise(member.start, TSErrors.OverrideNotInSubClass);
+ }
+ }
+
+ super.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
+ }
+
+ parsePostMemberNameModifiers(methodOrProp) {
+ const optional = this.eat(17);
+ if (optional) methodOrProp.optional = true;
+
+ if (methodOrProp.readonly && this.match(10)) {
+ this.raise(methodOrProp.start, TSErrors.ClassMethodHasReadonly);
+ }
+
+ if (methodOrProp.declare && this.match(10)) {
+ this.raise(methodOrProp.start, TSErrors.ClassMethodHasDeclare);
+ }
+ }
+
+ parseExpressionStatement(node, expr) {
+ const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr) : undefined;
+ return decl || super.parseExpressionStatement(node, expr);
+ }
+
+ shouldParseExportDeclaration() {
+ if (this.tsIsDeclarationStart()) return true;
+ return super.shouldParseExportDeclaration();
+ }
+
+ parseConditional(expr, startPos, startLoc, refExpressionErrors) {
+ if (!this.state.maybeInArrowParameters || !this.match(17)) {
+ return super.parseConditional(expr, startPos, startLoc, refExpressionErrors);
+ }
+
+ const result = this.tryParse(() => super.parseConditional(expr, startPos, startLoc));
+
+ if (!result.node) {
+ if (result.error) {
+ super.setOptionalParametersError(refExpressionErrors, result.error);
+ }
+
+ return expr;
+ }
+
+ if (result.error) this.state = result.failState;
+ return result.node;
+ }
+
+ parseParenItem(node, startPos, startLoc) {
+ node = super.parseParenItem(node, startPos, startLoc);
+
+ if (this.eat(17)) {
+ node.optional = true;
+ this.resetEndLocation(node);
+ }
+
+ if (this.match(14)) {
+ const typeCastNode = this.startNodeAt(startPos, startLoc);
+ typeCastNode.expression = node;
+ typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();
+ return this.finishNode(typeCastNode, "TSTypeCastExpression");
+ }
+
+ return node;
+ }
+
+ parseExportDeclaration(node) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const isDeclare = this.eatContextual(115);
+
+ if (isDeclare && (this.isContextual(115) || !this.shouldParseExportDeclaration())) {
+ throw this.raise(this.state.start, TSErrors.ExpectedAmbientAfterExportDeclare);
+ }
+
+ let declaration;
+
+ if (tokenIsIdentifier(this.state.type)) {
+ declaration = this.tsTryParseExportDeclaration();
+ }
+
+ if (!declaration) {
+ declaration = super.parseExportDeclaration(node);
+ }
+
+ if (declaration && (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare)) {
+ node.exportKind = "type";
+ }
+
+ if (declaration && isDeclare) {
+ this.resetStartLocation(declaration, startPos, startLoc);
+ declaration.declare = true;
+ }
+
+ return declaration;
+ }
+
+ parseClassId(node, isStatement, optionalId) {
+ if ((!isStatement || optionalId) && this.isContextual(104)) {
+ return;
+ }
+
+ super.parseClassId(node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS);
+ const typeParameters = this.tsTryParseTypeParameters();
+ if (typeParameters) node.typeParameters = typeParameters;
+ }
+
+ parseClassPropertyAnnotation(node) {
+ if (!node.optional && this.eat(33)) {
+ node.definite = true;
+ }
+
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) node.typeAnnotation = type;
+ }
+
+ parseClassProperty(node) {
+ this.parseClassPropertyAnnotation(node);
+
+ if (this.state.isAmbientContext && this.match(27)) {
+ this.raise(this.state.start, TSErrors.DeclareClassFieldHasInitializer);
+ }
+
+ if (node.abstract && this.match(27)) {
+ const {
+ key
+ } = node;
+ this.raise(this.state.start, TSErrors.AbstractPropertyHasInitializer, key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);
+ }
+
+ return super.parseClassProperty(node);
+ }
+
+ parseClassPrivateProperty(node) {
+ if (node.abstract) {
+ this.raise(node.start, TSErrors.PrivateElementHasAbstract);
+ }
+
+ if (node.accessibility) {
+ this.raise(node.start, TSErrors.PrivateElementHasAccessibility, node.accessibility);
+ }
+
+ this.parseClassPropertyAnnotation(node);
+ return super.parseClassPrivateProperty(node);
+ }
+
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ const typeParameters = this.tsTryParseTypeParameters();
+
+ if (typeParameters && isConstructor) {
+ this.raise(typeParameters.start, TSErrors.ConstructorHasTypeParameters);
+ }
+
+ if (method.declare && (method.kind === "get" || method.kind === "set")) {
+ this.raise(method.start, TSErrors.DeclareAccessor, method.kind);
+ }
+
+ if (typeParameters) method.typeParameters = typeParameters;
+ super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
+ }
+
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ const typeParameters = this.tsTryParseTypeParameters();
+ if (typeParameters) method.typeParameters = typeParameters;
+ super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);
+ }
+
+ declareClassPrivateMethodInScope(node, kind) {
+ if (node.type === "TSDeclareMethod") return;
+ if (node.type === "MethodDefinition" && !node.value.body) return;
+ super.declareClassPrivateMethodInScope(node, kind);
+ }
+
+ parseClassSuper(node) {
+ super.parseClassSuper(node);
+
+ if (node.superClass && this.match(43)) {
+ node.superTypeParameters = this.tsParseTypeArguments();
+ }
+
+ if (this.eatContextual(104)) {
+ node.implements = this.tsParseHeritageClause("implements");
+ }
+ }
+
+ parseObjPropValue(prop, ...args) {
+ const typeParameters = this.tsTryParseTypeParameters();
+ if (typeParameters) prop.typeParameters = typeParameters;
+ super.parseObjPropValue(prop, ...args);
+ }
+
+ parseFunctionParams(node, allowModifiers) {
+ const typeParameters = this.tsTryParseTypeParameters();
+ if (typeParameters) node.typeParameters = typeParameters;
+ super.parseFunctionParams(node, allowModifiers);
+ }
+
+ parseVarId(decl, kind) {
+ super.parseVarId(decl, kind);
+
+ if (decl.id.type === "Identifier" && this.eat(33)) {
+ decl.definite = true;
+ }
+
+ const type = this.tsTryParseTypeAnnotation();
+
+ if (type) {
+ decl.id.typeAnnotation = type;
+ this.resetEndLocation(decl.id);
+ }
+ }
+
+ parseAsyncArrowFromCallExpression(node, call) {
+ if (this.match(14)) {
+ node.returnType = this.tsParseTypeAnnotation();
+ }
+
+ return super.parseAsyncArrowFromCallExpression(node, call);
+ }
+
+ parseMaybeAssign(...args) {
+ var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2, _jsx4, _typeCast3;
+
+ let state;
+ let jsx;
+ let typeCast;
+
+ if (this.hasPlugin("jsx") && (this.match(132) || this.match(43))) {
+ state = this.state.clone();
+ jsx = this.tryParse(() => super.parseMaybeAssign(...args), state);
+ if (!jsx.error) return jsx.node;
+ const {
+ context
+ } = this.state;
+
+ if (context[context.length - 1] === types.j_oTag) {
+ context.length -= 2;
+ } else if (context[context.length - 1] === types.j_expr) {
+ context.length -= 1;
+ }
+ }
+
+ if (!((_jsx = jsx) != null && _jsx.error) && !this.match(43)) {
+ return super.parseMaybeAssign(...args);
+ }
+
+ let typeParameters;
+ state = state || this.state.clone();
+ const arrow = this.tryParse(abort => {
+ var _expr$extra, _typeParameters;
+
+ typeParameters = this.tsParseTypeParameters();
+ const expr = super.parseMaybeAssign(...args);
+
+ if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
+ abort();
+ }
+
+ if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {
+ this.resetStartLocationFromNode(expr, typeParameters);
+ }
+
+ expr.typeParameters = typeParameters;
+ return expr;
+ }, state);
+
+ if (!arrow.error && !arrow.aborted) {
+ if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
+ return arrow.node;
+ }
+
+ if (!jsx) {
+ assert(!this.hasPlugin("jsx"));
+ typeCast = this.tryParse(() => super.parseMaybeAssign(...args), state);
+ if (!typeCast.error) return typeCast.node;
+ }
+
+ if ((_jsx2 = jsx) != null && _jsx2.node) {
+ this.state = jsx.failState;
+ return jsx.node;
+ }
+
+ if (arrow.node) {
+ this.state = arrow.failState;
+ if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
+ return arrow.node;
+ }
+
+ if ((_typeCast = typeCast) != null && _typeCast.node) {
+ this.state = typeCast.failState;
+ return typeCast.node;
+ }
+
+ if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;
+ if (arrow.thrown) throw arrow.error;
+ if ((_typeCast2 = typeCast) != null && _typeCast2.thrown) throw typeCast.error;
+ throw ((_jsx4 = jsx) == null ? void 0 : _jsx4.error) || arrow.error || ((_typeCast3 = typeCast) == null ? void 0 : _typeCast3.error);
+ }
+
+ reportReservedArrowTypeParam(node) {
+ var _node$extra;
+
+ if (node.params.length === 1 && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
+ this.raise(node.start, TSErrors.ReservedArrowTypeParam);
+ }
+ }
+
+ parseMaybeUnary(refExpressionErrors) {
+ if (!this.hasPlugin("jsx") && this.match(43)) {
+ return this.tsParseTypeAssertion();
+ } else {
+ return super.parseMaybeUnary(refExpressionErrors);
+ }
+ }
+
+ parseArrow(node) {
+ if (this.match(14)) {
+ const result = this.tryParse(abort => {
+ const returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
+ if (this.canInsertSemicolon() || !this.match(19)) abort();
+ return returnType;
+ });
+ if (result.aborted) return;
+
+ if (!result.thrown) {
+ if (result.error) this.state = result.failState;
+ node.returnType = result.node;
+ }
+ }
+
+ return super.parseArrow(node);
+ }
+
+ parseAssignableListItemTypes(param) {
+ if (this.eat(17)) {
+ if (param.type !== "Identifier" && !this.state.isAmbientContext && !this.state.inType) {
+ this.raise(param.start, TSErrors.PatternIsOptional);
+ }
+
+ param.optional = true;
+ }
+
+ const type = this.tsTryParseTypeAnnotation();
+ if (type) param.typeAnnotation = type;
+ this.resetEndLocation(param);
+ return param;
+ }
+
+ isAssignable(node, isBinding) {
+ switch (node.type) {
+ case "TSTypeCastExpression":
+ return this.isAssignable(node.expression, isBinding);
+
+ case "TSParameterProperty":
+ return true;
+
+ default:
+ return super.isAssignable(node, isBinding);
+ }
+ }
+
+ toAssignable(node, isLHS = false) {
+ switch (node.type) {
+ case "TSTypeCastExpression":
+ return super.toAssignable(this.typeCastToParameter(node), isLHS);
+
+ case "TSParameterProperty":
+ return super.toAssignable(node, isLHS);
+
+ case "ParenthesizedExpression":
+ return this.toAssignableParenthesizedExpression(node, isLHS);
+
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "TSTypeAssertion":
+ node.expression = this.toAssignable(node.expression, isLHS);
+ return node;
+
+ default:
+ return super.toAssignable(node, isLHS);
+ }
+ }
+
+ toAssignableParenthesizedExpression(node, isLHS) {
+ switch (node.expression.type) {
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "TSTypeAssertion":
+ case "ParenthesizedExpression":
+ node.expression = this.toAssignable(node.expression, isLHS);
+ return node;
+
+ default:
+ return super.toAssignable(node, isLHS);
+ }
+ }
+
+ checkLVal(expr, contextDescription, ...args) {
+ var _expr$extra2;
+
+ switch (expr.type) {
+ case "TSTypeCastExpression":
+ return;
+
+ case "TSParameterProperty":
+ this.checkLVal(expr.parameter, "parameter property", ...args);
+ return;
+
+ case "TSAsExpression":
+ case "TSTypeAssertion":
+ if (!args[0] && contextDescription !== "parenthesized expression" && !((_expr$extra2 = expr.extra) != null && _expr$extra2.parenthesized)) {
+ this.raise(expr.start, ErrorMessages.InvalidLhs, contextDescription);
+ break;
+ }
+
+ this.checkLVal(expr.expression, "parenthesized expression", ...args);
+ return;
+
+ case "TSNonNullExpression":
+ this.checkLVal(expr.expression, contextDescription, ...args);
+ return;
+
+ default:
+ super.checkLVal(expr, contextDescription, ...args);
+ return;
+ }
+ }
+
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 72:
+ return this.parseIdentifier(true);
+
+ default:
+ return super.parseBindingAtom();
+ }
+ }
+
+ parseMaybeDecoratorArguments(expr) {
+ if (this.match(43)) {
+ const typeArguments = this.tsParseTypeArguments();
+
+ if (this.match(10)) {
+ const call = super.parseMaybeDecoratorArguments(expr);
+ call.typeParameters = typeArguments;
+ return call;
+ }
+
+ this.unexpected(this.state.start, 10);
+ }
+
+ return super.parseMaybeDecoratorArguments(expr);
+ }
+
+ checkCommaAfterRest(close) {
+ if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {
+ this.next();
+ } else {
+ super.checkCommaAfterRest(close);
+ }
+ }
+
+ isClassMethod() {
+ return this.match(43) || super.isClassMethod();
+ }
+
+ isClassProperty() {
+ return this.match(33) || this.match(14) || super.isClassProperty();
+ }
+
+ parseMaybeDefault(...args) {
+ const node = super.parseMaybeDefault(...args);
+
+ if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
+ this.raise(node.typeAnnotation.start, TSErrors.TypeAnnotationAfterAssign);
+ }
+
+ return node;
+ }
+
+ getTokenFromCode(code) {
+ if (this.state.inType) {
+ if (code === 62) {
+ return this.finishOp(44, 1);
+ }
+
+ if (code === 60) {
+ return this.finishOp(43, 1);
+ }
+ }
+
+ return super.getTokenFromCode(code);
+ }
+
+ reScan_lt_gt() {
+ const {
+ type
+ } = this.state;
+
+ if (type === 43) {
+ this.state.pos -= 1;
+ this.readToken_lt();
+ } else if (type === 44) {
+ this.state.pos -= 1;
+ this.readToken_gt();
+ }
+ }
+
+ toAssignableList(exprList) {
+ for (let i = 0; i < exprList.length; i++) {
+ const expr = exprList[i];
+ if (!expr) continue;
+
+ switch (expr.type) {
+ case "TSTypeCastExpression":
+ exprList[i] = this.typeCastToParameter(expr);
+ break;
+
+ case "TSAsExpression":
+ case "TSTypeAssertion":
+ if (!this.state.maybeInArrowParameters) {
+ exprList[i] = this.typeCastToParameter(expr);
+ } else {
+ this.raise(expr.start, TSErrors.UnexpectedTypeCastInParameter);
+ }
+
+ break;
+ }
+ }
+
+ return super.toAssignableList(...arguments);
+ }
+
+ typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ this.resetEndLocation(node.expression, node.typeAnnotation.end, node.typeAnnotation.loc.end);
+ return node.expression;
+ }
+
+ shouldParseArrow(params) {
+ if (this.match(14)) {
+ return params.every(expr => this.isAssignable(expr, true));
+ }
+
+ return super.shouldParseArrow(params);
+ }
+
+ shouldParseAsyncArrow() {
+ return this.match(14) || super.shouldParseAsyncArrow();
+ }
+
+ canHaveLeadingDecorator() {
+ return super.canHaveLeadingDecorator() || this.isAbstractClass();
+ }
+
+ jsxParseOpeningElementAfterName(node) {
+ if (this.match(43)) {
+ const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArguments());
+ if (typeArguments) node.typeParameters = typeArguments;
+ }
+
+ return super.jsxParseOpeningElementAfterName(node);
+ }
+
+ getGetterSetterExpectedParamCount(method) {
+ const baseCount = super.getGetterSetterExpectedParamCount(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ const firstParam = params[0];
+ const hasContextParam = firstParam && this.isThisParam(firstParam);
+ return hasContextParam ? baseCount + 1 : baseCount;
+ }
+
+ parseCatchClauseParam() {
+ const param = super.parseCatchClauseParam();
+ const type = this.tsTryParseTypeAnnotation();
+
+ if (type) {
+ param.typeAnnotation = type;
+ this.resetEndLocation(param);
+ }
+
+ return param;
+ }
+
+ tsInAmbientContext(cb) {
+ const oldIsAmbientContext = this.state.isAmbientContext;
+ this.state.isAmbientContext = true;
+
+ try {
+ return cb();
+ } finally {
+ this.state.isAmbientContext = oldIsAmbientContext;
+ }
+ }
+
+ parseClass(node, ...args) {
+ const oldInAbstractClass = this.state.inAbstractClass;
+ this.state.inAbstractClass = !!node.abstract;
+
+ try {
+ return super.parseClass(node, ...args);
+ } finally {
+ this.state.inAbstractClass = oldInAbstractClass;
+ }
+ }
+
+ tsParseAbstractDeclaration(node) {
+ if (this.match(74)) {
+ node.abstract = true;
+ return this.parseClass(node, true, false);
+ } else if (this.isContextual(119)) {
+ if (!this.hasFollowingLineBreak()) {
+ node.abstract = true;
+ this.raise(node.start, TSErrors.NonClassMethodPropertyHasAbstractModifer);
+ this.next();
+ return this.tsParseInterfaceDeclaration(node);
+ }
+ } else {
+ this.unexpected(null, 74);
+ }
+ }
+
+ parseMethod(...args) {
+ const method = super.parseMethod(...args);
+
+ if (method.abstract) {
+ const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body;
+
+ if (hasBody) {
+ const {
+ key
+ } = method;
+ this.raise(method.start, TSErrors.AbstractMethodHasImplementation, key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]`);
+ }
+ }
+
+ return method;
+ }
+
+ tsParseTypeParameterName() {
+ const typeName = this.parseIdentifier();
+ return typeName.name;
+ }
+
+ shouldParseAsAmbientContext() {
+ return !!this.getPluginOption("typescript", "dts");
+ }
+
+ parse() {
+ if (this.shouldParseAsAmbientContext()) {
+ this.state.isAmbientContext = true;
+ }
+
+ return super.parse();
+ }
+
+ getExpression() {
+ if (this.shouldParseAsAmbientContext()) {
+ this.state.isAmbientContext = true;
+ }
+
+ return super.getExpression();
+ }
+
+ parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
+ if (!isString && isMaybeTypeOnly) {
+ this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);
+ return this.finishNode(node, "ExportSpecifier");
+ }
+
+ node.exportKind = "value";
+ return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly);
+ }
+
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {
+ if (!importedIsString && isMaybeTypeOnly) {
+ this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);
+ return this.finishNode(specifier, "ImportSpecifier");
+ }
+
+ specifier.importKind = "value";
+ return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly);
+ }
+
+ parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {
+ const leftOfAsKey = isImport ? "imported" : "local";
+ const rightOfAsKey = isImport ? "local" : "exported";
+ let leftOfAs = node[leftOfAsKey];
+ let rightOfAs;
+ let hasTypeSpecifier = false;
+ let canParseAsKeyword = true;
+ const pos = leftOfAs.start;
+
+ if (this.isContextual(87)) {
+ const firstAs = this.parseIdentifier();
+
+ if (this.isContextual(87)) {
+ const secondAs = this.parseIdentifier();
+
+ if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ hasTypeSpecifier = true;
+ leftOfAs = firstAs;
+ rightOfAs = this.parseIdentifier();
+ canParseAsKeyword = false;
+ } else {
+ rightOfAs = secondAs;
+ canParseAsKeyword = false;
+ }
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ canParseAsKeyword = false;
+ rightOfAs = this.parseIdentifier();
+ } else {
+ hasTypeSpecifier = true;
+ leftOfAs = firstAs;
+ }
+ } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
+ hasTypeSpecifier = true;
+ leftOfAs = this.parseIdentifier();
+ }
+
+ if (hasTypeSpecifier && isInTypeOnlyImportExport) {
+ this.raise(pos, isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports);
+ }
+
+ node[leftOfAsKey] = leftOfAs;
+ node[rightOfAsKey] = rightOfAs;
+ const kindKey = isImport ? "importKind" : "exportKind";
+ node[kindKey] = hasTypeSpecifier ? "type" : "value";
+
+ if (canParseAsKeyword && this.eatContextual(87)) {
+ node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();
+ }
+
+ if (!node[rightOfAsKey]) {
+ node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);
+ }
+
+ if (isImport) {
+ this.checkLVal(node[rightOfAsKey], "import specifier", BIND_LEXICAL);
+ }
+ }
+
+});
+
+const PlaceHolderErrors = makeErrorTemplates({
+ ClassNameIsRequired: "A class name is required."
+}, ErrorCodes.SyntaxError);
+var placeholders = (superClass => class extends superClass {
+ parsePlaceholder(expectedNode) {
+ if (this.match(134)) {
+ const node = this.startNode();
+ this.next();
+ this.assertNoSpace("Unexpected space in placeholder.");
+ node.name = super.parseIdentifier(true);
+ this.assertNoSpace("Unexpected space in placeholder.");
+ this.expect(134);
+ return this.finishPlaceholder(node, expectedNode);
+ }
+ }
+
+ finishPlaceholder(node, expectedNode) {
+ const isFinished = !!(node.expectedNode && node.type === "Placeholder");
+ node.expectedNode = expectedNode;
+ return isFinished ? node : this.finishNode(node, "Placeholder");
+ }
+
+ getTokenFromCode(code) {
+ if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
+ return this.finishOp(134, 2);
+ }
+
+ return super.getTokenFromCode(...arguments);
+ }
+
+ parseExprAtom() {
+ return this.parsePlaceholder("Expression") || super.parseExprAtom(...arguments);
+ }
+
+ parseIdentifier() {
+ return this.parsePlaceholder("Identifier") || super.parseIdentifier(...arguments);
+ }
+
+ checkReservedWord(word) {
+ if (word !== undefined) super.checkReservedWord(...arguments);
+ }
+
+ parseBindingAtom() {
+ return this.parsePlaceholder("Pattern") || super.parseBindingAtom(...arguments);
+ }
+
+ checkLVal(expr) {
+ if (expr.type !== "Placeholder") super.checkLVal(...arguments);
+ }
+
+ toAssignable(node) {
+ if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {
+ node.expectedNode = "Pattern";
+ return node;
+ }
+
+ return super.toAssignable(...arguments);
+ }
+
+ isLet(context) {
+ if (super.isLet(context)) {
+ return true;
+ }
+
+ if (!this.isContextual(93)) {
+ return false;
+ }
+
+ if (context) return false;
+ const nextToken = this.lookahead();
+
+ if (nextToken.type === 134) {
+ return true;
+ }
+
+ return false;
+ }
+
+ verifyBreakContinue(node) {
+ if (node.label && node.label.type === "Placeholder") return;
+ super.verifyBreakContinue(...arguments);
+ }
+
+ parseExpressionStatement(node, expr) {
+ if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) {
+ return super.parseExpressionStatement(...arguments);
+ }
+
+ if (this.match(14)) {
+ const stmt = node;
+ stmt.label = this.finishPlaceholder(expr, "Identifier");
+ this.next();
+ stmt.body = this.parseStatement("label");
+ return this.finishNode(stmt, "LabeledStatement");
+ }
+
+ this.semicolon();
+ node.name = expr.name;
+ return this.finishPlaceholder(node, "Statement");
+ }
+
+ parseBlock() {
+ return this.parsePlaceholder("BlockStatement") || super.parseBlock(...arguments);
+ }
+
+ parseFunctionId() {
+ return this.parsePlaceholder("Identifier") || super.parseFunctionId(...arguments);
+ }
+
+ parseClass(node, isStatement, optionalId) {
+ const type = isStatement ? "ClassDeclaration" : "ClassExpression";
+ this.next();
+ this.takeDecorators(node);
+ const oldStrict = this.state.strict;
+ const placeholder = this.parsePlaceholder("Identifier");
+
+ if (placeholder) {
+ if (this.match(75) || this.match(134) || this.match(5)) {
+ node.id = placeholder;
+ } else if (optionalId || !isStatement) {
+ node.id = null;
+ node.body = this.finishPlaceholder(placeholder, "ClassBody");
+ return this.finishNode(node, type);
+ } else {
+ this.unexpected(null, PlaceHolderErrors.ClassNameIsRequired);
+ }
+ } else {
+ this.parseClassId(node, isStatement, optionalId);
+ }
+
+ this.parseClassSuper(node);
+ node.body = this.parsePlaceholder("ClassBody") || this.parseClassBody(!!node.superClass, oldStrict);
+ return this.finishNode(node, type);
+ }
+
+ parseExport(node) {
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (!placeholder) return super.parseExport(...arguments);
+
+ if (!this.isContextual(91) && !this.match(12)) {
+ node.specifiers = [];
+ node.source = null;
+ node.declaration = this.finishPlaceholder(placeholder, "Declaration");
+ return this.finishNode(node, "ExportNamedDeclaration");
+ }
+
+ this.expectPlugin("exportDefaultFrom");
+ const specifier = this.startNode();
+ specifier.exported = placeholder;
+ node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ return super.parseExport(node);
+ }
+
+ isExportDefaultSpecifier() {
+ if (this.match(59)) {
+ const next = this.nextTokenStart();
+
+ if (this.isUnparsedContextual(next, "from")) {
+ if (this.input.startsWith(tokenLabelName(134), this.nextTokenStartSince(next + 4))) {
+ return true;
+ }
+ }
+ }
+
+ return super.isExportDefaultSpecifier();
+ }
+
+ maybeParseExportDefaultSpecifier(node) {
+ if (node.specifiers && node.specifiers.length > 0) {
+ return true;
+ }
+
+ return super.maybeParseExportDefaultSpecifier(...arguments);
+ }
+
+ checkExport(node) {
+ const {
+ specifiers
+ } = node;
+
+ if (specifiers != null && specifiers.length) {
+ node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder");
+ }
+
+ super.checkExport(node);
+ node.specifiers = specifiers;
+ }
+
+ parseImport(node) {
+ const placeholder = this.parsePlaceholder("Identifier");
+ if (!placeholder) return super.parseImport(...arguments);
+ node.specifiers = [];
+
+ if (!this.isContextual(91) && !this.match(12)) {
+ node.source = this.finishPlaceholder(placeholder, "StringLiteral");
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+
+ const specifier = this.startNodeAtNode(placeholder);
+ specifier.local = placeholder;
+ this.finishNode(specifier, "ImportDefaultSpecifier");
+ node.specifiers.push(specifier);
+
+ if (this.eat(12)) {
+ const hasStarImport = this.maybeParseStarImportSpecifier(node);
+ if (!hasStarImport) this.parseNamedImportSpecifiers(node);
+ }
+
+ this.expectContextual(91);
+ node.source = this.parseImportSource();
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+
+ parseImportSource() {
+ return this.parsePlaceholder("StringLiteral") || super.parseImportSource(...arguments);
+ }
+
+});
+
+var v8intrinsic = (superClass => class extends superClass {
+ parseV8Intrinsic() {
+ if (this.match(48)) {
+ const v8IntrinsicStart = this.state.start;
+ const node = this.startNode();
+ this.next();
+
+ if (tokenIsIdentifier(this.state.type)) {
+ const name = this.parseIdentifierName(this.state.start);
+ const identifier = this.createIdentifier(node, name);
+ identifier.type = "V8IntrinsicIdentifier";
+
+ if (this.match(10)) {
+ return identifier;
+ }
+ }
+
+ this.unexpected(v8IntrinsicStart);
+ }
+ }
+
+ parseExprAtom() {
+ return this.parseV8Intrinsic() || super.parseExprAtom(...arguments);
+ }
+
+});
+
+function hasPlugin(plugins, name) {
+ return plugins.some(plugin => {
+ if (Array.isArray(plugin)) {
+ return plugin[0] === name;
+ } else {
+ return plugin === name;
+ }
+ });
+}
+function getPluginOption(plugins, name, option) {
+ const plugin = plugins.find(plugin => {
+ if (Array.isArray(plugin)) {
+ return plugin[0] === name;
+ } else {
+ return plugin === name;
+ }
+ });
+
+ if (plugin && Array.isArray(plugin)) {
+ return plugin[1][option];
+ }
+
+ return null;
+}
+const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"];
+const TOPIC_TOKENS = ["^", "%", "#"];
+const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"];
+function validatePlugins(plugins) {
+ if (hasPlugin(plugins, "decorators")) {
+ if (hasPlugin(plugins, "decorators-legacy")) {
+ throw new Error("Cannot use the decorators and decorators-legacy plugin together");
+ }
+
+ const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport");
+
+ if (decoratorsBeforeExport == null) {
+ throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option," + " whose value must be a boolean. If you are migrating from" + " Babylon/Babel 6 or want to use the old decorators proposal, you" + " should use the 'decorators-legacy' plugin instead of 'decorators'.");
+ } else if (typeof decoratorsBeforeExport !== "boolean") {
+ throw new Error("'decoratorsBeforeExport' must be a boolean.");
+ }
+ }
+
+ if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) {
+ throw new Error("Cannot combine flow and typescript plugins.");
+ }
+
+ if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) {
+ throw new Error("Cannot combine placeholders and v8intrinsic plugins.");
+ }
+
+ if (hasPlugin(plugins, "pipelineOperator")) {
+ const proposal = getPluginOption(plugins, "pipelineOperator", "proposal");
+
+ if (!PIPELINE_PROPOSALS.includes(proposal)) {
+ const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", ");
+ throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`);
+ }
+
+ const tupleSyntaxIsHash = hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") === "hash";
+
+ if (proposal === "hack") {
+ if (hasPlugin(plugins, "placeholders")) {
+ throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");
+ }
+
+ if (hasPlugin(plugins, "v8intrinsic")) {
+ throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");
+ }
+
+ const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken");
+
+ if (!TOPIC_TOKENS.includes(topicToken)) {
+ const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", ");
+ throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`);
+ }
+
+ if (topicToken === "#" && tupleSyntaxIsHash) {
+ throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.');
+ }
+ } else if (proposal === "smart" && tupleSyntaxIsHash) {
+ throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.');
+ }
+ }
+
+ if (hasPlugin(plugins, "moduleAttributes")) {
+ {
+ if (hasPlugin(plugins, "importAssertions")) {
+ throw new Error("Cannot combine importAssertions and moduleAttributes plugins.");
+ }
+
+ const moduleAttributesVerionPluginOption = getPluginOption(plugins, "moduleAttributes", "version");
+
+ if (moduleAttributesVerionPluginOption !== "may-2020") {
+ throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'.");
+ }
+ }
+ }
+
+ if (hasPlugin(plugins, "recordAndTuple") && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) {
+ throw new Error("'recordAndTuple' requires 'syntaxType' option whose value should be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", "));
+ }
+
+ if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) {
+ const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");
+ error.missingPlugins = "doExpressions";
+ throw error;
+ }
+}
+const mixinPlugins = {
+ estree,
+ jsx,
+ flow,
+ typescript,
+ v8intrinsic,
+ placeholders
+};
+const mixinPluginNames = Object.keys(mixinPlugins);
+
+const defaultOptions = {
+ sourceType: "script",
+ sourceFilename: undefined,
+ startColumn: 0,
+ startLine: 1,
+ allowAwaitOutsideFunction: false,
+ allowReturnOutsideFunction: false,
+ allowImportExportEverywhere: false,
+ allowSuperOutsideMethod: false,
+ allowUndeclaredExports: false,
+ plugins: [],
+ strictMode: null,
+ ranges: false,
+ tokens: false,
+ createParenthesizedExpressions: false,
+ errorRecovery: false,
+ attachComment: true
+};
+function getOptions(opts) {
+ const options = {};
+
+ for (const key of Object.keys(defaultOptions)) {
+ options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
+ }
+
+ return options;
+}
+
+const unwrapParenthesizedExpression = node => {
+ return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
+};
+
+class LValParser extends NodeUtils {
+ toAssignable(node, isLHS = false) {
+ var _node$extra, _node$extra3;
+
+ let parenthesized = undefined;
+
+ if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {
+ parenthesized = unwrapParenthesizedExpression(node);
+
+ if (isLHS) {
+ if (parenthesized.type === "Identifier") {
+ this.expressionScope.recordParenthesizedIdentifierError(node.start, ErrorMessages.InvalidParenthesizedAssignment);
+ } else if (parenthesized.type !== "MemberExpression") {
+ this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment);
+ }
+ } else {
+ this.raise(node.start, ErrorMessages.InvalidParenthesizedAssignment);
+ }
+ }
+
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "RestElement":
+ break;
+
+ case "ObjectExpression":
+ node.type = "ObjectPattern";
+
+ for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) {
+ var _node$extra2;
+
+ const prop = node.properties[i];
+ const isLast = i === last;
+ this.toAssignableObjectExpressionProp(prop, isLast, isLHS);
+
+ if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingComma) {
+ this.raiseRestNotLast(node.extra.trailingComma);
+ }
+ }
+
+ break;
+
+ case "ObjectProperty":
+ this.toAssignable(node.value, isLHS);
+ break;
+
+ case "SpreadElement":
+ {
+ this.checkToRestConversion(node);
+ node.type = "RestElement";
+ const arg = node.argument;
+ this.toAssignable(arg, isLHS);
+ break;
+ }
+
+ case "ArrayExpression":
+ node.type = "ArrayPattern";
+ this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingComma, isLHS);
+ break;
+
+ case "AssignmentExpression":
+ if (node.operator !== "=") {
+ this.raise(node.left.end, ErrorMessages.MissingEqInAssignment);
+ }
+
+ node.type = "AssignmentPattern";
+ delete node.operator;
+ this.toAssignable(node.left, isLHS);
+ break;
+
+ case "ParenthesizedExpression":
+ this.toAssignable(parenthesized, isLHS);
+ break;
+ }
+
+ return node;
+ }
+
+ toAssignableObjectExpressionProp(prop, isLast, isLHS) {
+ if (prop.type === "ObjectMethod") {
+ const error = prop.kind === "get" || prop.kind === "set" ? ErrorMessages.PatternHasAccessor : ErrorMessages.PatternHasMethod;
+ this.raise(prop.key.start, error);
+ } else if (prop.type === "SpreadElement" && !isLast) {
+ this.raiseRestNotLast(prop.start);
+ } else {
+ this.toAssignable(prop, isLHS);
+ }
+ }
+
+ toAssignableList(exprList, trailingCommaPos, isLHS) {
+ let end = exprList.length;
+
+ if (end) {
+ const last = exprList[end - 1];
+
+ if ((last == null ? void 0 : last.type) === "RestElement") {
+ --end;
+ } else if ((last == null ? void 0 : last.type) === "SpreadElement") {
+ last.type = "RestElement";
+ let arg = last.argument;
+ this.toAssignable(arg, isLHS);
+ arg = unwrapParenthesizedExpression(arg);
+
+ if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern" && arg.type !== "ObjectPattern") {
+ this.unexpected(arg.start);
+ }
+
+ if (trailingCommaPos) {
+ this.raiseTrailingCommaAfterRest(trailingCommaPos);
+ }
+
+ --end;
+ }
+ }
+
+ for (let i = 0; i < end; i++) {
+ const elt = exprList[i];
+
+ if (elt) {
+ this.toAssignable(elt, isLHS);
+
+ if (elt.type === "RestElement") {
+ this.raiseRestNotLast(elt.start);
+ }
+ }
+ }
+
+ return exprList;
+ }
+
+ isAssignable(node, isBinding) {
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ case "RestElement":
+ return true;
+
+ case "ObjectExpression":
+ {
+ const last = node.properties.length - 1;
+ return node.properties.every((prop, i) => {
+ return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop);
+ });
+ }
+
+ case "ObjectProperty":
+ return this.isAssignable(node.value);
+
+ case "SpreadElement":
+ return this.isAssignable(node.argument);
+
+ case "ArrayExpression":
+ return node.elements.every(element => element === null || this.isAssignable(element));
+
+ case "AssignmentExpression":
+ return node.operator === "=";
+
+ case "ParenthesizedExpression":
+ return this.isAssignable(node.expression);
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return !isBinding;
+
+ default:
+ return false;
+ }
+ }
+
+ toReferencedList(exprList, isParenthesizedExpr) {
+ return exprList;
+ }
+
+ toReferencedListDeep(exprList, isParenthesizedExpr) {
+ this.toReferencedList(exprList, isParenthesizedExpr);
+
+ for (const expr of exprList) {
+ if ((expr == null ? void 0 : expr.type) === "ArrayExpression") {
+ this.toReferencedListDeep(expr.elements);
+ }
+ }
+ }
+
+ parseSpread(refExpressionErrors, refNeedsArrowPos) {
+ const node = this.startNode();
+ this.next();
+ node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined, refNeedsArrowPos);
+ return this.finishNode(node, "SpreadElement");
+ }
+
+ parseRestBinding() {
+ const node = this.startNode();
+ this.next();
+ node.argument = this.parseBindingAtom();
+ return this.finishNode(node, "RestElement");
+ }
+
+ parseBindingAtom() {
+ switch (this.state.type) {
+ case 0:
+ {
+ const node = this.startNode();
+ this.next();
+ node.elements = this.parseBindingList(3, 93, true);
+ return this.finishNode(node, "ArrayPattern");
+ }
+
+ case 5:
+ return this.parseObjectLike(8, true);
+ }
+
+ return this.parseIdentifier();
+ }
+
+ parseBindingList(close, closeCharCode, allowEmpty, allowModifiers) {
+ const elts = [];
+ let first = true;
+
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ }
+
+ if (allowEmpty && this.match(12)) {
+ elts.push(null);
+ } else if (this.eat(close)) {
+ break;
+ } else if (this.match(21)) {
+ elts.push(this.parseAssignableListItemTypes(this.parseRestBinding()));
+ this.checkCommaAfterRest(closeCharCode);
+ this.expect(close);
+ break;
+ } else {
+ const decorators = [];
+
+ if (this.match(24) && this.hasPlugin("decorators")) {
+ this.raise(this.state.start, ErrorMessages.UnsupportedParameterDecorator);
+ }
+
+ while (this.match(24)) {
+ decorators.push(this.parseDecorator());
+ }
+
+ elts.push(this.parseAssignableListItem(allowModifiers, decorators));
+ }
+ }
+
+ return elts;
+ }
+
+ parseBindingRestProperty(prop) {
+ this.next();
+ prop.argument = this.parseIdentifier();
+ this.checkCommaAfterRest(125);
+ return this.finishNode(prop, "RestElement");
+ }
+
+ parseBindingProperty() {
+ const prop = this.startNode();
+ const {
+ type,
+ start: startPos,
+ startLoc
+ } = this.state;
+
+ if (type === 21) {
+ return this.parseBindingRestProperty(prop);
+ } else {
+ this.parsePropertyName(prop);
+ }
+
+ prop.method = false;
+ this.parseObjPropValue(prop, startPos, startLoc, false, false, true, false);
+ return prop;
+ }
+
+ parseAssignableListItem(allowModifiers, decorators) {
+ const left = this.parseMaybeDefault();
+ this.parseAssignableListItemTypes(left);
+ const elt = this.parseMaybeDefault(left.start, left.loc.start, left);
+
+ if (decorators.length) {
+ left.decorators = decorators;
+ }
+
+ return elt;
+ }
+
+ parseAssignableListItemTypes(param) {
+ return param;
+ }
+
+ parseMaybeDefault(startPos, startLoc, left) {
+ var _startLoc, _startPos, _left;
+
+ startLoc = (_startLoc = startLoc) != null ? _startLoc : this.state.startLoc;
+ startPos = (_startPos = startPos) != null ? _startPos : this.state.start;
+ left = (_left = left) != null ? _left : this.parseBindingAtom();
+ if (!this.eat(27)) return left;
+ const node = this.startNodeAt(startPos, startLoc);
+ node.left = left;
+ node.right = this.parseMaybeAssignAllowIn();
+ return this.finishNode(node, "AssignmentPattern");
+ }
+
+ checkLVal(expr, contextDescription, bindingType = BIND_NONE, checkClashes, disallowLetBinding, strictModeChanged = false) {
+ switch (expr.type) {
+ case "Identifier":
+ {
+ const {
+ name
+ } = expr;
+
+ if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(name, this.inModule) : isStrictBindOnlyReservedWord(name))) {
+ this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.StrictEvalArguments : ErrorMessages.StrictEvalArgumentsBinding, name);
+ }
+
+ if (checkClashes) {
+ if (checkClashes.has(name)) {
+ this.raise(expr.start, ErrorMessages.ParamDupe);
+ } else {
+ checkClashes.add(name);
+ }
+ }
+
+ if (disallowLetBinding && name === "let") {
+ this.raise(expr.start, ErrorMessages.LetInLexicalBinding);
+ }
+
+ if (!(bindingType & BIND_NONE)) {
+ this.scope.declareName(name, bindingType, expr.start);
+ }
+
+ break;
+ }
+
+ case "MemberExpression":
+ if (bindingType !== BIND_NONE) {
+ this.raise(expr.start, ErrorMessages.InvalidPropertyBindingPattern);
+ }
+
+ break;
+
+ case "ObjectPattern":
+ for (let prop of expr.properties) {
+ if (this.isObjectProperty(prop)) prop = prop.value;else if (this.isObjectMethod(prop)) continue;
+ this.checkLVal(prop, "object destructuring pattern", bindingType, checkClashes, disallowLetBinding);
+ }
+
+ break;
+
+ case "ArrayPattern":
+ for (const elem of expr.elements) {
+ if (elem) {
+ this.checkLVal(elem, "array destructuring pattern", bindingType, checkClashes, disallowLetBinding);
+ }
+ }
+
+ break;
+
+ case "AssignmentPattern":
+ this.checkLVal(expr.left, "assignment pattern", bindingType, checkClashes);
+ break;
+
+ case "RestElement":
+ this.checkLVal(expr.argument, "rest element", bindingType, checkClashes);
+ break;
+
+ case "ParenthesizedExpression":
+ this.checkLVal(expr.expression, "parenthesized expression", bindingType, checkClashes);
+ break;
+
+ default:
+ {
+ this.raise(expr.start, bindingType === BIND_NONE ? ErrorMessages.InvalidLhs : ErrorMessages.InvalidLhsBinding, contextDescription);
+ }
+ }
+ }
+
+ checkToRestConversion(node) {
+ if (node.argument.type !== "Identifier" && node.argument.type !== "MemberExpression") {
+ this.raise(node.argument.start, ErrorMessages.InvalidRestAssignmentPattern);
+ }
+ }
+
+ checkCommaAfterRest(close) {
+ if (this.match(12)) {
+ if (this.lookaheadCharCode() === close) {
+ this.raiseTrailingCommaAfterRest(this.state.start);
+ } else {
+ this.raiseRestNotLast(this.state.start);
+ }
+ }
+ }
+
+ raiseRestNotLast(pos) {
+ throw this.raise(pos, ErrorMessages.ElementAfterRest);
+ }
+
+ raiseTrailingCommaAfterRest(pos) {
+ this.raise(pos, ErrorMessages.RestTrailingComma);
+ }
+
+}
+
+const invalidHackPipeBodies = new Map([["ArrowFunctionExpression", "arrow function"], ["AssignmentExpression", "assignment"], ["ConditionalExpression", "conditional"], ["YieldExpression", "yield"]]);
+class ExpressionParser extends LValParser {
+ checkProto(prop, isRecord, protoRef, refExpressionErrors) {
+ if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {
+ return;
+ }
+
+ const key = prop.key;
+ const name = key.type === "Identifier" ? key.name : key.value;
+
+ if (name === "__proto__") {
+ if (isRecord) {
+ this.raise(key.start, ErrorMessages.RecordNoProto);
+ return;
+ }
+
+ if (protoRef.used) {
+ if (refExpressionErrors) {
+ if (refExpressionErrors.doubleProto === -1) {
+ refExpressionErrors.doubleProto = key.start;
+ }
+ } else {
+ this.raise(key.start, ErrorMessages.DuplicateProto);
+ }
+ }
+
+ protoRef.used = true;
+ }
+ }
+
+ shouldExitDescending(expr, potentialArrowAt) {
+ return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt;
+ }
+
+ getExpression() {
+ this.enterInitialScopes();
+ this.nextToken();
+ const expr = this.parseExpression();
+
+ if (!this.match(129)) {
+ this.unexpected();
+ }
+
+ this.finalizeRemainingComments();
+ expr.comments = this.state.comments;
+ expr.errors = this.state.errors;
+
+ if (this.options.tokens) {
+ expr.tokens = this.tokens;
+ }
+
+ return expr;
+ }
+
+ parseExpression(disallowIn, refExpressionErrors) {
+ if (disallowIn) {
+ return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors));
+ }
+
+ return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));
+ }
+
+ parseExpressionBase(refExpressionErrors) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const expr = this.parseMaybeAssign(refExpressionErrors);
+
+ if (this.match(12)) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.expressions = [expr];
+
+ while (this.eat(12)) {
+ node.expressions.push(this.parseMaybeAssign(refExpressionErrors));
+ }
+
+ this.toReferencedList(node.expressions);
+ return this.finishNode(node, "SequenceExpression");
+ }
+
+ return expr;
+ }
+
+ parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {
+ return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));
+ }
+
+ parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {
+ return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse));
+ }
+
+ setOptionalParametersError(refExpressionErrors, resultError) {
+ var _resultError$pos;
+
+ refExpressionErrors.optionalParameters = (_resultError$pos = resultError == null ? void 0 : resultError.pos) != null ? _resultError$pos : this.state.start;
+ }
+
+ parseMaybeAssign(refExpressionErrors, afterLeftParse) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+
+ if (this.isContextual(99)) {
+ if (this.prodParam.hasYield) {
+ let left = this.parseYield();
+
+ if (afterLeftParse) {
+ left = afterLeftParse.call(this, left, startPos, startLoc);
+ }
+
+ return left;
+ }
+ }
+
+ let ownExpressionErrors;
+
+ if (refExpressionErrors) {
+ ownExpressionErrors = false;
+ } else {
+ refExpressionErrors = new ExpressionErrors();
+ ownExpressionErrors = true;
+ }
+
+ const {
+ type
+ } = this.state;
+
+ if (type === 10 || tokenIsIdentifier(type)) {
+ this.state.potentialArrowAt = this.state.start;
+ }
+
+ let left = this.parseMaybeConditional(refExpressionErrors);
+
+ if (afterLeftParse) {
+ left = afterLeftParse.call(this, left, startPos, startLoc);
+ }
+
+ if (tokenIsAssignment(this.state.type)) {
+ const node = this.startNodeAt(startPos, startLoc);
+ const operator = this.state.value;
+ node.operator = operator;
+
+ if (this.match(27)) {
+ node.left = this.toAssignable(left, true);
+
+ if (refExpressionErrors.doubleProto >= startPos) {
+ refExpressionErrors.doubleProto = -1;
+ }
+
+ if (refExpressionErrors.shorthandAssign >= startPos) {
+ refExpressionErrors.shorthandAssign = -1;
+ }
+ } else {
+ node.left = left;
+ }
+
+ this.checkLVal(left, "assignment expression");
+ this.next();
+ node.right = this.parseMaybeAssign();
+ return this.finishNode(node, "AssignmentExpression");
+ } else if (ownExpressionErrors) {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ }
+
+ return left;
+ }
+
+ parseMaybeConditional(refExpressionErrors) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseExprOps(refExpressionErrors);
+
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+
+ return this.parseConditional(expr, startPos, startLoc, refExpressionErrors);
+ }
+
+ parseConditional(expr, startPos, startLoc, refExpressionErrors) {
+ if (this.eat(17)) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.test = expr;
+ node.consequent = this.parseMaybeAssignAllowIn();
+ this.expect(14);
+ node.alternate = this.parseMaybeAssign();
+ return this.finishNode(node, "ConditionalExpression");
+ }
+
+ return expr;
+ }
+
+ parseMaybeUnaryOrPrivate(refExpressionErrors) {
+ return this.match(128) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);
+ }
+
+ parseExprOps(refExpressionErrors) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);
+
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+
+ return this.parseExprOp(expr, startPos, startLoc, -1);
+ }
+
+ parseExprOp(left, leftStartPos, leftStartLoc, minPrec) {
+ if (this.isPrivateName(left)) {
+ const value = this.getPrivateNameSV(left);
+ const {
+ start
+ } = left;
+
+ if (minPrec >= tokenOperatorPrecedence(52) || !this.prodParam.hasIn || !this.match(52)) {
+ this.raise(start, ErrorMessages.PrivateInExpectedIn, value);
+ }
+
+ this.classScope.usePrivateName(value, start);
+ }
+
+ const op = this.state.type;
+
+ if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(52))) {
+ let prec = tokenOperatorPrecedence(op);
+
+ if (prec > minPrec) {
+ if (op === 35) {
+ this.expectPlugin("pipelineOperator");
+
+ if (this.state.inFSharpPipelineDirectBody) {
+ return left;
+ }
+
+ this.checkPipelineAtInfixOperator(left, leftStartPos);
+ }
+
+ const node = this.startNodeAt(leftStartPos, leftStartLoc);
+ node.left = left;
+ node.operator = this.state.value;
+ const logical = op === 37 || op === 38;
+ const coalesce = op === 36;
+
+ if (coalesce) {
+ prec = tokenOperatorPrecedence(38);
+ }
+
+ this.next();
+
+ if (op === 35 && this.getPluginOption("pipelineOperator", "proposal") === "minimal") {
+ if (this.state.type === 90 && this.prodParam.hasAwait) {
+ throw this.raise(this.state.start, ErrorMessages.UnexpectedAwaitAfterPipelineBody);
+ }
+ }
+
+ node.right = this.parseExprOpRightExpr(op, prec);
+ this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
+ const nextOp = this.state.type;
+
+ if (coalesce && (nextOp === 37 || nextOp === 38) || logical && nextOp === 36) {
+ throw this.raise(this.state.start, ErrorMessages.MixingCoalesceWithLogical);
+ }
+
+ return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec);
+ }
+ }
+
+ return left;
+ }
+
+ parseExprOpRightExpr(op, prec) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+
+ switch (op) {
+ case 35:
+ switch (this.getPluginOption("pipelineOperator", "proposal")) {
+ case "hack":
+ return this.withTopicBindingContext(() => {
+ return this.parseHackPipeBody();
+ });
+
+ case "smart":
+ return this.withTopicBindingContext(() => {
+ if (this.prodParam.hasYield && this.isContextual(99)) {
+ throw this.raise(this.state.start, ErrorMessages.PipeBodyIsTighter, this.state.value);
+ }
+
+ return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startPos, startLoc);
+ });
+
+ case "fsharp":
+ return this.withSoloAwaitPermittingContext(() => {
+ return this.parseFSharpPipelineBody(prec);
+ });
+ }
+
+ default:
+ return this.parseExprOpBaseRightExpr(op, prec);
+ }
+ }
+
+ parseExprOpBaseRightExpr(op, prec) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);
+ }
+
+ parseHackPipeBody() {
+ var _body$extra;
+
+ const {
+ start
+ } = this.state;
+ const body = this.parseMaybeAssign();
+
+ if (invalidHackPipeBodies.has(body.type) && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {
+ this.raise(start, ErrorMessages.PipeUnparenthesizedBody, invalidHackPipeBodies.get(body.type));
+ }
+
+ if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(start, ErrorMessages.PipeTopicUnused);
+ }
+
+ return body;
+ }
+
+ checkExponentialAfterUnary(node) {
+ if (this.match(51)) {
+ this.raise(node.argument.start, ErrorMessages.UnexpectedTokenUnaryExponentiation);
+ }
+ }
+
+ parseMaybeUnary(refExpressionErrors, sawUnary) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const isAwait = this.isContextual(90);
+
+ if (isAwait && this.isAwaitAllowed()) {
+ this.next();
+ const expr = this.parseAwait(startPos, startLoc);
+ if (!sawUnary) this.checkExponentialAfterUnary(expr);
+ return expr;
+ }
+
+ const update = this.match(32);
+ const node = this.startNode();
+
+ if (tokenIsPrefix(this.state.type)) {
+ node.operator = this.state.value;
+ node.prefix = true;
+
+ if (this.match(66)) {
+ this.expectPlugin("throwExpressions");
+ }
+
+ const isDelete = this.match(83);
+ this.next();
+ node.argument = this.parseMaybeUnary(null, true);
+ this.checkExpressionErrors(refExpressionErrors, true);
+
+ if (this.state.strict && isDelete) {
+ const arg = node.argument;
+
+ if (arg.type === "Identifier") {
+ this.raise(node.start, ErrorMessages.StrictDelete);
+ } else if (this.hasPropertyAsPrivateName(arg)) {
+ this.raise(node.start, ErrorMessages.DeletePrivateField);
+ }
+ }
+
+ if (!update) {
+ if (!sawUnary) this.checkExponentialAfterUnary(node);
+ return this.finishNode(node, "UnaryExpression");
+ }
+ }
+
+ const expr = this.parseUpdate(node, update, refExpressionErrors);
+
+ if (isAwait) {
+ const {
+ type
+ } = this.state;
+ const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(48);
+
+ if (startsExpr && !this.isAmbiguousAwait()) {
+ this.raiseOverwrite(startPos, ErrorMessages.AwaitNotInAsyncContext);
+ return this.parseAwait(startPos, startLoc);
+ }
+ }
+
+ return expr;
+ }
+
+ parseUpdate(node, update, refExpressionErrors) {
+ if (update) {
+ this.checkLVal(node.argument, "prefix operation");
+ return this.finishNode(node, "UpdateExpression");
+ }
+
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ let expr = this.parseExprSubscripts(refExpressionErrors);
+ if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
+
+ while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.operator = this.state.value;
+ node.prefix = false;
+ node.argument = expr;
+ this.checkLVal(expr, "postfix operation");
+ this.next();
+ expr = this.finishNode(node, "UpdateExpression");
+ }
+
+ return expr;
+ }
+
+ parseExprSubscripts(refExpressionErrors) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ const potentialArrowAt = this.state.potentialArrowAt;
+ const expr = this.parseExprAtom(refExpressionErrors);
+
+ if (this.shouldExitDescending(expr, potentialArrowAt)) {
+ return expr;
+ }
+
+ return this.parseSubscripts(expr, startPos, startLoc);
+ }
+
+ parseSubscripts(base, startPos, startLoc, noCalls) {
+ const state = {
+ optionalChainMember: false,
+ maybeAsyncArrow: this.atPossibleAsyncArrow(base),
+ stop: false
+ };
+
+ do {
+ base = this.parseSubscript(base, startPos, startLoc, noCalls, state);
+ state.maybeAsyncArrow = false;
+ } while (!state.stop);
+
+ return base;
+ }
+
+ parseSubscript(base, startPos, startLoc, noCalls, state) {
+ if (!noCalls && this.eat(15)) {
+ return this.parseBind(base, startPos, startLoc, noCalls, state);
+ } else if (this.match(22)) {
+ return this.parseTaggedTemplateExpression(base, startPos, startLoc, state);
+ }
+
+ let optional = false;
+
+ if (this.match(18)) {
+ if (noCalls && this.lookaheadCharCode() === 40) {
+ state.stop = true;
+ return base;
+ }
+
+ state.optionalChainMember = optional = true;
+ this.next();
+ }
+
+ if (!noCalls && this.match(10)) {
+ return this.parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional);
+ } else {
+ const computed = this.eat(0);
+
+ if (computed || optional || this.eat(16)) {
+ return this.parseMember(base, startPos, startLoc, state, computed, optional);
+ } else {
+ state.stop = true;
+ return base;
+ }
+ }
+ }
+
+ parseMember(base, startPos, startLoc, state, computed, optional) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.computed = computed;
+ const privateName = !computed && this.match(128) && this.state.value;
+ const property = computed ? this.parseExpression() : privateName ? this.parsePrivateName() : this.parseIdentifier(true);
+
+ if (privateName !== false) {
+ if (node.object.type === "Super") {
+ this.raise(startPos, ErrorMessages.SuperPrivateField);
+ }
+
+ this.classScope.usePrivateName(privateName, property.start);
+ }
+
+ node.property = property;
+
+ if (computed) {
+ this.expect(3);
+ }
+
+ if (state.optionalChainMember) {
+ node.optional = optional;
+ return this.finishNode(node, "OptionalMemberExpression");
+ } else {
+ return this.finishNode(node, "MemberExpression");
+ }
+ }
+
+ parseBind(base, startPos, startLoc, noCalls, state) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.callee = this.parseNoCallExpr();
+ state.stop = true;
+ return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls);
+ }
+
+ parseCoverCallAndAsyncArrowHead(base, startPos, startLoc, state, optional) {
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ let refExpressionErrors = null;
+ this.state.maybeInArrowParameters = true;
+ this.next();
+ let node = this.startNodeAt(startPos, startLoc);
+ node.callee = base;
+
+ if (state.maybeAsyncArrow) {
+ this.expressionScope.enter(newAsyncArrowScope());
+ refExpressionErrors = new ExpressionErrors();
+ }
+
+ if (state.optionalChainMember) {
+ node.optional = optional;
+ }
+
+ if (optional) {
+ node.arguments = this.parseCallExpressionArguments(11);
+ } else {
+ node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors);
+ }
+
+ this.finishCallExpression(node, state.optionalChainMember);
+
+ if (state.maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
+ state.stop = true;
+ this.expressionScope.validateAsPattern();
+ this.expressionScope.exit();
+ node = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);
+ } else {
+ if (state.maybeAsyncArrow) {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ this.expressionScope.exit();
+ }
+
+ this.toReferencedArguments(node);
+ }
+
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return node;
+ }
+
+ toReferencedArguments(node, isParenthesizedExpr) {
+ this.toReferencedListDeep(node.arguments, isParenthesizedExpr);
+ }
+
+ parseTaggedTemplateExpression(base, startPos, startLoc, state) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.tag = base;
+ node.quasi = this.parseTemplate(true);
+
+ if (state.optionalChainMember) {
+ this.raise(startPos, ErrorMessages.OptionalChainingNoTemplate);
+ }
+
+ return this.finishNode(node, "TaggedTemplateExpression");
+ }
+
+ atPossibleAsyncArrow(base) {
+ return base.type === "Identifier" && base.name === "async" && this.state.lastTokEnd === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;
+ }
+
+ finishCallExpression(node, optional) {
+ if (node.callee.type === "Import") {
+ if (node.arguments.length === 2) {
+ {
+ if (!this.hasPlugin("moduleAttributes")) {
+ this.expectPlugin("importAssertions");
+ }
+ }
+ }
+
+ if (node.arguments.length === 0 || node.arguments.length > 2) {
+ this.raise(node.start, ErrorMessages.ImportCallArity, this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? "one or two arguments" : "one argument");
+ } else {
+ for (const arg of node.arguments) {
+ if (arg.type === "SpreadElement") {
+ this.raise(arg.start, ErrorMessages.ImportCallSpreadArgument);
+ }
+ }
+ }
+ }
+
+ return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
+ }
+
+ parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {
+ const elts = [];
+ let first = true;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+
+ if (this.match(close)) {
+ if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) {
+ this.raise(this.state.lastTokStart, ErrorMessages.ImportCallArgumentTrailingComma);
+ }
+
+ if (nodeForExtra) {
+ this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);
+ }
+
+ this.next();
+ break;
+ }
+ }
+
+ elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));
+ }
+
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return elts;
+ }
+
+ shouldParseAsyncArrow() {
+ return this.match(19) && !this.canInsertSemicolon();
+ }
+
+ parseAsyncArrowFromCallExpression(node, call) {
+ var _call$extra;
+
+ this.resetPreviousNodeTrailingComments(call);
+ this.expect(19);
+ this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingComma);
+
+ if (call.innerComments) {
+ setInnerComments(node, call.innerComments);
+ }
+
+ if (call.callee.trailingComments) {
+ setInnerComments(node, call.callee.trailingComments);
+ }
+
+ return node;
+ }
+
+ parseNoCallExpr() {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);
+ }
+
+ parseExprAtom(refExpressionErrors) {
+ let node;
+ const {
+ type
+ } = this.state;
+
+ switch (type) {
+ case 73:
+ return this.parseSuper();
+
+ case 77:
+ node = this.startNode();
+ this.next();
+
+ if (this.match(16)) {
+ return this.parseImportMetaProperty(node);
+ }
+
+ if (!this.match(10)) {
+ this.raise(this.state.lastTokStart, ErrorMessages.UnsupportedImport);
+ }
+
+ return this.finishNode(node, "Import");
+
+ case 72:
+ node = this.startNode();
+ this.next();
+ return this.finishNode(node, "ThisExpression");
+
+ case 84:
+ {
+ return this.parseDo(this.startNode(), false);
+ }
+
+ case 50:
+ case 29:
+ {
+ this.readRegexp();
+ return this.parseRegExpLiteral(this.state.value);
+ }
+
+ case 124:
+ return this.parseNumericLiteral(this.state.value);
+
+ case 125:
+ return this.parseBigIntLiteral(this.state.value);
+
+ case 126:
+ return this.parseDecimalLiteral(this.state.value);
+
+ case 123:
+ return this.parseStringLiteral(this.state.value);
+
+ case 78:
+ return this.parseNullLiteral();
+
+ case 79:
+ return this.parseBooleanLiteral(true);
+
+ case 80:
+ return this.parseBooleanLiteral(false);
+
+ case 10:
+ {
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
+ return this.parseParenAndDistinguishExpression(canBeArrow);
+ }
+
+ case 2:
+ case 1:
+ {
+ return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);
+ }
+
+ case 0:
+ {
+ return this.parseArrayLike(3, true, false, refExpressionErrors);
+ }
+
+ case 6:
+ case 7:
+ {
+ return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);
+ }
+
+ case 5:
+ {
+ return this.parseObjectLike(8, false, false, refExpressionErrors);
+ }
+
+ case 62:
+ return this.parseFunctionOrFunctionSent();
+
+ case 24:
+ this.parseDecorators();
+
+ case 74:
+ node = this.startNode();
+ this.takeDecorators(node);
+ return this.parseClass(node, false);
+
+ case 71:
+ return this.parseNewOrNewTarget();
+
+ case 22:
+ return this.parseTemplate(false);
+
+ case 15:
+ {
+ node = this.startNode();
+ this.next();
+ node.object = null;
+ const callee = node.callee = this.parseNoCallExpr();
+
+ if (callee.type === "MemberExpression") {
+ return this.finishNode(node, "BindExpression");
+ } else {
+ throw this.raise(callee.start, ErrorMessages.UnsupportedBind);
+ }
+ }
+
+ case 128:
+ {
+ this.raise(this.state.start, ErrorMessages.PrivateInExpectedIn, this.state.value);
+ return this.parsePrivateName();
+ }
+
+ case 31:
+ {
+ return this.parseTopicReferenceThenEqualsSign(48, "%");
+ }
+
+ case 30:
+ {
+ return this.parseTopicReferenceThenEqualsSign(40, "^");
+ }
+
+ case 40:
+ case 48:
+ case 25:
+ {
+ const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
+
+ if (pipeProposal) {
+ return this.parseTopicReference(pipeProposal);
+ } else {
+ throw this.unexpected();
+ }
+ }
+
+ case 43:
+ {
+ const lookaheadCh = this.input.codePointAt(this.nextTokenStart());
+
+ if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {
+ this.expectOnePlugin(["jsx", "flow", "typescript"]);
+ break;
+ } else {
+ throw this.unexpected();
+ }
+ }
+
+ default:
+ if (tokenIsIdentifier(type)) {
+ if (this.isContextual(117) && this.lookaheadCharCode() === 123 && !this.hasFollowingLineBreak()) {
+ return this.parseModuleExpression();
+ }
+
+ const canBeArrow = this.state.potentialArrowAt === this.state.start;
+ const containsEsc = this.state.containsEsc;
+ const id = this.parseIdentifier();
+
+ if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) {
+ const {
+ type
+ } = this.state;
+
+ if (type === 62) {
+ this.resetPreviousNodeTrailingComments(id);
+ this.next();
+ return this.parseFunction(this.startNodeAtNode(id), undefined, true);
+ } else if (tokenIsIdentifier(type)) {
+ if (this.lookaheadCharCode() === 61) {
+ return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));
+ } else {
+ return id;
+ }
+ } else if (type === 84) {
+ this.resetPreviousNodeTrailingComments(id);
+ return this.parseDo(this.startNodeAtNode(id), true);
+ }
+ }
+
+ if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) {
+ this.next();
+ return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);
+ }
+
+ return id;
+ } else {
+ throw this.unexpected();
+ }
+
+ }
+ }
+
+ parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {
+ const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
+
+ if (pipeProposal) {
+ this.state.type = topicTokenType;
+ this.state.value = topicTokenValue;
+ this.state.pos--;
+ this.state.end--;
+ this.state.endLoc.column--;
+ return this.parseTopicReference(pipeProposal);
+ } else {
+ throw this.unexpected();
+ }
+ }
+
+ parseTopicReference(pipeProposal) {
+ const node = this.startNode();
+ const start = this.state.start;
+ const tokenType = this.state.type;
+ this.next();
+ return this.finishTopicReference(node, start, pipeProposal, tokenType);
+ }
+
+ finishTopicReference(node, start, pipeProposal, tokenType) {
+ if (this.testTopicReferenceConfiguration(pipeProposal, start, tokenType)) {
+ let nodeType;
+
+ if (pipeProposal === "smart") {
+ nodeType = "PipelinePrimaryTopicReference";
+ } else {
+ nodeType = "TopicReference";
+ }
+
+ if (!this.topicReferenceIsAllowedInCurrentContext()) {
+ if (pipeProposal === "smart") {
+ this.raise(start, ErrorMessages.PrimaryTopicNotAllowed);
+ } else {
+ this.raise(start, ErrorMessages.PipeTopicUnbound);
+ }
+ }
+
+ this.registerTopicReference();
+ return this.finishNode(node, nodeType);
+ } else {
+ throw this.raise(start, ErrorMessages.PipeTopicUnconfiguredToken, tokenLabelName(tokenType));
+ }
+ }
+
+ testTopicReferenceConfiguration(pipeProposal, start, tokenType) {
+ switch (pipeProposal) {
+ case "hack":
+ {
+ const pluginTopicToken = this.getPluginOption("pipelineOperator", "topicToken");
+ return tokenLabelName(tokenType) === pluginTopicToken;
+ }
+
+ case "smart":
+ return tokenType === 25;
+
+ default:
+ throw this.raise(start, ErrorMessages.PipeTopicRequiresHackPipes);
+ }
+ }
+
+ parseAsyncArrowUnaryFunction(node) {
+ this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));
+ const params = [this.parseIdentifier()];
+ this.prodParam.exit();
+
+ if (this.hasPrecedingLineBreak()) {
+ this.raise(this.state.pos, ErrorMessages.LineTerminatorBeforeArrow);
+ }
+
+ this.expect(19);
+ this.parseArrowExpression(node, params, true);
+ return node;
+ }
+
+ parseDo(node, isAsync) {
+ this.expectPlugin("doExpressions");
+
+ if (isAsync) {
+ this.expectPlugin("asyncDoExpressions");
+ }
+
+ node.async = isAsync;
+ this.next();
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+
+ if (isAsync) {
+ this.prodParam.enter(PARAM_AWAIT);
+ node.body = this.parseBlock();
+ this.prodParam.exit();
+ } else {
+ node.body = this.parseBlock();
+ }
+
+ this.state.labels = oldLabels;
+ return this.finishNode(node, "DoExpression");
+ }
+
+ parseSuper() {
+ const node = this.startNode();
+ this.next();
+
+ if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
+ this.raise(node.start, ErrorMessages.SuperNotAllowed);
+ } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
+ this.raise(node.start, ErrorMessages.UnexpectedSuper);
+ }
+
+ if (!this.match(10) && !this.match(0) && !this.match(16)) {
+ this.raise(node.start, ErrorMessages.UnsupportedSuper);
+ }
+
+ return this.finishNode(node, "Super");
+ }
+
+ parsePrivateName() {
+ const node = this.startNode();
+ const id = this.startNodeAt(this.state.start + 1, new Position(this.state.curLine, this.state.start + 1 - this.state.lineStart));
+ const name = this.state.value;
+ this.next();
+ node.id = this.createIdentifier(id, name);
+ return this.finishNode(node, "PrivateName");
+ }
+
+ parseFunctionOrFunctionSent() {
+ const node = this.startNode();
+ this.next();
+
+ if (this.prodParam.hasYield && this.match(16)) {
+ const meta = this.createIdentifier(this.startNodeAtNode(node), "function");
+ this.next();
+
+ if (this.match(96)) {
+ this.expectPlugin("functionSent");
+ } else if (!this.hasPlugin("functionSent")) {
+ this.unexpected();
+ }
+
+ return this.parseMetaProperty(node, meta, "sent");
+ }
+
+ return this.parseFunction(node);
+ }
+
+ parseMetaProperty(node, meta, propertyName) {
+ node.meta = meta;
+ const containsEsc = this.state.containsEsc;
+ node.property = this.parseIdentifier(true);
+
+ if (node.property.name !== propertyName || containsEsc) {
+ this.raise(node.property.start, ErrorMessages.UnsupportedMetaProperty, meta.name, propertyName);
+ }
+
+ return this.finishNode(node, "MetaProperty");
+ }
+
+ parseImportMetaProperty(node) {
+ const id = this.createIdentifier(this.startNodeAtNode(node), "import");
+ this.next();
+
+ if (this.isContextual(94)) {
+ if (!this.inModule) {
+ this.raise(id.start, SourceTypeModuleErrorMessages.ImportMetaOutsideModule);
+ }
+
+ this.sawUnambiguousESM = true;
+ }
+
+ return this.parseMetaProperty(node, id, "meta");
+ }
+
+ parseLiteralAtNode(value, type, node) {
+ this.addExtra(node, "rawValue", value);
+ this.addExtra(node, "raw", this.input.slice(node.start, this.state.end));
+ node.value = value;
+ this.next();
+ return this.finishNode(node, type);
+ }
+
+ parseLiteral(value, type) {
+ const node = this.startNode();
+ return this.parseLiteralAtNode(value, type, node);
+ }
+
+ parseStringLiteral(value) {
+ return this.parseLiteral(value, "StringLiteral");
+ }
+
+ parseNumericLiteral(value) {
+ return this.parseLiteral(value, "NumericLiteral");
+ }
+
+ parseBigIntLiteral(value) {
+ return this.parseLiteral(value, "BigIntLiteral");
+ }
+
+ parseDecimalLiteral(value) {
+ return this.parseLiteral(value, "DecimalLiteral");
+ }
+
+ parseRegExpLiteral(value) {
+ const node = this.parseLiteral(value.value, "RegExpLiteral");
+ node.pattern = value.pattern;
+ node.flags = value.flags;
+ return node;
+ }
+
+ parseBooleanLiteral(value) {
+ const node = this.startNode();
+ node.value = value;
+ this.next();
+ return this.finishNode(node, "BooleanLiteral");
+ }
+
+ parseNullLiteral() {
+ const node = this.startNode();
+ this.next();
+ return this.finishNode(node, "NullLiteral");
+ }
+
+ parseParenAndDistinguishExpression(canBeArrow) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ let val;
+ this.next();
+ this.expressionScope.enter(newArrowHeadScope());
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.maybeInArrowParameters = true;
+ this.state.inFSharpPipelineDirectBody = false;
+ const innerStartPos = this.state.start;
+ const innerStartLoc = this.state.startLoc;
+ const exprList = [];
+ const refExpressionErrors = new ExpressionErrors();
+ let first = true;
+ let spreadStart;
+ let optionalCommaStart;
+
+ while (!this.match(11)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12, refExpressionErrors.optionalParameters === -1 ? null : refExpressionErrors.optionalParameters);
+
+ if (this.match(11)) {
+ optionalCommaStart = this.state.start;
+ break;
+ }
+ }
+
+ if (this.match(21)) {
+ const spreadNodeStartPos = this.state.start;
+ const spreadNodeStartLoc = this.state.startLoc;
+ spreadStart = this.state.start;
+ exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartPos, spreadNodeStartLoc));
+ this.checkCommaAfterRest(41);
+ break;
+ } else {
+ exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));
+ }
+ }
+
+ const innerEndPos = this.state.lastTokEnd;
+ const innerEndLoc = this.state.lastTokEndLoc;
+ this.expect(11);
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ let arrowNode = this.startNodeAt(startPos, startLoc);
+
+ if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {
+ this.expressionScope.validateAsPattern();
+ this.expressionScope.exit();
+ this.parseArrowExpression(arrowNode, exprList, false);
+ return arrowNode;
+ }
+
+ this.expressionScope.exit();
+
+ if (!exprList.length) {
+ this.unexpected(this.state.lastTokStart);
+ }
+
+ if (optionalCommaStart) this.unexpected(optionalCommaStart);
+ if (spreadStart) this.unexpected(spreadStart);
+ this.checkExpressionErrors(refExpressionErrors, true);
+ this.toReferencedListDeep(exprList, true);
+
+ if (exprList.length > 1) {
+ val = this.startNodeAt(innerStartPos, innerStartLoc);
+ val.expressions = exprList;
+ this.finishNode(val, "SequenceExpression");
+ this.resetEndLocation(val, innerEndPos, innerEndLoc);
+ } else {
+ val = exprList[0];
+ }
+
+ if (!this.options.createParenthesizedExpressions) {
+ this.addExtra(val, "parenthesized", true);
+ this.addExtra(val, "parenStart", startPos);
+ this.takeSurroundingComments(val, startPos, this.state.lastTokEnd);
+ return val;
+ }
+
+ const parenExpression = this.startNodeAt(startPos, startLoc);
+ parenExpression.expression = val;
+ this.finishNode(parenExpression, "ParenthesizedExpression");
+ return parenExpression;
+ }
+
+ shouldParseArrow(params) {
+ return !this.canInsertSemicolon();
+ }
+
+ parseArrow(node) {
+ if (this.eat(19)) {
+ return node;
+ }
+ }
+
+ parseParenItem(node, startPos, startLoc) {
+ return node;
+ }
+
+ parseNewOrNewTarget() {
+ const node = this.startNode();
+ this.next();
+
+ if (this.match(16)) {
+ const meta = this.createIdentifier(this.startNodeAtNode(node), "new");
+ this.next();
+ const metaProp = this.parseMetaProperty(node, meta, "target");
+
+ if (!this.scope.inNonArrowFunction && !this.scope.inClass) {
+ this.raise(metaProp.start, ErrorMessages.UnexpectedNewTarget);
+ }
+
+ return metaProp;
+ }
+
+ return this.parseNew(node);
+ }
+
+ parseNew(node) {
+ node.callee = this.parseNoCallExpr();
+
+ if (node.callee.type === "Import") {
+ this.raise(node.callee.start, ErrorMessages.ImportCallNotNewExpression);
+ } else if (this.isOptionalChain(node.callee)) {
+ this.raise(this.state.lastTokEnd, ErrorMessages.OptionalChainingNoNew);
+ } else if (this.eat(18)) {
+ this.raise(this.state.start, ErrorMessages.OptionalChainingNoNew);
+ }
+
+ this.parseNewArguments(node);
+ return this.finishNode(node, "NewExpression");
+ }
+
+ parseNewArguments(node) {
+ if (this.eat(10)) {
+ const args = this.parseExprList(11);
+ this.toReferencedList(args);
+ node.arguments = args;
+ } else {
+ node.arguments = [];
+ }
+ }
+
+ parseTemplateElement(isTagged) {
+ const elem = this.startNode();
+
+ if (this.state.value === null) {
+ if (!isTagged) {
+ this.raise(this.state.start + 1, ErrorMessages.InvalidEscapeSequenceTemplate);
+ }
+ }
+
+ elem.value = {
+ raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"),
+ cooked: this.state.value
+ };
+ this.next();
+ elem.tail = this.match(22);
+ return this.finishNode(elem, "TemplateElement");
+ }
+
+ parseTemplate(isTagged) {
+ const node = this.startNode();
+ this.next();
+ node.expressions = [];
+ let curElt = this.parseTemplateElement(isTagged);
+ node.quasis = [curElt];
+
+ while (!curElt.tail) {
+ this.expect(23);
+ node.expressions.push(this.parseTemplateSubstitution());
+ this.expect(8);
+ node.quasis.push(curElt = this.parseTemplateElement(isTagged));
+ }
+
+ this.next();
+ return this.finishNode(node, "TemplateLiteral");
+ }
+
+ parseTemplateSubstitution() {
+ return this.parseExpression();
+ }
+
+ parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {
+ if (isRecord) {
+ this.expectPlugin("recordAndTuple");
+ }
+
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ const propHash = Object.create(null);
+ let first = true;
+ const node = this.startNode();
+ node.properties = [];
+ this.next();
+
+ while (!this.match(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+
+ if (this.match(close)) {
+ this.addExtra(node, "trailingComma", this.state.lastTokStart);
+ break;
+ }
+ }
+
+ let prop;
+
+ if (isPattern) {
+ prop = this.parseBindingProperty();
+ } else {
+ prop = this.parsePropertyDefinition(refExpressionErrors);
+ this.checkProto(prop, isRecord, propHash, refExpressionErrors);
+ }
+
+ if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") {
+ this.raise(prop.start, ErrorMessages.InvalidRecordProperty);
+ }
+
+ if (prop.shorthand) {
+ this.addExtra(prop, "shorthand", true);
+ }
+
+ node.properties.push(prop);
+ }
+
+ this.next();
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ let type = "ObjectExpression";
+
+ if (isPattern) {
+ type = "ObjectPattern";
+ } else if (isRecord) {
+ type = "RecordExpression";
+ }
+
+ return this.finishNode(node, type);
+ }
+
+ maybeAsyncOrAccessorProp(prop) {
+ return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(49));
+ }
+
+ parsePropertyDefinition(refExpressionErrors) {
+ let decorators = [];
+
+ if (this.match(24)) {
+ if (this.hasPlugin("decorators")) {
+ this.raise(this.state.start, ErrorMessages.UnsupportedPropertyDecorator);
+ }
+
+ while (this.match(24)) {
+ decorators.push(this.parseDecorator());
+ }
+ }
+
+ const prop = this.startNode();
+ let isAsync = false;
+ let isAccessor = false;
+ let startPos;
+ let startLoc;
+
+ if (this.match(21)) {
+ if (decorators.length) this.unexpected();
+ return this.parseSpread();
+ }
+
+ if (decorators.length) {
+ prop.decorators = decorators;
+ decorators = [];
+ }
+
+ prop.method = false;
+
+ if (refExpressionErrors) {
+ startPos = this.state.start;
+ startLoc = this.state.startLoc;
+ }
+
+ let isGenerator = this.eat(49);
+ this.parsePropertyNamePrefixOperator(prop);
+ const containsEsc = this.state.containsEsc;
+ const key = this.parsePropertyName(prop);
+
+ if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {
+ const keyName = key.name;
+
+ if (keyName === "async" && !this.hasPrecedingLineBreak()) {
+ isAsync = true;
+ this.resetPreviousNodeTrailingComments(key);
+ isGenerator = this.eat(49);
+ this.parsePropertyName(prop);
+ }
+
+ if (keyName === "get" || keyName === "set") {
+ isAccessor = true;
+ this.resetPreviousNodeTrailingComments(key);
+ prop.kind = keyName;
+
+ if (this.match(49)) {
+ isGenerator = true;
+ this.raise(this.state.pos, ErrorMessages.AccessorIsGenerator, keyName);
+ this.next();
+ }
+
+ this.parsePropertyName(prop);
+ }
+ }
+
+ this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);
+ return prop;
+ }
+
+ getGetterSetterExpectedParamCount(method) {
+ return method.kind === "get" ? 0 : 1;
+ }
+
+ getObjectOrClassMethodParams(method) {
+ return method.params;
+ }
+
+ checkGetterSetterParams(method) {
+ var _params;
+
+ const paramCount = this.getGetterSetterExpectedParamCount(method);
+ const params = this.getObjectOrClassMethodParams(method);
+ const start = method.start;
+
+ if (params.length !== paramCount) {
+ if (method.kind === "get") {
+ this.raise(start, ErrorMessages.BadGetterArity);
+ } else {
+ this.raise(start, ErrorMessages.BadSetterArity);
+ }
+ }
+
+ if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") {
+ this.raise(start, ErrorMessages.BadSetterRestParameter);
+ }
+ }
+
+ parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
+ if (isAccessor) {
+ this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod");
+ this.checkGetterSetterParams(prop);
+ return prop;
+ }
+
+ if (isAsync || isGenerator || this.match(10)) {
+ if (isPattern) this.unexpected();
+ prop.kind = "method";
+ prop.method = true;
+ return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
+ }
+ }
+
+ parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {
+ prop.shorthand = false;
+
+ if (this.eat(14)) {
+ prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);
+ return this.finishNode(prop, "ObjectProperty");
+ }
+
+ if (!prop.computed && prop.key.type === "Identifier") {
+ this.checkReservedWord(prop.key.name, prop.key.start, true, false);
+
+ if (isPattern) {
+ prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));
+ } else if (this.match(27) && refExpressionErrors) {
+ if (refExpressionErrors.shorthandAssign === -1) {
+ refExpressionErrors.shorthandAssign = this.state.start;
+ }
+
+ prop.value = this.parseMaybeDefault(startPos, startLoc, cloneIdentifier(prop.key));
+ } else {
+ prop.value = cloneIdentifier(prop.key);
+ }
+
+ prop.shorthand = true;
+ return this.finishNode(prop, "ObjectProperty");
+ }
+ }
+
+ parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
+ const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors);
+ if (!node) this.unexpected();
+ return node;
+ }
+
+ parsePropertyName(prop) {
+ if (this.eat(0)) {
+ prop.computed = true;
+ prop.key = this.parseMaybeAssignAllowIn();
+ this.expect(3);
+ } else {
+ const {
+ type,
+ value
+ } = this.state;
+ let key;
+
+ if (tokenIsKeywordOrIdentifier(type)) {
+ key = this.parseIdentifier(true);
+ } else {
+ switch (type) {
+ case 124:
+ key = this.parseNumericLiteral(value);
+ break;
+
+ case 123:
+ key = this.parseStringLiteral(value);
+ break;
+
+ case 125:
+ key = this.parseBigIntLiteral(value);
+ break;
+
+ case 126:
+ key = this.parseDecimalLiteral(value);
+ break;
+
+ case 128:
+ {
+ const privateKeyPos = this.state.start + 1;
+ this.raise(privateKeyPos, ErrorMessages.UnexpectedPrivateField);
+ key = this.parsePrivateName();
+ break;
+ }
+
+ default:
+ throw this.unexpected();
+ }
+ }
+
+ prop.key = key;
+
+ if (type !== 128) {
+ prop.computed = false;
+ }
+ }
+
+ return prop.key;
+ }
+
+ initFunction(node, isAsync) {
+ node.id = null;
+ node.generator = false;
+ node.async = !!isAsync;
+ }
+
+ parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
+ this.initFunction(node, isAsync);
+ node.generator = !!isGenerator;
+ const allowModifiers = isConstructor;
+ this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));
+ this.prodParam.enter(functionFlags(isAsync, node.generator));
+ this.parseFunctionParams(node, allowModifiers);
+ this.parseFunctionBodyAndFinish(node, type, true);
+ this.prodParam.exit();
+ this.scope.exit();
+ return node;
+ }
+
+ parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
+ if (isTuple) {
+ this.expectPlugin("recordAndTuple");
+ }
+
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = false;
+ const node = this.startNode();
+ this.next();
+ node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression");
+ }
+
+ parseArrowExpression(node, params, isAsync, trailingCommaPos) {
+ this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);
+ let flags = functionFlags(isAsync, false);
+
+ if (!this.match(0) && this.prodParam.hasIn) {
+ flags |= PARAM_IN;
+ }
+
+ this.prodParam.enter(flags);
+ this.initFunction(node, isAsync);
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+
+ if (params) {
+ this.state.maybeInArrowParameters = true;
+ this.setArrowFunctionParameters(node, params, trailingCommaPos);
+ }
+
+ this.state.maybeInArrowParameters = false;
+ this.parseFunctionBody(node, true);
+ this.prodParam.exit();
+ this.scope.exit();
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return this.finishNode(node, "ArrowFunctionExpression");
+ }
+
+ setArrowFunctionParameters(node, params, trailingCommaPos) {
+ node.params = this.toAssignableList(params, trailingCommaPos, false);
+ }
+
+ parseFunctionBodyAndFinish(node, type, isMethod = false) {
+ this.parseFunctionBody(node, false, isMethod);
+ this.finishNode(node, type);
+ }
+
+ parseFunctionBody(node, allowExpression, isMethod = false) {
+ const isExpression = allowExpression && !this.match(5);
+ this.expressionScope.enter(newExpressionScope());
+
+ if (isExpression) {
+ node.body = this.parseMaybeAssign();
+ this.checkParams(node, false, allowExpression, false);
+ } else {
+ const oldStrict = this.state.strict;
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN);
+ node.body = this.parseBlock(true, false, hasStrictModeDirective => {
+ const nonSimple = !this.isSimpleParamList(node.params);
+
+ if (hasStrictModeDirective && nonSimple) {
+ const errorPos = (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.end : node.start;
+ this.raise(errorPos, ErrorMessages.IllegalLanguageModeDirective);
+ }
+
+ const strictModeChanged = !oldStrict && this.state.strict;
+ this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);
+
+ if (this.state.strict && node.id) {
+ this.checkLVal(node.id, "function name", BIND_OUTSIDE, undefined, undefined, strictModeChanged);
+ }
+ });
+ this.prodParam.exit();
+ this.state.labels = oldLabels;
+ }
+
+ this.expressionScope.exit();
+ }
+
+ isSimpleParamList(params) {
+ for (let i = 0, len = params.length; i < len; i++) {
+ if (params[i].type !== "Identifier") return false;
+ }
+
+ return true;
+ }
+
+ checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) {
+ const checkClashes = new Set();
+
+ for (const param of node.params) {
+ this.checkLVal(param, "function parameter list", BIND_VAR, allowDuplicates ? null : checkClashes, undefined, strictModeChanged);
+ }
+ }
+
+ parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
+ const elts = [];
+ let first = true;
+
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+
+ if (this.match(close)) {
+ if (nodeForExtra) {
+ this.addExtra(nodeForExtra, "trailingComma", this.state.lastTokStart);
+ }
+
+ this.next();
+ break;
+ }
+ }
+
+ elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));
+ }
+
+ return elts;
+ }
+
+ parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {
+ let elt;
+
+ if (this.match(12)) {
+ if (!allowEmpty) {
+ this.raise(this.state.pos, ErrorMessages.UnexpectedToken, ",");
+ }
+
+ elt = null;
+ } else if (this.match(21)) {
+ const spreadNodeStartPos = this.state.start;
+ const spreadNodeStartLoc = this.state.startLoc;
+ elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartPos, spreadNodeStartLoc);
+ } else if (this.match(17)) {
+ this.expectPlugin("partialApplication");
+
+ if (!allowPlaceholder) {
+ this.raise(this.state.start, ErrorMessages.UnexpectedArgumentPlaceholder);
+ }
+
+ const node = this.startNode();
+ this.next();
+ elt = this.finishNode(node, "ArgumentPlaceholder");
+ } else {
+ elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);
+ }
+
+ return elt;
+ }
+
+ parseIdentifier(liberal) {
+ const node = this.startNode();
+ const name = this.parseIdentifierName(node.start, liberal);
+ return this.createIdentifier(node, name);
+ }
+
+ createIdentifier(node, name) {
+ node.name = name;
+ node.loc.identifierName = name;
+ return this.finishNode(node, "Identifier");
+ }
+
+ parseIdentifierName(pos, liberal) {
+ let name;
+ const {
+ start,
+ type
+ } = this.state;
+
+ if (tokenIsKeywordOrIdentifier(type)) {
+ name = this.state.value;
+ } else {
+ throw this.unexpected();
+ }
+
+ const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);
+
+ if (liberal) {
+ if (tokenIsKeyword) {
+ this.replaceToken(122);
+ }
+ } else {
+ this.checkReservedWord(name, start, tokenIsKeyword, false);
+ }
+
+ this.next();
+ return name;
+ }
+
+ checkReservedWord(word, startLoc, checkKeywords, isBinding) {
+ if (word.length > 10) {
+ return;
+ }
+
+ if (!canBeReservedWord(word)) {
+ return;
+ }
+
+ if (word === "yield") {
+ if (this.prodParam.hasYield) {
+ this.raise(startLoc, ErrorMessages.YieldBindingIdentifier);
+ return;
+ }
+ } else if (word === "await") {
+ if (this.prodParam.hasAwait) {
+ this.raise(startLoc, ErrorMessages.AwaitBindingIdentifier);
+ return;
+ } else if (this.scope.inStaticBlock) {
+ this.raise(startLoc, ErrorMessages.AwaitBindingIdentifierInStaticBlock);
+ return;
+ } else {
+ this.expressionScope.recordAsyncArrowParametersError(startLoc, ErrorMessages.AwaitBindingIdentifier);
+ }
+ } else if (word === "arguments") {
+ if (this.scope.inClassAndNotInNonArrowFunction) {
+ this.raise(startLoc, ErrorMessages.ArgumentsInClass);
+ return;
+ }
+ }
+
+ if (checkKeywords && isKeyword(word)) {
+ this.raise(startLoc, ErrorMessages.UnexpectedKeyword, word);
+ return;
+ }
+
+ const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;
+
+ if (reservedTest(word, this.inModule)) {
+ this.raise(startLoc, ErrorMessages.UnexpectedReservedWord, word);
+ }
+ }
+
+ isAwaitAllowed() {
+ if (this.prodParam.hasAwait) return true;
+
+ if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) {
+ return true;
+ }
+
+ return false;
+ }
+
+ parseAwait(startPos, startLoc) {
+ const node = this.startNodeAt(startPos, startLoc);
+ this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.AwaitExpressionFormalParameter);
+
+ if (this.eat(49)) {
+ this.raise(node.start, ErrorMessages.ObsoleteAwaitStar);
+ }
+
+ if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
+ if (this.isAmbiguousAwait()) {
+ this.ambiguousScriptDifferentAst = true;
+ } else {
+ this.sawUnambiguousESM = true;
+ }
+ }
+
+ if (!this.state.soloAwait) {
+ node.argument = this.parseMaybeUnary(null, true);
+ }
+
+ return this.finishNode(node, "AwaitExpression");
+ }
+
+ isAmbiguousAwait() {
+ return this.hasPrecedingLineBreak() || this.match(47) || this.match(10) || this.match(0) || this.match(22) || this.match(127) || this.match(50) || this.hasPlugin("v8intrinsic") && this.match(48);
+ }
+
+ parseYield() {
+ const node = this.startNode();
+ this.expressionScope.recordParameterInitializerError(node.start, ErrorMessages.YieldInParameter);
+ this.next();
+ let delegating = false;
+ let argument = null;
+
+ if (!this.hasPrecedingLineBreak()) {
+ delegating = this.eat(49);
+
+ switch (this.state.type) {
+ case 13:
+ case 129:
+ case 8:
+ case 11:
+ case 3:
+ case 9:
+ case 14:
+ case 12:
+ if (!delegating) break;
+
+ default:
+ argument = this.parseMaybeAssign();
+ }
+ }
+
+ node.delegate = delegating;
+ node.argument = argument;
+ return this.finishNode(node, "YieldExpression");
+ }
+
+ checkPipelineAtInfixOperator(left, leftStartPos) {
+ if (this.getPluginOption("pipelineOperator", "proposal") === "smart") {
+ if (left.type === "SequenceExpression") {
+ this.raise(leftStartPos, ErrorMessages.PipelineHeadSequenceExpression);
+ }
+ }
+ }
+
+ checkHackPipeBodyEarlyErrors(startPos) {
+ if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(startPos, ErrorMessages.PipeTopicUnused);
+ }
+ }
+
+ parseSmartPipelineBodyInStyle(childExpr, startPos, startLoc) {
+ const bodyNode = this.startNodeAt(startPos, startLoc);
+
+ if (this.isSimpleReference(childExpr)) {
+ bodyNode.callee = childExpr;
+ return this.finishNode(bodyNode, "PipelineBareFunction");
+ } else {
+ this.checkSmartPipeTopicBodyEarlyErrors(startPos);
+ bodyNode.expression = childExpr;
+ return this.finishNode(bodyNode, "PipelineTopicExpression");
+ }
+ }
+
+ isSimpleReference(expression) {
+ switch (expression.type) {
+ case "MemberExpression":
+ return !expression.computed && this.isSimpleReference(expression.object);
+
+ case "Identifier":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ checkSmartPipeTopicBodyEarlyErrors(startPos) {
+ if (this.match(19)) {
+ throw this.raise(this.state.start, ErrorMessages.PipelineBodyNoArrow);
+ } else if (!this.topicReferenceWasUsedInCurrentContext()) {
+ this.raise(startPos, ErrorMessages.PipelineTopicUnused);
+ }
+ }
+
+ withTopicBindingContext(callback) {
+ const outerContextTopicState = this.state.topicContext;
+ this.state.topicContext = {
+ maxNumOfResolvableTopics: 1,
+ maxTopicIndex: null
+ };
+
+ try {
+ return callback();
+ } finally {
+ this.state.topicContext = outerContextTopicState;
+ }
+ }
+
+ withSmartMixTopicForbiddingContext(callback) {
+ const proposal = this.getPluginOption("pipelineOperator", "proposal");
+
+ if (proposal === "smart") {
+ const outerContextTopicState = this.state.topicContext;
+ this.state.topicContext = {
+ maxNumOfResolvableTopics: 0,
+ maxTopicIndex: null
+ };
+
+ try {
+ return callback();
+ } finally {
+ this.state.topicContext = outerContextTopicState;
+ }
+ } else {
+ return callback();
+ }
+ }
+
+ withSoloAwaitPermittingContext(callback) {
+ const outerContextSoloAwaitState = this.state.soloAwait;
+ this.state.soloAwait = true;
+
+ try {
+ return callback();
+ } finally {
+ this.state.soloAwait = outerContextSoloAwaitState;
+ }
+ }
+
+ allowInAnd(callback) {
+ const flags = this.prodParam.currentFlags();
+ const prodParamToSet = PARAM_IN & ~flags;
+
+ if (prodParamToSet) {
+ this.prodParam.enter(flags | PARAM_IN);
+
+ try {
+ return callback();
+ } finally {
+ this.prodParam.exit();
+ }
+ }
+
+ return callback();
+ }
+
+ disallowInAnd(callback) {
+ const flags = this.prodParam.currentFlags();
+ const prodParamToClear = PARAM_IN & flags;
+
+ if (prodParamToClear) {
+ this.prodParam.enter(flags & ~PARAM_IN);
+
+ try {
+ return callback();
+ } finally {
+ this.prodParam.exit();
+ }
+ }
+
+ return callback();
+ }
+
+ registerTopicReference() {
+ this.state.topicContext.maxTopicIndex = 0;
+ }
+
+ topicReferenceIsAllowedInCurrentContext() {
+ return this.state.topicContext.maxNumOfResolvableTopics >= 1;
+ }
+
+ topicReferenceWasUsedInCurrentContext() {
+ return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
+ }
+
+ parseFSharpPipelineBody(prec) {
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ this.state.potentialArrowAt = this.state.start;
+ const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
+ this.state.inFSharpPipelineDirectBody = true;
+ const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startPos, startLoc, prec);
+ this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
+ return ret;
+ }
+
+ parseModuleExpression() {
+ this.expectPlugin("moduleBlocks");
+ const node = this.startNode();
+ this.next();
+ this.eat(5);
+ const revertScopes = this.initializeScopes(true);
+ this.enterInitialScopes();
+ const program = this.startNode();
+
+ try {
+ node.body = this.parseProgram(program, 8, "module");
+ } finally {
+ revertScopes();
+ }
+
+ this.eat(8);
+ return this.finishNode(node, "ModuleExpression");
+ }
+
+ parsePropertyNamePrefixOperator(prop) {}
+
+}
+
+const loopLabel = {
+ kind: "loop"
+},
+ switchLabel = {
+ kind: "switch"
+};
+const FUNC_NO_FLAGS = 0b000,
+ FUNC_STATEMENT = 0b001,
+ FUNC_HANGING_STATEMENT = 0b010,
+ FUNC_NULLABLE_ID = 0b100;
+const loneSurrogate = /[\uD800-\uDFFF]/u;
+const keywordRelationalOperator = /in(?:stanceof)?/y;
+
+function babel7CompatTokens(tokens) {
+ for (let i = 0; i < tokens.length; i++) {
+ const token = tokens[i];
+ const {
+ type
+ } = token;
+
+ if (type === 128) {
+ {
+ const {
+ loc,
+ start,
+ value,
+ end
+ } = token;
+ const hashEndPos = start + 1;
+ const hashEndLoc = new Position(loc.start.line, loc.start.column + 1);
+ tokens.splice(i, 1, new Token({
+ type: getExportedToken(25),
+ value: "#",
+ start: start,
+ end: hashEndPos,
+ startLoc: loc.start,
+ endLoc: hashEndLoc
+ }), new Token({
+ type: getExportedToken(122),
+ value: value,
+ start: hashEndPos,
+ end: end,
+ startLoc: hashEndLoc,
+ endLoc: loc.end
+ }));
+ i++;
+ continue;
+ }
+ }
+
+ if (typeof type === "number") {
+ token.type = getExportedToken(type);
+ }
+ }
+
+ return tokens;
+}
+
+class StatementParser extends ExpressionParser {
+ parseTopLevel(file, program) {
+ file.program = this.parseProgram(program);
+ file.comments = this.state.comments;
+ if (this.options.tokens) file.tokens = babel7CompatTokens(this.tokens);
+ return this.finishNode(file, "File");
+ }
+
+ parseProgram(program, end = 129, sourceType = this.options.sourceType) {
+ program.sourceType = sourceType;
+ program.interpreter = this.parseInterpreterDirective();
+ this.parseBlockBody(program, true, true, end);
+
+ if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {
+ for (const [name] of Array.from(this.scope.undefinedExports)) {
+ const pos = this.scope.undefinedExports.get(name);
+ this.raise(pos, ErrorMessages.ModuleExportUndefined, name);
+ }
+ }
+
+ return this.finishNode(program, "Program");
+ }
+
+ stmtToDirective(stmt) {
+ const directive = stmt;
+ directive.type = "Directive";
+ directive.value = directive.expression;
+ delete directive.expression;
+ const directiveLiteral = directive.value;
+ const expressionValue = directiveLiteral.value;
+ const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);
+ const val = directiveLiteral.value = raw.slice(1, -1);
+ this.addExtra(directiveLiteral, "raw", raw);
+ this.addExtra(directiveLiteral, "rawValue", val);
+ this.addExtra(directiveLiteral, "expressionValue", expressionValue);
+ directiveLiteral.type = "DirectiveLiteral";
+ return directive;
+ }
+
+ parseInterpreterDirective() {
+ if (!this.match(26)) {
+ return null;
+ }
+
+ const node = this.startNode();
+ node.value = this.state.value;
+ this.next();
+ return this.finishNode(node, "InterpreterDirective");
+ }
+
+ isLet(context) {
+ if (!this.isContextual(93)) {
+ return false;
+ }
+
+ return this.isLetKeyword(context);
+ }
+
+ isLetKeyword(context) {
+ const next = this.nextTokenStart();
+ const nextCh = this.codePointAtPos(next);
+
+ if (nextCh === 92 || nextCh === 91) {
+ return true;
+ }
+
+ if (context) return false;
+ if (nextCh === 123) return true;
+
+ if (isIdentifierStart(nextCh)) {
+ keywordRelationalOperator.lastIndex = next;
+
+ if (keywordRelationalOperator.test(this.input)) {
+ const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);
+
+ if (!isIdentifierChar(endCh) && endCh !== 92) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ parseStatement(context, topLevel) {
+ if (this.match(24)) {
+ this.parseDecorators(true);
+ }
+
+ return this.parseStatementContent(context, topLevel);
+ }
+
+ parseStatementContent(context, topLevel) {
+ let starttype = this.state.type;
+ const node = this.startNode();
+ let kind;
+
+ if (this.isLet(context)) {
+ starttype = 68;
+ kind = "let";
+ }
+
+ switch (starttype) {
+ case 54:
+ return this.parseBreakContinueStatement(node, true);
+
+ case 57:
+ return this.parseBreakContinueStatement(node, false);
+
+ case 58:
+ return this.parseDebuggerStatement(node);
+
+ case 84:
+ return this.parseDoStatement(node);
+
+ case 85:
+ return this.parseForStatement(node);
+
+ case 62:
+ if (this.lookaheadCharCode() === 46) break;
+
+ if (context) {
+ if (this.state.strict) {
+ this.raise(this.state.start, ErrorMessages.StrictFunction);
+ } else if (context !== "if" && context !== "label") {
+ this.raise(this.state.start, ErrorMessages.SloppyFunction);
+ }
+ }
+
+ return this.parseFunctionStatement(node, false, !context);
+
+ case 74:
+ if (context) this.unexpected();
+ return this.parseClass(node, true);
+
+ case 63:
+ return this.parseIfStatement(node);
+
+ case 64:
+ return this.parseReturnStatement(node);
+
+ case 65:
+ return this.parseSwitchStatement(node);
+
+ case 66:
+ return this.parseThrowStatement(node);
+
+ case 67:
+ return this.parseTryStatement(node);
+
+ case 69:
+ case 68:
+ kind = kind || this.state.value;
+
+ if (context && kind !== "var") {
+ this.raise(this.state.start, ErrorMessages.UnexpectedLexicalDeclaration);
+ }
+
+ return this.parseVarStatement(node, kind);
+
+ case 86:
+ return this.parseWhileStatement(node);
+
+ case 70:
+ return this.parseWithStatement(node);
+
+ case 5:
+ return this.parseBlock();
+
+ case 13:
+ return this.parseEmptyStatement(node);
+
+ case 77:
+ {
+ const nextTokenCharCode = this.lookaheadCharCode();
+
+ if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
+ break;
+ }
+ }
+
+ case 76:
+ {
+ if (!this.options.allowImportExportEverywhere && !topLevel) {
+ this.raise(this.state.start, ErrorMessages.UnexpectedImportExport);
+ }
+
+ this.next();
+ let result;
+
+ if (starttype === 77) {
+ result = this.parseImport(node);
+
+ if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) {
+ this.sawUnambiguousESM = true;
+ }
+ } else {
+ result = this.parseExport(node);
+
+ if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") {
+ this.sawUnambiguousESM = true;
+ }
+ }
+
+ this.assertModuleNodeAllowed(node);
+ return result;
+ }
+
+ default:
+ {
+ if (this.isAsyncFunction()) {
+ if (context) {
+ this.raise(this.state.start, ErrorMessages.AsyncFunctionInSingleStatementContext);
+ }
+
+ this.next();
+ return this.parseFunctionStatement(node, true, !context);
+ }
+ }
+ }
+
+ const maybeName = this.state.value;
+ const expr = this.parseExpression();
+
+ if (tokenIsIdentifier(starttype) && expr.type === "Identifier" && this.eat(14)) {
+ return this.parseLabeledStatement(node, maybeName, expr, context);
+ } else {
+ return this.parseExpressionStatement(node, expr);
+ }
+ }
+
+ assertModuleNodeAllowed(node) {
+ if (!this.options.allowImportExportEverywhere && !this.inModule) {
+ this.raise(node.start, SourceTypeModuleErrorMessages.ImportOutsideModule);
+ }
+ }
+
+ takeDecorators(node) {
+ const decorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
+
+ if (decorators.length) {
+ node.decorators = decorators;
+ this.resetStartLocationFromNode(node, decorators[0]);
+ this.state.decoratorStack[this.state.decoratorStack.length - 1] = [];
+ }
+ }
+
+ canHaveLeadingDecorator() {
+ return this.match(74);
+ }
+
+ parseDecorators(allowExport) {
+ const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
+
+ while (this.match(24)) {
+ const decorator = this.parseDecorator();
+ currentContextDecorators.push(decorator);
+ }
+
+ if (this.match(76)) {
+ if (!allowExport) {
+ this.unexpected();
+ }
+
+ if (this.hasPlugin("decorators") && !this.getPluginOption("decorators", "decoratorsBeforeExport")) {
+ this.raise(this.state.start, ErrorMessages.DecoratorExportClass);
+ }
+ } else if (!this.canHaveLeadingDecorator()) {
+ throw this.raise(this.state.start, ErrorMessages.UnexpectedLeadingDecorator);
+ }
+ }
+
+ parseDecorator() {
+ this.expectOnePlugin(["decorators-legacy", "decorators"]);
+ const node = this.startNode();
+ this.next();
+
+ if (this.hasPlugin("decorators")) {
+ this.state.decoratorStack.push([]);
+ const startPos = this.state.start;
+ const startLoc = this.state.startLoc;
+ let expr;
+
+ if (this.eat(10)) {
+ expr = this.parseExpression();
+ this.expect(11);
+ } else {
+ expr = this.parseIdentifier(false);
+
+ while (this.eat(16)) {
+ const node = this.startNodeAt(startPos, startLoc);
+ node.object = expr;
+ node.property = this.parseIdentifier(true);
+ node.computed = false;
+ expr = this.finishNode(node, "MemberExpression");
+ }
+ }
+
+ node.expression = this.parseMaybeDecoratorArguments(expr);
+ this.state.decoratorStack.pop();
+ } else {
+ node.expression = this.parseExprSubscripts();
+ }
+
+ return this.finishNode(node, "Decorator");
+ }
+
+ parseMaybeDecoratorArguments(expr) {
+ if (this.eat(10)) {
+ const node = this.startNodeAtNode(expr);
+ node.callee = expr;
+ node.arguments = this.parseCallExpressionArguments(11, false);
+ this.toReferencedList(node.arguments);
+ return this.finishNode(node, "CallExpression");
+ }
+
+ return expr;
+ }
+
+ parseBreakContinueStatement(node, isBreak) {
+ this.next();
+
+ if (this.isLineTerminator()) {
+ node.label = null;
+ } else {
+ node.label = this.parseIdentifier();
+ this.semicolon();
+ }
+
+ this.verifyBreakContinue(node, isBreak);
+ return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
+ }
+
+ verifyBreakContinue(node, isBreak) {
+ let i;
+
+ for (i = 0; i < this.state.labels.length; ++i) {
+ const lab = this.state.labels[i];
+
+ if (node.label == null || lab.name === node.label.name) {
+ if (lab.kind != null && (isBreak || lab.kind === "loop")) break;
+ if (node.label && isBreak) break;
+ }
+ }
+
+ if (i === this.state.labels.length) {
+ this.raise(node.start, ErrorMessages.IllegalBreakContinue, isBreak ? "break" : "continue");
+ }
+ }
+
+ parseDebuggerStatement(node) {
+ this.next();
+ this.semicolon();
+ return this.finishNode(node, "DebuggerStatement");
+ }
+
+ parseHeaderExpression() {
+ this.expect(10);
+ const val = this.parseExpression();
+ this.expect(11);
+ return val;
+ }
+
+ parseDoStatement(node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("do"));
+ this.state.labels.pop();
+ this.expect(86);
+ node.test = this.parseHeaderExpression();
+ this.eat(13);
+ return this.finishNode(node, "DoWhileStatement");
+ }
+
+ parseForStatement(node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ let awaitAt = -1;
+
+ if (this.isAwaitAllowed() && this.eatContextual(90)) {
+ awaitAt = this.state.lastTokStart;
+ }
+
+ this.scope.enter(SCOPE_OTHER);
+ this.expect(10);
+
+ if (this.match(13)) {
+ if (awaitAt > -1) {
+ this.unexpected(awaitAt);
+ }
+
+ return this.parseFor(node, null);
+ }
+
+ const startsWithLet = this.isContextual(93);
+ const isLet = startsWithLet && this.isLetKeyword();
+
+ if (this.match(68) || this.match(69) || isLet) {
+ const init = this.startNode();
+ const kind = isLet ? "let" : this.state.value;
+ this.next();
+ this.parseVar(init, true, kind);
+ this.finishNode(init, "VariableDeclaration");
+
+ if ((this.match(52) || this.isContextual(95)) && init.declarations.length === 1) {
+ return this.parseForIn(node, init, awaitAt);
+ }
+
+ if (awaitAt > -1) {
+ this.unexpected(awaitAt);
+ }
+
+ return this.parseFor(node, init);
+ }
+
+ const startsWithAsync = this.isContextual(89);
+ const refExpressionErrors = new ExpressionErrors();
+ const init = this.parseExpression(true, refExpressionErrors);
+ const isForOf = this.isContextual(95);
+
+ if (isForOf) {
+ if (startsWithLet) {
+ this.raise(init.start, ErrorMessages.ForOfLet);
+ } else if (awaitAt === -1 && startsWithAsync && init.type === "Identifier") {
+ this.raise(init.start, ErrorMessages.ForOfAsync);
+ }
+ }
+
+ if (isForOf || this.match(52)) {
+ this.toAssignable(init, true);
+ const description = isForOf ? "for-of statement" : "for-in statement";
+ this.checkLVal(init, description);
+ return this.parseForIn(node, init, awaitAt);
+ } else {
+ this.checkExpressionErrors(refExpressionErrors, true);
+ }
+
+ if (awaitAt > -1) {
+ this.unexpected(awaitAt);
+ }
+
+ return this.parseFor(node, init);
+ }
+
+ parseFunctionStatement(node, isAsync, declarationPosition) {
+ this.next();
+ return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), isAsync);
+ }
+
+ parseIfStatement(node) {
+ this.next();
+ node.test = this.parseHeaderExpression();
+ node.consequent = this.parseStatement("if");
+ node.alternate = this.eat(60) ? this.parseStatement("if") : null;
+ return this.finishNode(node, "IfStatement");
+ }
+
+ parseReturnStatement(node) {
+ if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {
+ this.raise(this.state.start, ErrorMessages.IllegalReturn);
+ }
+
+ this.next();
+
+ if (this.isLineTerminator()) {
+ node.argument = null;
+ } else {
+ node.argument = this.parseExpression();
+ this.semicolon();
+ }
+
+ return this.finishNode(node, "ReturnStatement");
+ }
+
+ parseSwitchStatement(node) {
+ this.next();
+ node.discriminant = this.parseHeaderExpression();
+ const cases = node.cases = [];
+ this.expect(5);
+ this.state.labels.push(switchLabel);
+ this.scope.enter(SCOPE_OTHER);
+ let cur;
+
+ for (let sawDefault; !this.match(8);) {
+ if (this.match(55) || this.match(59)) {
+ const isCase = this.match(55);
+ if (cur) this.finishNode(cur, "SwitchCase");
+ cases.push(cur = this.startNode());
+ cur.consequent = [];
+ this.next();
+
+ if (isCase) {
+ cur.test = this.parseExpression();
+ } else {
+ if (sawDefault) {
+ this.raise(this.state.lastTokStart, ErrorMessages.MultipleDefaultsInSwitch);
+ }
+
+ sawDefault = true;
+ cur.test = null;
+ }
+
+ this.expect(14);
+ } else {
+ if (cur) {
+ cur.consequent.push(this.parseStatement(null));
+ } else {
+ this.unexpected();
+ }
+ }
+ }
+
+ this.scope.exit();
+ if (cur) this.finishNode(cur, "SwitchCase");
+ this.next();
+ this.state.labels.pop();
+ return this.finishNode(node, "SwitchStatement");
+ }
+
+ parseThrowStatement(node) {
+ this.next();
+
+ if (this.hasPrecedingLineBreak()) {
+ this.raise(this.state.lastTokEnd, ErrorMessages.NewlineAfterThrow);
+ }
+
+ node.argument = this.parseExpression();
+ this.semicolon();
+ return this.finishNode(node, "ThrowStatement");
+ }
+
+ parseCatchClauseParam() {
+ const param = this.parseBindingAtom();
+ const simple = param.type === "Identifier";
+ this.scope.enter(simple ? SCOPE_SIMPLE_CATCH : 0);
+ this.checkLVal(param, "catch clause", BIND_LEXICAL);
+ return param;
+ }
+
+ parseTryStatement(node) {
+ this.next();
+ node.block = this.parseBlock();
+ node.handler = null;
+
+ if (this.match(56)) {
+ const clause = this.startNode();
+ this.next();
+
+ if (this.match(10)) {
+ this.expect(10);
+ clause.param = this.parseCatchClauseParam();
+ this.expect(11);
+ } else {
+ clause.param = null;
+ this.scope.enter(SCOPE_OTHER);
+ }
+
+ clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false));
+ this.scope.exit();
+ node.handler = this.finishNode(clause, "CatchClause");
+ }
+
+ node.finalizer = this.eat(61) ? this.parseBlock() : null;
+
+ if (!node.handler && !node.finalizer) {
+ this.raise(node.start, ErrorMessages.NoCatchOrFinally);
+ }
+
+ return this.finishNode(node, "TryStatement");
+ }
+
+ parseVarStatement(node, kind) {
+ this.next();
+ this.parseVar(node, false, kind);
+ this.semicolon();
+ return this.finishNode(node, "VariableDeclaration");
+ }
+
+ parseWhileStatement(node) {
+ this.next();
+ node.test = this.parseHeaderExpression();
+ this.state.labels.push(loopLabel);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("while"));
+ this.state.labels.pop();
+ return this.finishNode(node, "WhileStatement");
+ }
+
+ parseWithStatement(node) {
+ if (this.state.strict) {
+ this.raise(this.state.start, ErrorMessages.StrictWith);
+ }
+
+ this.next();
+ node.object = this.parseHeaderExpression();
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("with"));
+ return this.finishNode(node, "WithStatement");
+ }
+
+ parseEmptyStatement(node) {
+ this.next();
+ return this.finishNode(node, "EmptyStatement");
+ }
+
+ parseLabeledStatement(node, maybeName, expr, context) {
+ for (const label of this.state.labels) {
+ if (label.name === maybeName) {
+ this.raise(expr.start, ErrorMessages.LabelRedeclaration, maybeName);
+ }
+ }
+
+ const kind = tokenIsLoop(this.state.type) ? "loop" : this.match(65) ? "switch" : null;
+
+ for (let i = this.state.labels.length - 1; i >= 0; i--) {
+ const label = this.state.labels[i];
+
+ if (label.statementStart === node.start) {
+ label.statementStart = this.state.start;
+ label.kind = kind;
+ } else {
+ break;
+ }
+ }
+
+ this.state.labels.push({
+ name: maybeName,
+ kind: kind,
+ statementStart: this.state.start
+ });
+ node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label");
+ this.state.labels.pop();
+ node.label = expr;
+ return this.finishNode(node, "LabeledStatement");
+ }
+
+ parseExpressionStatement(node, expr) {
+ node.expression = expr;
+ this.semicolon();
+ return this.finishNode(node, "ExpressionStatement");
+ }
+
+ parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) {
+ const node = this.startNode();
+
+ if (allowDirectives) {
+ this.state.strictErrors.clear();
+ }
+
+ this.expect(5);
+
+ if (createNewLexicalScope) {
+ this.scope.enter(SCOPE_OTHER);
+ }
+
+ this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);
+
+ if (createNewLexicalScope) {
+ this.scope.exit();
+ }
+
+ return this.finishNode(node, "BlockStatement");
+ }
+
+ isValidDirective(stmt) {
+ return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized;
+ }
+
+ parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
+ const body = node.body = [];
+ const directives = node.directives = [];
+ this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);
+ }
+
+ parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {
+ const oldStrict = this.state.strict;
+ let hasStrictModeDirective = false;
+ let parsedNonDirective = false;
+
+ while (!this.match(end)) {
+ const stmt = this.parseStatement(null, topLevel);
+
+ if (directives && !parsedNonDirective) {
+ if (this.isValidDirective(stmt)) {
+ const directive = this.stmtToDirective(stmt);
+ directives.push(directive);
+
+ if (!hasStrictModeDirective && directive.value.value === "use strict") {
+ hasStrictModeDirective = true;
+ this.setStrict(true);
+ }
+
+ continue;
+ }
+
+ parsedNonDirective = true;
+ this.state.strictErrors.clear();
+ }
+
+ body.push(stmt);
+ }
+
+ if (afterBlockParse) {
+ afterBlockParse.call(this, hasStrictModeDirective);
+ }
+
+ if (!oldStrict) {
+ this.setStrict(false);
+ }
+
+ this.next();
+ }
+
+ parseFor(node, init) {
+ node.init = init;
+ this.semicolon(false);
+ node.test = this.match(13) ? null : this.parseExpression();
+ this.semicolon(false);
+ node.update = this.match(11) ? null : this.parseExpression();
+ this.expect(11);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for"));
+ this.scope.exit();
+ this.state.labels.pop();
+ return this.finishNode(node, "ForStatement");
+ }
+
+ parseForIn(node, init, awaitAt) {
+ const isForIn = this.match(52);
+ this.next();
+
+ if (isForIn) {
+ if (awaitAt > -1) this.unexpected(awaitAt);
+ } else {
+ node.await = awaitAt > -1;
+ }
+
+ if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) {
+ this.raise(init.start, ErrorMessages.ForInOfLoopInitializer, isForIn ? "for-in" : "for-of");
+ } else if (init.type === "AssignmentPattern") {
+ this.raise(init.start, ErrorMessages.InvalidLhs, "for-loop");
+ }
+
+ node.left = init;
+ node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();
+ this.expect(11);
+ node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement("for"));
+ this.scope.exit();
+ this.state.labels.pop();
+ return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement");
+ }
+
+ parseVar(node, isFor, kind) {
+ const declarations = node.declarations = [];
+ const isTypescript = this.hasPlugin("typescript");
+ node.kind = kind;
+
+ for (;;) {
+ const decl = this.startNode();
+ this.parseVarId(decl, kind);
+
+ if (this.eat(27)) {
+ decl.init = isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();
+ } else {
+ if (kind === "const" && !(this.match(52) || this.isContextual(95))) {
+ if (!isTypescript) {
+ this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Const declarations");
+ }
+ } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(52) || this.isContextual(95)))) {
+ this.raise(this.state.lastTokEnd, ErrorMessages.DeclarationMissingInitializer, "Complex binding patterns");
+ }
+
+ decl.init = null;
+ }
+
+ declarations.push(this.finishNode(decl, "VariableDeclarator"));
+ if (!this.eat(12)) break;
+ }
+
+ return node;
+ }
+
+ parseVarId(decl, kind) {
+ decl.id = this.parseBindingAtom();
+ this.checkLVal(decl.id, "variable declaration", kind === "var" ? BIND_VAR : BIND_LEXICAL, undefined, kind !== "var");
+ }
+
+ parseFunction(node, statement = FUNC_NO_FLAGS, isAsync = false) {
+ const isStatement = statement & FUNC_STATEMENT;
+ const isHangingStatement = statement & FUNC_HANGING_STATEMENT;
+ const requireId = !!isStatement && !(statement & FUNC_NULLABLE_ID);
+ this.initFunction(node, isAsync);
+
+ if (this.match(49) && isHangingStatement) {
+ this.raise(this.state.start, ErrorMessages.GeneratorInSingleStatementContext);
+ }
+
+ node.generator = this.eat(49);
+
+ if (isStatement) {
+ node.id = this.parseFunctionId(requireId);
+ }
+
+ const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
+ this.state.maybeInArrowParameters = false;
+ this.scope.enter(SCOPE_FUNCTION);
+ this.prodParam.enter(functionFlags(isAsync, node.generator));
+
+ if (!isStatement) {
+ node.id = this.parseFunctionId();
+ }
+
+ this.parseFunctionParams(node, false);
+ this.withSmartMixTopicForbiddingContext(() => {
+ this.parseFunctionBodyAndFinish(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");
+ });
+ this.prodParam.exit();
+ this.scope.exit();
+
+ if (isStatement && !isHangingStatement) {
+ this.registerFunctionStatementId(node);
+ }
+
+ this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
+ return node;
+ }
+
+ parseFunctionId(requireId) {
+ return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;
+ }
+
+ parseFunctionParams(node, allowModifiers) {
+ this.expect(10);
+ this.expressionScope.enter(newParameterDeclarationScope());
+ node.params = this.parseBindingList(11, 41, false, allowModifiers);
+ this.expressionScope.exit();
+ }
+
+ registerFunctionStatementId(node) {
+ if (!node.id) return;
+ this.scope.declareName(node.id.name, this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.start);
+ }
+
+ parseClass(node, isStatement, optionalId) {
+ this.next();
+ this.takeDecorators(node);
+ const oldStrict = this.state.strict;
+ this.state.strict = true;
+ this.parseClassId(node, isStatement, optionalId);
+ this.parseClassSuper(node);
+ node.body = this.parseClassBody(!!node.superClass, oldStrict);
+ return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
+ }
+
+ isClassProperty() {
+ return this.match(27) || this.match(13) || this.match(8);
+ }
+
+ isClassMethod() {
+ return this.match(10);
+ }
+
+ isNonstaticConstructor(method) {
+ return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor");
+ }
+
+ parseClassBody(hadSuperClass, oldStrict) {
+ this.classScope.enter();
+ const state = {
+ hadConstructor: false,
+ hadSuperClass
+ };
+ let decorators = [];
+ const classBody = this.startNode();
+ classBody.body = [];
+ this.expect(5);
+ this.withSmartMixTopicForbiddingContext(() => {
+ while (!this.match(8)) {
+ if (this.eat(13)) {
+ if (decorators.length > 0) {
+ throw this.raise(this.state.lastTokEnd, ErrorMessages.DecoratorSemicolon);
+ }
+
+ continue;
+ }
+
+ if (this.match(24)) {
+ decorators.push(this.parseDecorator());
+ continue;
+ }
+
+ const member = this.startNode();
+
+ if (decorators.length) {
+ member.decorators = decorators;
+ this.resetStartLocationFromNode(member, decorators[0]);
+ decorators = [];
+ }
+
+ this.parseClassMember(classBody, member, state);
+
+ if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
+ this.raise(member.start, ErrorMessages.DecoratorConstructor);
+ }
+ }
+ });
+ this.state.strict = oldStrict;
+ this.next();
+
+ if (decorators.length) {
+ throw this.raise(this.state.start, ErrorMessages.TrailingDecorator);
+ }
+
+ this.classScope.exit();
+ return this.finishNode(classBody, "ClassBody");
+ }
+
+ parseClassMemberFromModifier(classBody, member) {
+ const key = this.parseIdentifier(true);
+
+ if (this.isClassMethod()) {
+ const method = member;
+ method.kind = "method";
+ method.computed = false;
+ method.key = key;
+ method.static = false;
+ this.pushClassMethod(classBody, method, false, false, false, false);
+ return true;
+ } else if (this.isClassProperty()) {
+ const prop = member;
+ prop.computed = false;
+ prop.key = key;
+ prop.static = false;
+ classBody.body.push(this.parseClassProperty(prop));
+ return true;
+ }
+
+ this.resetPreviousNodeTrailingComments(key);
+ return false;
+ }
+
+ parseClassMember(classBody, member, state) {
+ const isStatic = this.isContextual(98);
+
+ if (isStatic) {
+ if (this.parseClassMemberFromModifier(classBody, member)) {
+ return;
+ }
+
+ if (this.eat(5)) {
+ this.parseClassStaticBlock(classBody, member);
+ return;
+ }
+ }
+
+ this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
+ }
+
+ parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
+ const publicMethod = member;
+ const privateMethod = member;
+ const publicProp = member;
+ const privateProp = member;
+ const method = publicMethod;
+ const publicMember = publicMethod;
+ member.static = isStatic;
+ this.parsePropertyNamePrefixOperator(member);
+
+ if (this.eat(49)) {
+ method.kind = "method";
+ const isPrivateName = this.match(128);
+ this.parseClassElementName(method);
+
+ if (isPrivateName) {
+ this.pushClassPrivateMethod(classBody, privateMethod, true, false);
+ return;
+ }
+
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsGenerator);
+ }
+
+ this.pushClassMethod(classBody, publicMethod, true, false, false, false);
+ return;
+ }
+
+ const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc;
+ const isPrivate = this.match(128);
+ const key = this.parseClassElementName(member);
+ const maybeQuestionTokenStart = this.state.start;
+ this.parsePostMemberNameModifiers(publicMember);
+
+ if (this.isClassMethod()) {
+ method.kind = "method";
+
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, false, false);
+ return;
+ }
+
+ const isConstructor = this.isNonstaticConstructor(publicMethod);
+ let allowsDirectSuper = false;
+
+ if (isConstructor) {
+ publicMethod.kind = "constructor";
+
+ if (state.hadConstructor && !this.hasPlugin("typescript")) {
+ this.raise(key.start, ErrorMessages.DuplicateConstructor);
+ }
+
+ if (isConstructor && this.hasPlugin("typescript") && member.override) {
+ this.raise(key.start, ErrorMessages.OverrideOnConstructor);
+ }
+
+ state.hadConstructor = true;
+ allowsDirectSuper = state.hadSuperClass;
+ }
+
+ this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);
+ } else if (this.isClassProperty()) {
+ if (isPrivate) {
+ this.pushClassPrivateProperty(classBody, privateProp);
+ } else {
+ this.pushClassProperty(classBody, publicProp);
+ }
+ } else if (isContextual && key.name === "async" && !this.isLineTerminator()) {
+ this.resetPreviousNodeTrailingComments(key);
+ const isGenerator = this.eat(49);
+
+ if (publicMember.optional) {
+ this.unexpected(maybeQuestionTokenStart);
+ }
+
+ method.kind = "method";
+ const isPrivate = this.match(128);
+ this.parseClassElementName(method);
+ this.parsePostMemberNameModifiers(publicMember);
+
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
+ } else {
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAsync);
+ }
+
+ this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
+ }
+ } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(49) && this.isLineTerminator())) {
+ this.resetPreviousNodeTrailingComments(key);
+ method.kind = key.name;
+ const isPrivate = this.match(128);
+ this.parseClassElementName(publicMethod);
+
+ if (isPrivate) {
+ this.pushClassPrivateMethod(classBody, privateMethod, false, false);
+ } else {
+ if (this.isNonstaticConstructor(publicMethod)) {
+ this.raise(publicMethod.key.start, ErrorMessages.ConstructorIsAccessor);
+ }
+
+ this.pushClassMethod(classBody, publicMethod, false, false, false, false);
+ }
+
+ this.checkGetterSetterParams(publicMethod);
+ } else if (this.isLineTerminator()) {
+ if (isPrivate) {
+ this.pushClassPrivateProperty(classBody, privateProp);
+ } else {
+ this.pushClassProperty(classBody, publicProp);
+ }
+ } else {
+ this.unexpected();
+ }
+ }
+
+ parseClassElementName(member) {
+ const {
+ type,
+ value,
+ start
+ } = this.state;
+
+ if ((type === 122 || type === 123) && member.static && value === "prototype") {
+ this.raise(start, ErrorMessages.StaticPrototype);
+ }
+
+ if (type === 128) {
+ if (value === "constructor") {
+ this.raise(start, ErrorMessages.ConstructorClassPrivateField);
+ }
+
+ const key = this.parsePrivateName();
+ member.key = key;
+ return key;
+ }
+
+ return this.parsePropertyName(member);
+ }
+
+ parseClassStaticBlock(classBody, member) {
+ var _member$decorators;
+
+ this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER);
+ const oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.prodParam.enter(PARAM);
+ const body = member.body = [];
+ this.parseBlockOrModuleBlockBody(body, undefined, false, 8);
+ this.prodParam.exit();
+ this.scope.exit();
+ this.state.labels = oldLabels;
+ classBody.body.push(this.finishNode(member, "StaticBlock"));
+
+ if ((_member$decorators = member.decorators) != null && _member$decorators.length) {
+ this.raise(member.start, ErrorMessages.DecoratorStaticBlock);
+ }
+ }
+
+ pushClassProperty(classBody, prop) {
+ if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) {
+ this.raise(prop.key.start, ErrorMessages.ConstructorClassField);
+ }
+
+ classBody.body.push(this.parseClassProperty(prop));
+ }
+
+ pushClassPrivateProperty(classBody, prop) {
+ const node = this.parseClassPrivateProperty(prop);
+ classBody.body.push(node);
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.start);
+ }
+
+ pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
+ classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true));
+ }
+
+ pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
+ const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);
+ classBody.body.push(node);
+ const kind = node.kind === "get" ? node.static ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node.static ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER;
+ this.declareClassPrivateMethodInScope(node, kind);
+ }
+
+ declareClassPrivateMethodInScope(node, kind) {
+ this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.start);
+ }
+
+ parsePostMemberNameModifiers(methodOrProp) {}
+
+ parseClassPrivateProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassPrivateProperty");
+ }
+
+ parseClassProperty(node) {
+ this.parseInitializer(node);
+ this.semicolon();
+ return this.finishNode(node, "ClassProperty");
+ }
+
+ parseInitializer(node) {
+ this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);
+ this.expressionScope.enter(newExpressionScope());
+ this.prodParam.enter(PARAM);
+ node.value = this.eat(27) ? this.parseMaybeAssignAllowIn() : null;
+ this.expressionScope.exit();
+ this.prodParam.exit();
+ this.scope.exit();
+ }
+
+ parseClassId(node, isStatement, optionalId, bindingType = BIND_CLASS) {
+ if (tokenIsIdentifier(this.state.type)) {
+ node.id = this.parseIdentifier();
+
+ if (isStatement) {
+ this.checkLVal(node.id, "class name", bindingType);
+ }
+ } else {
+ if (optionalId || !isStatement) {
+ node.id = null;
+ } else {
+ this.unexpected(null, ErrorMessages.MissingClassName);
+ }
+ }
+ }
+
+ parseClassSuper(node) {
+ node.superClass = this.eat(75) ? this.parseExprSubscripts() : null;
+ }
+
+ parseExport(node) {
+ const hasDefault = this.maybeParseExportDefaultSpecifier(node);
+ const parseAfterDefault = !hasDefault || this.eat(12);
+ const hasStar = parseAfterDefault && this.eatExportStar(node);
+ const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
+ const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));
+ const isFromRequired = hasDefault || hasStar;
+
+ if (hasStar && !hasNamespace) {
+ if (hasDefault) this.unexpected();
+ this.parseExportFrom(node, true);
+ return this.finishNode(node, "ExportAllDeclaration");
+ }
+
+ const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);
+
+ if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers || hasNamespace && parseAfterNamespace && !hasSpecifiers) {
+ throw this.unexpected(null, 5);
+ }
+
+ let hasDeclaration;
+
+ if (isFromRequired || hasSpecifiers) {
+ hasDeclaration = false;
+ this.parseExportFrom(node, isFromRequired);
+ } else {
+ hasDeclaration = this.maybeParseExportDeclaration(node);
+ }
+
+ if (isFromRequired || hasSpecifiers || hasDeclaration) {
+ this.checkExport(node, true, false, !!node.source);
+ return this.finishNode(node, "ExportNamedDeclaration");
+ }
+
+ if (this.eat(59)) {
+ node.declaration = this.parseExportDefaultExpression();
+ this.checkExport(node, true, true);
+ return this.finishNode(node, "ExportDefaultDeclaration");
+ }
+
+ throw this.unexpected(null, 5);
+ }
+
+ eatExportStar(node) {
+ return this.eat(49);
+ }
+
+ maybeParseExportDefaultSpecifier(node) {
+ if (this.isExportDefaultSpecifier()) {
+ this.expectPlugin("exportDefaultFrom");
+ const specifier = this.startNode();
+ specifier.exported = this.parseIdentifier(true);
+ node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ return true;
+ }
+
+ return false;
+ }
+
+ maybeParseExportNamespaceSpecifier(node) {
+ if (this.isContextual(87)) {
+ if (!node.specifiers) node.specifiers = [];
+ const specifier = this.startNodeAt(this.state.lastTokStart, this.state.lastTokStartLoc);
+ this.next();
+ specifier.exported = this.parseModuleExportName();
+ node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
+ return true;
+ }
+
+ return false;
+ }
+
+ maybeParseExportNamedSpecifiers(node) {
+ if (this.match(5)) {
+ if (!node.specifiers) node.specifiers = [];
+ const isTypeExport = node.exportKind === "type";
+ node.specifiers.push(...this.parseExportSpecifiers(isTypeExport));
+ node.source = null;
+ node.declaration = null;
+
+ if (this.hasPlugin("importAssertions")) {
+ node.assertions = [];
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ maybeParseExportDeclaration(node) {
+ if (this.shouldParseExportDeclaration()) {
+ node.specifiers = [];
+ node.source = null;
+
+ if (this.hasPlugin("importAssertions")) {
+ node.assertions = [];
+ }
+
+ node.declaration = this.parseExportDeclaration(node);
+ return true;
+ }
+
+ return false;
+ }
+
+ isAsyncFunction() {
+ if (!this.isContextual(89)) return false;
+ const next = this.nextTokenStart();
+ return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, "function");
+ }
+
+ parseExportDefaultExpression() {
+ const expr = this.startNode();
+ const isAsync = this.isAsyncFunction();
+
+ if (this.match(62) || isAsync) {
+ this.next();
+
+ if (isAsync) {
+ this.next();
+ }
+
+ return this.parseFunction(expr, FUNC_STATEMENT | FUNC_NULLABLE_ID, isAsync);
+ } else if (this.match(74)) {
+ return this.parseClass(expr, true, true);
+ } else if (this.match(24)) {
+ if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport")) {
+ this.raise(this.state.start, ErrorMessages.DecoratorBeforeExport);
+ }
+
+ this.parseDecorators(false);
+ return this.parseClass(expr, true, true);
+ } else if (this.match(69) || this.match(68) || this.isLet()) {
+ throw this.raise(this.state.start, ErrorMessages.UnsupportedDefaultExport);
+ } else {
+ const res = this.parseMaybeAssignAllowIn();
+ this.semicolon();
+ return res;
+ }
+ }
+
+ parseExportDeclaration(node) {
+ return this.parseStatement(null);
+ }
+
+ isExportDefaultSpecifier() {
+ const {
+ type
+ } = this.state;
+
+ if (tokenIsIdentifier(type)) {
+ if (type === 89 && !this.state.containsEsc || type === 93) {
+ return false;
+ }
+
+ if ((type === 120 || type === 119) && !this.state.containsEsc) {
+ const {
+ type: nextType
+ } = this.lookahead();
+
+ if (tokenIsIdentifier(nextType) && nextType !== 91 || nextType === 5) {
+ this.expectOnePlugin(["flow", "typescript"]);
+ return false;
+ }
+ }
+ } else if (!this.match(59)) {
+ return false;
+ }
+
+ const next = this.nextTokenStart();
+ const hasFrom = this.isUnparsedContextual(next, "from");
+
+ if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {
+ return true;
+ }
+
+ if (this.match(59) && hasFrom) {
+ const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));
+ return nextAfterFrom === 34 || nextAfterFrom === 39;
+ }
+
+ return false;
+ }
+
+ parseExportFrom(node, expect) {
+ if (this.eatContextual(91)) {
+ node.source = this.parseImportSource();
+ this.checkExport(node);
+ const assertions = this.maybeParseImportAssertions();
+
+ if (assertions) {
+ node.assertions = assertions;
+ }
+ } else if (expect) {
+ this.unexpected();
+ }
+
+ this.semicolon();
+ }
+
+ shouldParseExportDeclaration() {
+ const {
+ type
+ } = this.state;
+
+ if (type === 24) {
+ this.expectOnePlugin(["decorators", "decorators-legacy"]);
+
+ if (this.hasPlugin("decorators")) {
+ if (this.getPluginOption("decorators", "decoratorsBeforeExport")) {
+ this.unexpected(this.state.start, ErrorMessages.DecoratorBeforeExport);
+ } else {
+ return true;
+ }
+ }
+ }
+
+ return type === 68 || type === 69 || type === 62 || type === 74 || this.isLet() || this.isAsyncFunction();
+ }
+
+ checkExport(node, checkNames, isDefault, isFrom) {
+ if (checkNames) {
+ if (isDefault) {
+ this.checkDuplicateExports(node, "default");
+
+ if (this.hasPlugin("exportDefaultFrom")) {
+ var _declaration$extra;
+
+ const declaration = node.declaration;
+
+ if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {
+ this.raise(declaration.start, ErrorMessages.ExportDefaultFromAsIdentifier);
+ }
+ }
+ } else if (node.specifiers && node.specifiers.length) {
+ for (const specifier of node.specifiers) {
+ const {
+ exported
+ } = specifier;
+ const exportedName = exported.type === "Identifier" ? exported.name : exported.value;
+ this.checkDuplicateExports(specifier, exportedName);
+
+ if (!isFrom && specifier.local) {
+ const {
+ local
+ } = specifier;
+
+ if (local.type !== "Identifier") {
+ this.raise(specifier.start, ErrorMessages.ExportBindingIsString, local.value, exportedName);
+ } else {
+ this.checkReservedWord(local.name, local.start, true, false);
+ this.scope.checkLocalExport(local);
+ }
+ }
+ }
+ } else if (node.declaration) {
+ if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") {
+ const id = node.declaration.id;
+ if (!id) throw new Error("Assertion failure");
+ this.checkDuplicateExports(node, id.name);
+ } else if (node.declaration.type === "VariableDeclaration") {
+ for (const declaration of node.declaration.declarations) {
+ this.checkDeclaration(declaration.id);
+ }
+ }
+ }
+ }
+
+ const currentContextDecorators = this.state.decoratorStack[this.state.decoratorStack.length - 1];
+
+ if (currentContextDecorators.length) {
+ throw this.raise(node.start, ErrorMessages.UnsupportedDecoratorExport);
+ }
+ }
+
+ checkDeclaration(node) {
+ if (node.type === "Identifier") {
+ this.checkDuplicateExports(node, node.name);
+ } else if (node.type === "ObjectPattern") {
+ for (const prop of node.properties) {
+ this.checkDeclaration(prop);
+ }
+ } else if (node.type === "ArrayPattern") {
+ for (const elem of node.elements) {
+ if (elem) {
+ this.checkDeclaration(elem);
+ }
+ }
+ } else if (node.type === "ObjectProperty") {
+ this.checkDeclaration(node.value);
+ } else if (node.type === "RestElement") {
+ this.checkDeclaration(node.argument);
+ } else if (node.type === "AssignmentPattern") {
+ this.checkDeclaration(node.left);
+ }
+ }
+
+ checkDuplicateExports(node, name) {
+ if (this.exportedIdentifiers.has(name)) {
+ this.raise(node.start, name === "default" ? ErrorMessages.DuplicateDefaultExport : ErrorMessages.DuplicateExport, name);
+ }
+
+ this.exportedIdentifiers.add(name);
+ }
+
+ parseExportSpecifiers(isInTypeExport) {
+ const nodes = [];
+ let first = true;
+ this.expect(5);
+
+ while (!this.eat(8)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(12);
+ if (this.eat(8)) break;
+ }
+
+ const isMaybeTypeOnly = this.isContextual(120);
+ const isString = this.match(123);
+ const node = this.startNode();
+ node.local = this.parseModuleExportName();
+ nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly));
+ }
+
+ return nodes;
+ }
+
+ parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
+ if (this.eatContextual(87)) {
+ node.exported = this.parseModuleExportName();
+ } else if (isString) {
+ node.exported = cloneStringLiteral(node.local);
+ } else if (!node.exported) {
+ node.exported = cloneIdentifier(node.local);
+ }
+
+ return this.finishNode(node, "ExportSpecifier");
+ }
+
+ parseModuleExportName() {
+ if (this.match(123)) {
+ const result = this.parseStringLiteral(this.state.value);
+ const surrogate = result.value.match(loneSurrogate);
+
+ if (surrogate) {
+ this.raise(result.start, ErrorMessages.ModuleExportNameHasLoneSurrogate, surrogate[0].charCodeAt(0).toString(16));
+ }
+
+ return result;
+ }
+
+ return this.parseIdentifier(true);
+ }
+
+ parseImport(node) {
+ node.specifiers = [];
+
+ if (!this.match(123)) {
+ const hasDefault = this.maybeParseDefaultImportSpecifier(node);
+ const parseNext = !hasDefault || this.eat(12);
+ const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
+ if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
+ this.expectContextual(91);
+ }
+
+ node.source = this.parseImportSource();
+ const assertions = this.maybeParseImportAssertions();
+
+ if (assertions) {
+ node.assertions = assertions;
+ } else {
+ const attributes = this.maybeParseModuleAttributes();
+
+ if (attributes) {
+ node.attributes = attributes;
+ }
+ }
+
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+ }
+
+ parseImportSource() {
+ if (!this.match(123)) this.unexpected();
+ return this.parseExprAtom();
+ }
+
+ shouldParseDefaultImport(node) {
+ return tokenIsIdentifier(this.state.type);
+ }
+
+ parseImportSpecifierLocal(node, specifier, type, contextDescription) {
+ specifier.local = this.parseIdentifier();
+ this.checkLVal(specifier.local, contextDescription, BIND_LEXICAL);
+ node.specifiers.push(this.finishNode(specifier, type));
+ }
+
+ parseAssertEntries() {
+ const attrs = [];
+ const attrNames = new Set();
+
+ do {
+ if (this.match(8)) {
+ break;
+ }
+
+ const node = this.startNode();
+ const keyName = this.state.value;
+
+ if (attrNames.has(keyName)) {
+ this.raise(this.state.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, keyName);
+ }
+
+ attrNames.add(keyName);
+
+ if (this.match(123)) {
+ node.key = this.parseStringLiteral(keyName);
+ } else {
+ node.key = this.parseIdentifier(true);
+ }
+
+ this.expect(14);
+
+ if (!this.match(123)) {
+ throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue);
+ }
+
+ node.value = this.parseStringLiteral(this.state.value);
+ this.finishNode(node, "ImportAttribute");
+ attrs.push(node);
+ } while (this.eat(12));
+
+ return attrs;
+ }
+
+ maybeParseModuleAttributes() {
+ if (this.match(70) && !this.hasPrecedingLineBreak()) {
+ this.expectPlugin("moduleAttributes");
+ this.next();
+ } else {
+ if (this.hasPlugin("moduleAttributes")) return [];
+ return null;
+ }
+
+ const attrs = [];
+ const attributes = new Set();
+
+ do {
+ const node = this.startNode();
+ node.key = this.parseIdentifier(true);
+
+ if (node.key.name !== "type") {
+ this.raise(node.key.start, ErrorMessages.ModuleAttributeDifferentFromType, node.key.name);
+ }
+
+ if (attributes.has(node.key.name)) {
+ this.raise(node.key.start, ErrorMessages.ModuleAttributesWithDuplicateKeys, node.key.name);
+ }
+
+ attributes.add(node.key.name);
+ this.expect(14);
+
+ if (!this.match(123)) {
+ throw this.unexpected(this.state.start, ErrorMessages.ModuleAttributeInvalidValue);
+ }
+
+ node.value = this.parseStringLiteral(this.state.value);
+ this.finishNode(node, "ImportAttribute");
+ attrs.push(node);
+ } while (this.eat(12));
+
+ return attrs;
+ }
+
+ maybeParseImportAssertions() {
+ if (this.isContextual(88) && !this.hasPrecedingLineBreak()) {
+ this.expectPlugin("importAssertions");
+ this.next();
+ } else {
+ if (this.hasPlugin("importAssertions")) return [];
+ return null;
+ }
+
+ this.eat(5);
+ const attrs = this.parseAssertEntries();
+ this.eat(8);
+ return attrs;
+ }
+
+ maybeParseDefaultImportSpecifier(node) {
+ if (this.shouldParseDefaultImport(node)) {
+ this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier", "default import specifier");
+ return true;
+ }
+
+ return false;
+ }
+
+ maybeParseStarImportSpecifier(node) {
+ if (this.match(49)) {
+ const specifier = this.startNode();
+ this.next();
+ this.expectContextual(87);
+ this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier", "import namespace specifier");
+ return true;
+ }
+
+ return false;
+ }
+
+ parseNamedImportSpecifiers(node) {
+ let first = true;
+ this.expect(5);
+
+ while (!this.eat(8)) {
+ if (first) {
+ first = false;
+ } else {
+ if (this.eat(14)) {
+ throw this.raise(this.state.start, ErrorMessages.DestructureNamedImport);
+ }
+
+ this.expect(12);
+ if (this.eat(8)) break;
+ }
+
+ const specifier = this.startNode();
+ const importedIsString = this.match(123);
+ const isMaybeTypeOnly = this.isContextual(120);
+ specifier.imported = this.parseModuleExportName();
+ const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly);
+ node.specifiers.push(importSpecifier);
+ }
+ }
+
+ parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly) {
+ if (this.eatContextual(87)) {
+ specifier.local = this.parseIdentifier();
+ } else {
+ const {
+ imported
+ } = specifier;
+
+ if (importedIsString) {
+ throw this.raise(specifier.start, ErrorMessages.ImportBindingIsString, imported.value);
+ }
+
+ this.checkReservedWord(imported.name, specifier.start, true, true);
+
+ if (!specifier.local) {
+ specifier.local = cloneIdentifier(imported);
+ }
+ }
+
+ this.checkLVal(specifier.local, "import specifier", BIND_LEXICAL);
+ return this.finishNode(specifier, "ImportSpecifier");
+ }
+
+ isThisParam(param) {
+ return param.type === "Identifier" && param.name === "this";
+ }
+
+}
+
+class Parser extends StatementParser {
+ constructor(options, input) {
+ options = getOptions(options);
+ super(options, input);
+ this.options = options;
+ this.initializeScopes();
+ this.plugins = pluginsMap(this.options.plugins);
+ this.filename = options.sourceFilename;
+ }
+
+ getScopeHandler() {
+ return ScopeHandler;
+ }
+
+ parse() {
+ this.enterInitialScopes();
+ const file = this.startNode();
+ const program = this.startNode();
+ this.nextToken();
+ file.errors = null;
+ this.parseTopLevel(file, program);
+ file.errors = this.state.errors;
+ return file;
+ }
+
+}
+
+function pluginsMap(plugins) {
+ const pluginMap = new Map();
+
+ for (const plugin of plugins) {
+ const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}];
+ if (!pluginMap.has(name)) pluginMap.set(name, options || {});
+ }
+
+ return pluginMap;
+}
+
+function parse(input, options) {
+ var _options;
+
+ if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {
+ options = Object.assign({}, options);
+
+ try {
+ options.sourceType = "module";
+ const parser = getParser(options, input);
+ const ast = parser.parse();
+
+ if (parser.sawUnambiguousESM) {
+ return ast;
+ }
+
+ if (parser.ambiguousScriptDifferentAst) {
+ try {
+ options.sourceType = "script";
+ return getParser(options, input).parse();
+ } catch (_unused) {}
+ } else {
+ ast.program.sourceType = "script";
+ }
+
+ return ast;
+ } catch (moduleError) {
+ try {
+ options.sourceType = "script";
+ return getParser(options, input).parse();
+ } catch (_unused2) {}
+
+ throw moduleError;
+ }
+ } else {
+ return getParser(options, input).parse();
+ }
+}
+function parseExpression(input, options) {
+ const parser = getParser(options, input);
+
+ if (parser.options.strictMode) {
+ parser.state.strict = true;
+ }
+
+ return parser.getExpression();
+}
+
+function generateExportedTokenTypes(internalTokenTypes) {
+ const tokenTypes = {};
+
+ for (const typeName of Object.keys(internalTokenTypes)) {
+ tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);
+ }
+
+ return tokenTypes;
+}
+
+const tokTypes = generateExportedTokenTypes(tt);
+
+function getParser(options, input) {
+ let cls = Parser;
+
+ if (options != null && options.plugins) {
+ validatePlugins(options.plugins);
+ cls = getParserClass(options.plugins);
+ }
+
+ return new cls(options, input);
+}
+
+const parserClassCache = {};
+
+function getParserClass(pluginsFromOptions) {
+ const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name));
+ const key = pluginList.join("/");
+ let cls = parserClassCache[key];
+
+ if (!cls) {
+ cls = Parser;
+
+ for (const plugin of pluginList) {
+ cls = mixinPlugins[plugin](cls);
+ }
+
+ parserClassCache[key] = cls;
+ }
+
+ return cls;
+}
+
+exports.parse = parse;
+exports.parseExpression = parseExpression;
+exports.tokTypes = tokTypes;
+//# sourceMappingURL=index.js.map
diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/package.json b/tools/node_modules/eslint/node_modules/@babel/parser/package.json
new file mode 100644
index 0000000000..03e7e9e033
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/parser/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@babel/parser",
+ "version": "7.16.4",
+ "description": "A JavaScript parser",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-parser",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "keywords": [
+ "babel",
+ "javascript",
+ "parser",
+ "tc39",
+ "ecmascript",
+ "@babel/parser"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-parser"
+ },
+ "main": "./lib/index.js",
+ "types": "./typings/babel-parser.d.ts",
+ "files": [
+ "bin",
+ "lib",
+ "typings"
+ ],
+ "engines": {
+ "node": ">=6.0.0"
+ },
+ "devDependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/helper-fixtures": "^7.16.0",
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "charcodes": "^0.2.0"
+ },
+ "bin": "./bin/babel-parser.js"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/LICENSE b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/README.md b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/README.md
new file mode 100644
index 0000000000..2215629030
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/README.md
@@ -0,0 +1,19 @@
+# @babel/plugin-syntax-import-assertions
+
+> Allow parsing of the module assertion attributes in the import statement
+
+See our website [@babel/plugin-syntax-import-assertions](https://babeljs.io/docs/en/babel-plugin-syntax-import-assertions) for more information.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/plugin-syntax-import-assertions
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/plugin-syntax-import-assertions --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js
new file mode 100644
index 0000000000..b17617b9f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/lib/index.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _helperPluginUtils = require("@babel/helper-plugin-utils");
+
+var _default = (0, _helperPluginUtils.declare)(api => {
+ api.assertVersion(7);
+ return {
+ name: "syntax-import-assertions",
+
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push(["importAssertions"]);
+ }
+
+ };
+});
+
+exports.default = _default; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json
new file mode 100644
index 0000000000..aa26d7e202
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/package.json
@@ -0,0 +1,31 @@
+{
+ "name": "@babel/plugin-syntax-import-assertions",
+ "version": "7.16.0",
+ "description": "Allow parsing of the module assertion attributes in the import statement",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-plugin-syntax-import-assertions"
+ },
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "main": "./lib/index.js",
+ "keywords": [
+ "babel-plugin"
+ ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "author": "The Babel Team (https://babel.dev/team)"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/src/index.js b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/src/index.js
new file mode 100644
index 0000000000..e99359e037
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/plugin-syntax-import-assertions/src/index.js
@@ -0,0 +1,13 @@
+import { declare } from "@babel/helper-plugin-utils";
+
+export default declare(api => {
+ api.assertVersion(7);
+
+ return {
+ name: "syntax-import-assertions",
+
+ manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push(["importAssertions"]);
+ },
+ };
+});
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/LICENSE b/tools/node_modules/eslint/node_modules/@babel/template/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/README.md b/tools/node_modules/eslint/node_modules/@babel/template/README.md
new file mode 100644
index 0000000000..759c65aa6b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/README.md
@@ -0,0 +1,19 @@
+# @babel/template
+
+> Generate an AST from a string template.
+
+See our website [@babel/template](https://babeljs.io/docs/en/babel-template) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/template
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/template --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/builder.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/builder.js
new file mode 100644
index 0000000000..e65b27d77c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/builder.js
@@ -0,0 +1,81 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createTemplateBuilder;
+
+var _options = require("./options");
+
+var _string = require("./string");
+
+var _literal = require("./literal");
+
+const NO_PLACEHOLDER = (0, _options.validate)({
+ placeholderPattern: false
+});
+
+function createTemplateBuilder(formatter, defaultOpts) {
+ const templateFnCache = new WeakMap();
+ const templateAstCache = new WeakMap();
+ const cachedOpts = defaultOpts || (0, _options.validate)(null);
+ return Object.assign((tpl, ...args) => {
+ if (typeof tpl === "string") {
+ if (args.length > 1) throw new Error("Unexpected extra params.");
+ return extendedTrace((0, _string.default)(formatter, tpl, (0, _options.merge)(cachedOpts, (0, _options.validate)(args[0]))));
+ } else if (Array.isArray(tpl)) {
+ let builder = templateFnCache.get(tpl);
+
+ if (!builder) {
+ builder = (0, _literal.default)(formatter, tpl, cachedOpts);
+ templateFnCache.set(tpl, builder);
+ }
+
+ return extendedTrace(builder(args));
+ } else if (typeof tpl === "object" && tpl) {
+ if (args.length > 0) throw new Error("Unexpected extra params.");
+ return createTemplateBuilder(formatter, (0, _options.merge)(cachedOpts, (0, _options.validate)(tpl)));
+ }
+
+ throw new Error(`Unexpected template param ${typeof tpl}`);
+ }, {
+ ast: (tpl, ...args) => {
+ if (typeof tpl === "string") {
+ if (args.length > 1) throw new Error("Unexpected extra params.");
+ return (0, _string.default)(formatter, tpl, (0, _options.merge)((0, _options.merge)(cachedOpts, (0, _options.validate)(args[0])), NO_PLACEHOLDER))();
+ } else if (Array.isArray(tpl)) {
+ let builder = templateAstCache.get(tpl);
+
+ if (!builder) {
+ builder = (0, _literal.default)(formatter, tpl, (0, _options.merge)(cachedOpts, NO_PLACEHOLDER));
+ templateAstCache.set(tpl, builder);
+ }
+
+ return builder(args)();
+ }
+
+ throw new Error(`Unexpected template param ${typeof tpl}`);
+ }
+ });
+}
+
+function extendedTrace(fn) {
+ let rootStack = "";
+
+ try {
+ throw new Error();
+ } catch (error) {
+ if (error.stack) {
+ rootStack = error.stack.split("\n").slice(3).join("\n");
+ }
+ }
+
+ return arg => {
+ try {
+ return fn(arg);
+ } catch (err) {
+ err.stack += `\n =============\n${rootStack}`;
+ throw err;
+ }
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/formatters.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/formatters.js
new file mode 100644
index 0000000000..ab9168b605
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/formatters.js
@@ -0,0 +1,71 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.statements = exports.statement = exports.smart = exports.program = exports.expression = void 0;
+
+var _t = require("@babel/types");
+
+const {
+ assertExpressionStatement
+} = _t;
+
+function makeStatementFormatter(fn) {
+ return {
+ code: str => `/* @babel/template */;\n${str}`,
+ validate: () => {},
+ unwrap: ast => {
+ return fn(ast.program.body.slice(1));
+ }
+ };
+}
+
+const smart = makeStatementFormatter(body => {
+ if (body.length > 1) {
+ return body;
+ } else {
+ return body[0];
+ }
+});
+exports.smart = smart;
+const statements = makeStatementFormatter(body => body);
+exports.statements = statements;
+const statement = makeStatementFormatter(body => {
+ if (body.length === 0) {
+ throw new Error("Found nothing to return.");
+ }
+
+ if (body.length > 1) {
+ throw new Error("Found multiple statements but wanted one");
+ }
+
+ return body[0];
+});
+exports.statement = statement;
+const expression = {
+ code: str => `(\n${str}\n)`,
+ validate: ast => {
+ if (ast.program.body.length > 1) {
+ throw new Error("Found multiple statements but wanted one");
+ }
+
+ if (expression.unwrap(ast).start === 0) {
+ throw new Error("Parse result included parens.");
+ }
+ },
+ unwrap: ({
+ program
+ }) => {
+ const [stmt] = program.body;
+ assertExpressionStatement(stmt);
+ return stmt.expression;
+ }
+};
+exports.expression = expression;
+const program = {
+ code: str => str,
+ validate: () => {},
+ unwrap: ast => ast.program
+};
+exports.program = program; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/index.js
new file mode 100644
index 0000000000..b75aacdcc2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/index.js
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.statements = exports.statement = exports.smart = exports.program = exports.expression = exports.default = void 0;
+
+var formatters = require("./formatters");
+
+var _builder = require("./builder");
+
+const smart = (0, _builder.default)(formatters.smart);
+exports.smart = smart;
+const statement = (0, _builder.default)(formatters.statement);
+exports.statement = statement;
+const statements = (0, _builder.default)(formatters.statements);
+exports.statements = statements;
+const expression = (0, _builder.default)(formatters.expression);
+exports.expression = expression;
+const program = (0, _builder.default)(formatters.program);
+exports.program = program;
+
+var _default = Object.assign(smart.bind(undefined), {
+ smart,
+ statement,
+ statements,
+ expression,
+ program,
+ ast: smart.ast
+});
+
+exports.default = _default; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/literal.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/literal.js
new file mode 100644
index 0000000000..fd194c6abb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/literal.js
@@ -0,0 +1,80 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = literalTemplate;
+
+var _options = require("./options");
+
+var _parse = require("./parse");
+
+var _populate = require("./populate");
+
+function literalTemplate(formatter, tpl, opts) {
+ const {
+ metadata,
+ names
+ } = buildLiteralData(formatter, tpl, opts);
+ return arg => {
+ const defaultReplacements = {};
+ arg.forEach((replacement, i) => {
+ defaultReplacements[names[i]] = replacement;
+ });
+ return arg => {
+ const replacements = (0, _options.normalizeReplacements)(arg);
+
+ if (replacements) {
+ Object.keys(replacements).forEach(key => {
+ if (Object.prototype.hasOwnProperty.call(defaultReplacements, key)) {
+ throw new Error("Unexpected replacement overlap.");
+ }
+ });
+ }
+
+ return formatter.unwrap((0, _populate.default)(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements));
+ };
+ };
+}
+
+function buildLiteralData(formatter, tpl, opts) {
+ let names;
+ let nameSet;
+ let metadata;
+ let prefix = "";
+
+ do {
+ prefix += "$";
+ const result = buildTemplateCode(tpl, prefix);
+ names = result.names;
+ nameSet = new Set(names);
+ metadata = (0, _parse.default)(formatter, formatter.code(result.code), {
+ parser: opts.parser,
+ placeholderWhitelist: new Set(result.names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])),
+ placeholderPattern: opts.placeholderPattern,
+ preserveComments: opts.preserveComments,
+ syntacticPlaceholders: opts.syntacticPlaceholders
+ });
+ } while (metadata.placeholders.some(placeholder => placeholder.isDuplicate && nameSet.has(placeholder.name)));
+
+ return {
+ metadata,
+ names
+ };
+}
+
+function buildTemplateCode(tpl, prefix) {
+ const names = [];
+ let code = tpl[0];
+
+ for (let i = 1; i < tpl.length; i++) {
+ const value = `${prefix}${i - 1}`;
+ names.push(value);
+ code += value + tpl[i];
+ }
+
+ return {
+ names,
+ code
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/options.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/options.js
new file mode 100644
index 0000000000..95c31e74b3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/options.js
@@ -0,0 +1,83 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.merge = merge;
+exports.normalizeReplacements = normalizeReplacements;
+exports.validate = validate;
+const _excluded = ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"];
+
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+
+function merge(a, b) {
+ const {
+ placeholderWhitelist = a.placeholderWhitelist,
+ placeholderPattern = a.placeholderPattern,
+ preserveComments = a.preserveComments,
+ syntacticPlaceholders = a.syntacticPlaceholders
+ } = b;
+ return {
+ parser: Object.assign({}, a.parser, b.parser),
+ placeholderWhitelist,
+ placeholderPattern,
+ preserveComments,
+ syntacticPlaceholders
+ };
+}
+
+function validate(opts) {
+ if (opts != null && typeof opts !== "object") {
+ throw new Error("Unknown template options.");
+ }
+
+ const _ref = opts || {},
+ {
+ placeholderWhitelist,
+ placeholderPattern,
+ preserveComments,
+ syntacticPlaceholders
+ } = _ref,
+ parser = _objectWithoutPropertiesLoose(_ref, _excluded);
+
+ if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) {
+ throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined");
+ }
+
+ if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) {
+ throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined");
+ }
+
+ if (preserveComments != null && typeof preserveComments !== "boolean") {
+ throw new Error("'.preserveComments' must be a boolean, null, or undefined");
+ }
+
+ if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") {
+ throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined");
+ }
+
+ if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) {
+ throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
+ }
+
+ return {
+ parser,
+ placeholderWhitelist: placeholderWhitelist || undefined,
+ placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern,
+ preserveComments: preserveComments == null ? undefined : preserveComments,
+ syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders
+ };
+}
+
+function normalizeReplacements(replacements) {
+ if (Array.isArray(replacements)) {
+ return replacements.reduce((acc, replacement, i) => {
+ acc["$" + i] = replacement;
+ return acc;
+ }, {});
+ } else if (typeof replacements === "object" || replacements == null) {
+ return replacements || undefined;
+ }
+
+ throw new Error("Template replacements must be an array, object, null, or undefined");
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/parse.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/parse.js
new file mode 100644
index 0000000000..0d42ed435b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/parse.js
@@ -0,0 +1,188 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = parseAndBuildMetadata;
+
+var _t = require("@babel/types");
+
+var _parser = require("@babel/parser");
+
+var _codeFrame = require("@babel/code-frame");
+
+const {
+ isCallExpression,
+ isExpressionStatement,
+ isFunction,
+ isIdentifier,
+ isJSXIdentifier,
+ isNewExpression,
+ isPlaceholder,
+ isStatement,
+ isStringLiteral,
+ removePropertiesDeep,
+ traverse
+} = _t;
+const PATTERN = /^[_$A-Z0-9]+$/;
+
+function parseAndBuildMetadata(formatter, code, opts) {
+ const {
+ placeholderWhitelist,
+ placeholderPattern,
+ preserveComments,
+ syntacticPlaceholders
+ } = opts;
+ const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);
+ removePropertiesDeep(ast, {
+ preserveComments
+ });
+ formatter.validate(ast);
+ const syntactic = {
+ placeholders: [],
+ placeholderNames: new Set()
+ };
+ const legacy = {
+ placeholders: [],
+ placeholderNames: new Set()
+ };
+ const isLegacyRef = {
+ value: undefined
+ };
+ traverse(ast, placeholderVisitorHandler, {
+ syntactic,
+ legacy,
+ isLegacyRef,
+ placeholderWhitelist,
+ placeholderPattern,
+ syntacticPlaceholders
+ });
+ return Object.assign({
+ ast
+ }, isLegacyRef.value ? legacy : syntactic);
+}
+
+function placeholderVisitorHandler(node, ancestors, state) {
+ var _state$placeholderWhi;
+
+ let name;
+
+ if (isPlaceholder(node)) {
+ if (state.syntacticPlaceholders === false) {
+ throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false.");
+ } else {
+ name = node.name.name;
+ state.isLegacyRef.value = false;
+ }
+ } else if (state.isLegacyRef.value === false || state.syntacticPlaceholders) {
+ return;
+ } else if (isIdentifier(node) || isJSXIdentifier(node)) {
+ name = node.name;
+ state.isLegacyRef.value = true;
+ } else if (isStringLiteral(node)) {
+ name = node.value;
+ state.isLegacyRef.value = true;
+ } else {
+ return;
+ }
+
+ if (!state.isLegacyRef.value && (state.placeholderPattern != null || state.placeholderWhitelist != null)) {
+ throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
+ }
+
+ if (state.isLegacyRef.value && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) {
+ return;
+ }
+
+ ancestors = ancestors.slice();
+ const {
+ node: parent,
+ key
+ } = ancestors[ancestors.length - 1];
+ let type;
+
+ if (isStringLiteral(node) || isPlaceholder(node, {
+ expectedNode: "StringLiteral"
+ })) {
+ type = "string";
+ } else if (isNewExpression(parent) && key === "arguments" || isCallExpression(parent) && key === "arguments" || isFunction(parent) && key === "params") {
+ type = "param";
+ } else if (isExpressionStatement(parent) && !isPlaceholder(node)) {
+ type = "statement";
+ ancestors = ancestors.slice(0, -1);
+ } else if (isStatement(node) && isPlaceholder(node)) {
+ type = "statement";
+ } else {
+ type = "other";
+ }
+
+ const {
+ placeholders,
+ placeholderNames
+ } = state.isLegacyRef.value ? state.legacy : state.syntactic;
+ placeholders.push({
+ name,
+ type,
+ resolve: ast => resolveAncestors(ast, ancestors),
+ isDuplicate: placeholderNames.has(name)
+ });
+ placeholderNames.add(name);
+}
+
+function resolveAncestors(ast, ancestors) {
+ let parent = ast;
+
+ for (let i = 0; i < ancestors.length - 1; i++) {
+ const {
+ key,
+ index
+ } = ancestors[i];
+
+ if (index === undefined) {
+ parent = parent[key];
+ } else {
+ parent = parent[key][index];
+ }
+ }
+
+ const {
+ key,
+ index
+ } = ancestors[ancestors.length - 1];
+ return {
+ parent,
+ key,
+ index
+ };
+}
+
+function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {
+ const plugins = (parserOpts.plugins || []).slice();
+
+ if (syntacticPlaceholders !== false) {
+ plugins.push("placeholders");
+ }
+
+ parserOpts = Object.assign({
+ allowReturnOutsideFunction: true,
+ allowSuperOutsideMethod: true,
+ sourceType: "module"
+ }, parserOpts, {
+ plugins
+ });
+
+ try {
+ return (0, _parser.parse)(code, parserOpts);
+ } catch (err) {
+ const loc = err.loc;
+
+ if (loc) {
+ err.message += "\n" + (0, _codeFrame.codeFrameColumns)(code, {
+ start: loc
+ });
+ err.code = "BABEL_TEMPLATE_PARSE_ERROR";
+ }
+
+ throw err;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/populate.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/populate.js
new file mode 100644
index 0000000000..b9125564b7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/populate.js
@@ -0,0 +1,135 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = populatePlaceholders;
+
+var _t = require("@babel/types");
+
+const {
+ blockStatement,
+ cloneNode,
+ emptyStatement,
+ expressionStatement,
+ identifier,
+ isStatement,
+ isStringLiteral,
+ stringLiteral,
+ validate
+} = _t;
+
+function populatePlaceholders(metadata, replacements) {
+ const ast = cloneNode(metadata.ast);
+
+ if (replacements) {
+ metadata.placeholders.forEach(placeholder => {
+ if (!Object.prototype.hasOwnProperty.call(replacements, placeholder.name)) {
+ const placeholderName = placeholder.name;
+ throw new Error(`Error: No substitution given for "${placeholderName}". If this is not meant to be a
+ placeholder you may want to consider passing one of the following options to @babel/template:
+ - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])}
+ - { placeholderPattern: /^${placeholderName}$/ }`);
+ }
+ });
+ Object.keys(replacements).forEach(key => {
+ if (!metadata.placeholderNames.has(key)) {
+ throw new Error(`Unknown substitution "${key}" given`);
+ }
+ });
+ }
+
+ metadata.placeholders.slice().reverse().forEach(placeholder => {
+ try {
+ applyReplacement(placeholder, ast, replacements && replacements[placeholder.name] || null);
+ } catch (e) {
+ e.message = `@babel/template placeholder "${placeholder.name}": ${e.message}`;
+ throw e;
+ }
+ });
+ return ast;
+}
+
+function applyReplacement(placeholder, ast, replacement) {
+ if (placeholder.isDuplicate) {
+ if (Array.isArray(replacement)) {
+ replacement = replacement.map(node => cloneNode(node));
+ } else if (typeof replacement === "object") {
+ replacement = cloneNode(replacement);
+ }
+ }
+
+ const {
+ parent,
+ key,
+ index
+ } = placeholder.resolve(ast);
+
+ if (placeholder.type === "string") {
+ if (typeof replacement === "string") {
+ replacement = stringLiteral(replacement);
+ }
+
+ if (!replacement || !isStringLiteral(replacement)) {
+ throw new Error("Expected string substitution");
+ }
+ } else if (placeholder.type === "statement") {
+ if (index === undefined) {
+ if (!replacement) {
+ replacement = emptyStatement();
+ } else if (Array.isArray(replacement)) {
+ replacement = blockStatement(replacement);
+ } else if (typeof replacement === "string") {
+ replacement = expressionStatement(identifier(replacement));
+ } else if (!isStatement(replacement)) {
+ replacement = expressionStatement(replacement);
+ }
+ } else {
+ if (replacement && !Array.isArray(replacement)) {
+ if (typeof replacement === "string") {
+ replacement = identifier(replacement);
+ }
+
+ if (!isStatement(replacement)) {
+ replacement = expressionStatement(replacement);
+ }
+ }
+ }
+ } else if (placeholder.type === "param") {
+ if (typeof replacement === "string") {
+ replacement = identifier(replacement);
+ }
+
+ if (index === undefined) throw new Error("Assertion failure.");
+ } else {
+ if (typeof replacement === "string") {
+ replacement = identifier(replacement);
+ }
+
+ if (Array.isArray(replacement)) {
+ throw new Error("Cannot replace single expression with an array.");
+ }
+ }
+
+ if (index === undefined) {
+ validate(parent, key, replacement);
+ parent[key] = replacement;
+ } else {
+ const items = parent[key].slice();
+
+ if (placeholder.type === "statement" || placeholder.type === "param") {
+ if (replacement == null) {
+ items.splice(index, 1);
+ } else if (Array.isArray(replacement)) {
+ items.splice(index, 1, ...replacement);
+ } else {
+ items[index] = replacement;
+ }
+ } else {
+ items[index] = replacement;
+ }
+
+ validate(parent, key, items);
+ parent[key] = items;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/lib/string.js b/tools/node_modules/eslint/node_modules/@babel/template/lib/string.js
new file mode 100644
index 0000000000..fa8aade531
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/lib/string.js
@@ -0,0 +1,22 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = stringTemplate;
+
+var _options = require("./options");
+
+var _parse = require("./parse");
+
+var _populate = require("./populate");
+
+function stringTemplate(formatter, code, opts) {
+ code = formatter.code(code);
+ let metadata;
+ return arg => {
+ const replacements = (0, _options.normalizeReplacements)(arg);
+ if (!metadata) metadata = (0, _parse.default)(formatter, code, opts);
+ return formatter.unwrap((0, _populate.default)(metadata, replacements));
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/template/package.json b/tools/node_modules/eslint/node_modules/@babel/template/package.json
new file mode 100644
index 0000000000..08182fd4b4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/template/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@babel/template",
+ "version": "7.16.0",
+ "description": "Generate an AST from a string template.",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-template",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20template%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-template"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "@babel/types": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/LICENSE b/tools/node_modules/eslint/node_modules/@babel/traverse/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/README.md b/tools/node_modules/eslint/node_modules/@babel/traverse/README.md
new file mode 100644
index 0000000000..e478f16fb1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/README.md
@@ -0,0 +1,19 @@
+# @babel/traverse
+
+> The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes
+
+See our website [@babel/traverse](https://babeljs.io/docs/en/babel-traverse) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/traverse
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/traverse --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/cache.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/cache.js
new file mode 100644
index 0000000000..89f200777b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/cache.js
@@ -0,0 +1,26 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.clear = clear;
+exports.clearPath = clearPath;
+exports.clearScope = clearScope;
+exports.scope = exports.path = void 0;
+let path = new WeakMap();
+exports.path = path;
+let scope = new WeakMap();
+exports.scope = scope;
+
+function clear() {
+ clearPath();
+ clearScope();
+}
+
+function clearPath() {
+ exports.path = path = new WeakMap();
+}
+
+function clearScope() {
+ exports.scope = scope = new WeakMap();
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js
new file mode 100644
index 0000000000..25e2e0a750
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/context.js
@@ -0,0 +1,137 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _path = require("./path");
+
+var _t = require("@babel/types");
+
+const {
+ VISITOR_KEYS
+} = _t;
+
+class TraversalContext {
+ constructor(scope, opts, state, parentPath) {
+ this.queue = null;
+ this.priorityQueue = null;
+ this.parentPath = parentPath;
+ this.scope = scope;
+ this.state = state;
+ this.opts = opts;
+ }
+
+ shouldVisit(node) {
+ const opts = this.opts;
+ if (opts.enter || opts.exit) return true;
+ if (opts[node.type]) return true;
+ const keys = VISITOR_KEYS[node.type];
+ if (!(keys != null && keys.length)) return false;
+
+ for (const key of keys) {
+ if (node[key]) return true;
+ }
+
+ return false;
+ }
+
+ create(node, obj, key, listKey) {
+ return _path.default.get({
+ parentPath: this.parentPath,
+ parent: node,
+ container: obj,
+ key: key,
+ listKey
+ });
+ }
+
+ maybeQueue(path, notPriority) {
+ if (this.queue) {
+ if (notPriority) {
+ this.queue.push(path);
+ } else {
+ this.priorityQueue.push(path);
+ }
+ }
+ }
+
+ visitMultiple(container, parent, listKey) {
+ if (container.length === 0) return false;
+ const queue = [];
+
+ for (let key = 0; key < container.length; key++) {
+ const node = container[key];
+
+ if (node && this.shouldVisit(node)) {
+ queue.push(this.create(parent, container, key, listKey));
+ }
+ }
+
+ return this.visitQueue(queue);
+ }
+
+ visitSingle(node, key) {
+ if (this.shouldVisit(node[key])) {
+ return this.visitQueue([this.create(node, node, key)]);
+ } else {
+ return false;
+ }
+ }
+
+ visitQueue(queue) {
+ this.queue = queue;
+ this.priorityQueue = [];
+ const visited = new WeakSet();
+ let stop = false;
+
+ for (const path of queue) {
+ path.resync();
+
+ if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== this) {
+ path.pushContext(this);
+ }
+
+ if (path.key === null) continue;
+ const {
+ node
+ } = path;
+ if (visited.has(node)) continue;
+ if (node) visited.add(node);
+
+ if (path.visit()) {
+ stop = true;
+ break;
+ }
+
+ if (this.priorityQueue.length) {
+ stop = this.visitQueue(this.priorityQueue);
+ this.priorityQueue = [];
+ this.queue = queue;
+ if (stop) break;
+ }
+ }
+
+ for (const path of queue) {
+ path.popContext();
+ }
+
+ this.queue = null;
+ return stop;
+ }
+
+ visit(node, key) {
+ const nodes = node[key];
+ if (!nodes) return false;
+
+ if (Array.isArray(nodes)) {
+ return this.visitMultiple(nodes, node, key);
+ } else {
+ return this.visitSingle(node, key);
+ }
+ }
+
+}
+
+exports.default = TraversalContext; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/hub.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/hub.js
new file mode 100644
index 0000000000..fe139d2a8f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/hub.js
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+class Hub {
+ getCode() {}
+
+ getScope() {}
+
+ addHelper() {
+ throw new Error("Helpers are not supported by the default hub.");
+ }
+
+ buildError(node, msg, Error = TypeError) {
+ return new Error(msg);
+ }
+
+}
+
+exports.default = Hub; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js
new file mode 100644
index 0000000000..701023b3a3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js
@@ -0,0 +1,118 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "Hub", {
+ enumerable: true,
+ get: function () {
+ return _hub.default;
+ }
+});
+Object.defineProperty(exports, "NodePath", {
+ enumerable: true,
+ get: function () {
+ return _path.default;
+ }
+});
+Object.defineProperty(exports, "Scope", {
+ enumerable: true,
+ get: function () {
+ return _scope.default;
+ }
+});
+exports.visitors = exports.default = void 0;
+
+var _context = require("./context");
+
+var visitors = require("./visitors");
+
+exports.visitors = visitors;
+
+var _t = require("@babel/types");
+
+var cache = require("./cache");
+
+var _path = require("./path");
+
+var _scope = require("./scope");
+
+var _hub = require("./hub");
+
+const {
+ VISITOR_KEYS,
+ removeProperties,
+ traverseFast
+} = _t;
+
+function traverse(parent, opts = {}, scope, state, parentPath) {
+ if (!parent) return;
+
+ if (!opts.noScope && !scope) {
+ if (parent.type !== "Program" && parent.type !== "File") {
+ throw new Error("You must pass a scope and parentPath unless traversing a Program/File. " + `Instead of that you tried to traverse a ${parent.type} node without ` + "passing scope and parentPath.");
+ }
+ }
+
+ if (!VISITOR_KEYS[parent.type]) {
+ return;
+ }
+
+ visitors.explode(opts);
+ traverse.node(parent, opts, scope, state, parentPath);
+}
+
+var _default = traverse;
+exports.default = _default;
+traverse.visitors = visitors;
+traverse.verify = visitors.verify;
+traverse.explode = visitors.explode;
+
+traverse.cheap = function (node, enter) {
+ return traverseFast(node, enter);
+};
+
+traverse.node = function (node, opts, scope, state, parentPath, skipKeys) {
+ const keys = VISITOR_KEYS[node.type];
+ if (!keys) return;
+ const context = new _context.default(scope, opts, state, parentPath);
+
+ for (const key of keys) {
+ if (skipKeys && skipKeys[key]) continue;
+ if (context.visit(node, key)) return;
+ }
+};
+
+traverse.clearNode = function (node, opts) {
+ removeProperties(node, opts);
+ cache.path.delete(node);
+};
+
+traverse.removeProperties = function (tree, opts) {
+ traverseFast(tree, traverse.clearNode, opts);
+ return tree;
+};
+
+function hasDenylistedType(path, state) {
+ if (path.node.type === state.type) {
+ state.has = true;
+ path.stop();
+ }
+}
+
+traverse.hasType = function (tree, type, denylistTypes) {
+ if (denylistTypes != null && denylistTypes.includes(tree.type)) return false;
+ if (tree.type === type) return true;
+ const state = {
+ has: false,
+ type: type
+ };
+ traverse(tree, {
+ noScope: true,
+ denylist: denylistTypes,
+ enter: hasDenylistedType
+ }, null, state);
+ return state.has;
+};
+
+traverse.cache = cache; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/ancestry.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/ancestry.js
new file mode 100644
index 0000000000..23f6720372
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/ancestry.js
@@ -0,0 +1,180 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.find = find;
+exports.findParent = findParent;
+exports.getAncestry = getAncestry;
+exports.getDeepestCommonAncestorFrom = getDeepestCommonAncestorFrom;
+exports.getEarliestCommonAncestorFrom = getEarliestCommonAncestorFrom;
+exports.getFunctionParent = getFunctionParent;
+exports.getStatementParent = getStatementParent;
+exports.inType = inType;
+exports.isAncestor = isAncestor;
+exports.isDescendant = isDescendant;
+
+var _t = require("@babel/types");
+
+var _index = require("./index");
+
+const {
+ VISITOR_KEYS
+} = _t;
+
+function findParent(callback) {
+ let path = this;
+
+ while (path = path.parentPath) {
+ if (callback(path)) return path;
+ }
+
+ return null;
+}
+
+function find(callback) {
+ let path = this;
+
+ do {
+ if (callback(path)) return path;
+ } while (path = path.parentPath);
+
+ return null;
+}
+
+function getFunctionParent() {
+ return this.findParent(p => p.isFunction());
+}
+
+function getStatementParent() {
+ let path = this;
+
+ do {
+ if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
+ break;
+ } else {
+ path = path.parentPath;
+ }
+ } while (path);
+
+ if (path && (path.isProgram() || path.isFile())) {
+ throw new Error("File/Program node, we can't possibly find a statement parent to this");
+ }
+
+ return path;
+}
+
+function getEarliestCommonAncestorFrom(paths) {
+ return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) {
+ let earliest;
+ const keys = VISITOR_KEYS[deepest.type];
+
+ for (const ancestry of ancestries) {
+ const path = ancestry[i + 1];
+
+ if (!earliest) {
+ earliest = path;
+ continue;
+ }
+
+ if (path.listKey && earliest.listKey === path.listKey) {
+ if (path.key < earliest.key) {
+ earliest = path;
+ continue;
+ }
+ }
+
+ const earliestKeyIndex = keys.indexOf(earliest.parentKey);
+ const currentKeyIndex = keys.indexOf(path.parentKey);
+
+ if (earliestKeyIndex > currentKeyIndex) {
+ earliest = path;
+ }
+ }
+
+ return earliest;
+ });
+}
+
+function getDeepestCommonAncestorFrom(paths, filter) {
+ if (!paths.length) {
+ return this;
+ }
+
+ if (paths.length === 1) {
+ return paths[0];
+ }
+
+ let minDepth = Infinity;
+ let lastCommonIndex, lastCommon;
+ const ancestries = paths.map(path => {
+ const ancestry = [];
+
+ do {
+ ancestry.unshift(path);
+ } while ((path = path.parentPath) && path !== this);
+
+ if (ancestry.length < minDepth) {
+ minDepth = ancestry.length;
+ }
+
+ return ancestry;
+ });
+ const first = ancestries[0];
+
+ depthLoop: for (let i = 0; i < minDepth; i++) {
+ const shouldMatch = first[i];
+
+ for (const ancestry of ancestries) {
+ if (ancestry[i] !== shouldMatch) {
+ break depthLoop;
+ }
+ }
+
+ lastCommonIndex = i;
+ lastCommon = shouldMatch;
+ }
+
+ if (lastCommon) {
+ if (filter) {
+ return filter(lastCommon, lastCommonIndex, ancestries);
+ } else {
+ return lastCommon;
+ }
+ } else {
+ throw new Error("Couldn't find intersection");
+ }
+}
+
+function getAncestry() {
+ let path = this;
+ const paths = [];
+
+ do {
+ paths.push(path);
+ } while (path = path.parentPath);
+
+ return paths;
+}
+
+function isAncestor(maybeDescendant) {
+ return maybeDescendant.isDescendant(this);
+}
+
+function isDescendant(maybeAncestor) {
+ return !!this.findParent(parent => parent === maybeAncestor);
+}
+
+function inType(...candidateTypes) {
+ let path = this;
+
+ while (path) {
+ for (const type of candidateTypes) {
+ if (path.node.type === type) return true;
+ }
+
+ path = path.parentPath;
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/comments.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/comments.js
new file mode 100644
index 0000000000..d42bd29dd8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/comments.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.addComment = addComment;
+exports.addComments = addComments;
+exports.shareCommentsWithSiblings = shareCommentsWithSiblings;
+
+var _t = require("@babel/types");
+
+const {
+ addComment: _addComment,
+ addComments: _addComments
+} = _t;
+
+function shareCommentsWithSiblings() {
+ if (typeof this.key === "string") return;
+ const node = this.node;
+ if (!node) return;
+ const trailing = node.trailingComments;
+ const leading = node.leadingComments;
+ if (!trailing && !leading) return;
+ const prev = this.getSibling(this.key - 1);
+ const next = this.getSibling(this.key + 1);
+ const hasPrev = Boolean(prev.node);
+ const hasNext = Boolean(next.node);
+
+ if (hasPrev && !hasNext) {
+ prev.addComments("trailing", trailing);
+ } else if (hasNext && !hasPrev) {
+ next.addComments("leading", leading);
+ }
+}
+
+function addComment(type, content, line) {
+ _addComment(this.node, type, content, line);
+}
+
+function addComments(type, comments) {
+ _addComments(this.node, type, comments);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js
new file mode 100644
index 0000000000..923caa4f6d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js
@@ -0,0 +1,265 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._call = _call;
+exports._getQueueContexts = _getQueueContexts;
+exports._resyncKey = _resyncKey;
+exports._resyncList = _resyncList;
+exports._resyncParent = _resyncParent;
+exports._resyncRemoved = _resyncRemoved;
+exports.call = call;
+exports.isBlacklisted = exports.isDenylisted = isDenylisted;
+exports.popContext = popContext;
+exports.pushContext = pushContext;
+exports.requeue = requeue;
+exports.resync = resync;
+exports.setContext = setContext;
+exports.setKey = setKey;
+exports.setScope = setScope;
+exports.setup = setup;
+exports.skip = skip;
+exports.skipKey = skipKey;
+exports.stop = stop;
+exports.visit = visit;
+
+var _index = require("../index");
+
+var _index2 = require("./index");
+
+function call(key) {
+ const opts = this.opts;
+ this.debug(key);
+
+ if (this.node) {
+ if (this._call(opts[key])) return true;
+ }
+
+ if (this.node) {
+ return this._call(opts[this.node.type] && opts[this.node.type][key]);
+ }
+
+ return false;
+}
+
+function _call(fns) {
+ if (!fns) return false;
+
+ for (const fn of fns) {
+ if (!fn) continue;
+ const node = this.node;
+ if (!node) return true;
+ const ret = fn.call(this.state, this, this.state);
+
+ if (ret && typeof ret === "object" && typeof ret.then === "function") {
+ throw new Error(`You appear to be using a plugin with an async traversal visitor, ` + `which your current version of Babel does not support. ` + `If you're using a published plugin, you may need to upgrade ` + `your @babel/core version.`);
+ }
+
+ if (ret) {
+ throw new Error(`Unexpected return value from visitor method ${fn}`);
+ }
+
+ if (this.node !== node) return true;
+ if (this._traverseFlags > 0) return true;
+ }
+
+ return false;
+}
+
+function isDenylisted() {
+ var _this$opts$denylist;
+
+ const denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist;
+ return denylist && denylist.indexOf(this.node.type) > -1;
+}
+
+function restoreContext(path, context) {
+ if (path.context !== context) {
+ path.context = context;
+ path.state = context.state;
+ path.opts = context.opts;
+ }
+}
+
+function visit() {
+ if (!this.node) {
+ return false;
+ }
+
+ if (this.isDenylisted()) {
+ return false;
+ }
+
+ if (this.opts.shouldSkip && this.opts.shouldSkip(this)) {
+ return false;
+ }
+
+ const currentContext = this.context;
+
+ if (this.shouldSkip || this.call("enter")) {
+ this.debug("Skip...");
+ return this.shouldStop;
+ }
+
+ restoreContext(this, currentContext);
+ this.debug("Recursing into...");
+
+ _index.default.node(this.node, this.opts, this.scope, this.state, this, this.skipKeys);
+
+ restoreContext(this, currentContext);
+ this.call("exit");
+ return this.shouldStop;
+}
+
+function skip() {
+ this.shouldSkip = true;
+}
+
+function skipKey(key) {
+ if (this.skipKeys == null) {
+ this.skipKeys = {};
+ }
+
+ this.skipKeys[key] = true;
+}
+
+function stop() {
+ this._traverseFlags |= _index2.SHOULD_SKIP | _index2.SHOULD_STOP;
+}
+
+function setScope() {
+ if (this.opts && this.opts.noScope) return;
+ let path = this.parentPath;
+ if (this.key === "key" && path.isMethod()) path = path.parentPath;
+ let target;
+
+ while (path && !target) {
+ if (path.opts && path.opts.noScope) return;
+ target = path.scope;
+ path = path.parentPath;
+ }
+
+ this.scope = this.getScope(target);
+ if (this.scope) this.scope.init();
+}
+
+function setContext(context) {
+ if (this.skipKeys != null) {
+ this.skipKeys = {};
+ }
+
+ this._traverseFlags = 0;
+
+ if (context) {
+ this.context = context;
+ this.state = context.state;
+ this.opts = context.opts;
+ }
+
+ this.setScope();
+ return this;
+}
+
+function resync() {
+ if (this.removed) return;
+
+ this._resyncParent();
+
+ this._resyncList();
+
+ this._resyncKey();
+}
+
+function _resyncParent() {
+ if (this.parentPath) {
+ this.parent = this.parentPath.node;
+ }
+}
+
+function _resyncKey() {
+ if (!this.container) return;
+ if (this.node === this.container[this.key]) return;
+
+ if (Array.isArray(this.container)) {
+ for (let i = 0; i < this.container.length; i++) {
+ if (this.container[i] === this.node) {
+ return this.setKey(i);
+ }
+ }
+ } else {
+ for (const key of Object.keys(this.container)) {
+ if (this.container[key] === this.node) {
+ return this.setKey(key);
+ }
+ }
+ }
+
+ this.key = null;
+}
+
+function _resyncList() {
+ if (!this.parent || !this.inList) return;
+ const newContainer = this.parent[this.listKey];
+ if (this.container === newContainer) return;
+ this.container = newContainer || null;
+}
+
+function _resyncRemoved() {
+ if (this.key == null || !this.container || this.container[this.key] !== this.node) {
+ this._markRemoved();
+ }
+}
+
+function popContext() {
+ this.contexts.pop();
+
+ if (this.contexts.length > 0) {
+ this.setContext(this.contexts[this.contexts.length - 1]);
+ } else {
+ this.setContext(undefined);
+ }
+}
+
+function pushContext(context) {
+ this.contexts.push(context);
+ this.setContext(context);
+}
+
+function setup(parentPath, container, listKey, key) {
+ this.listKey = listKey;
+ this.container = container;
+ this.parentPath = parentPath || this.parentPath;
+ this.setKey(key);
+}
+
+function setKey(key) {
+ var _this$node;
+
+ this.key = key;
+ this.node = this.container[this.key];
+ this.type = (_this$node = this.node) == null ? void 0 : _this$node.type;
+}
+
+function requeue(pathToQueue = this) {
+ if (pathToQueue.removed) return;
+ ;
+ const contexts = this.contexts;
+
+ for (const context of contexts) {
+ context.maybeQueue(pathToQueue);
+ }
+}
+
+function _getQueueContexts() {
+ let path = this;
+ let contexts = this.contexts;
+
+ while (!contexts.length) {
+ path = path.parentPath;
+ if (!path) break;
+ contexts = path.contexts;
+ }
+
+ return contexts;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js
new file mode 100644
index 0000000000..40f8d6a730
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/conversion.js
@@ -0,0 +1,495 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.arrowFunctionToExpression = arrowFunctionToExpression;
+exports.arrowFunctionToShadowed = arrowFunctionToShadowed;
+exports.ensureBlock = ensureBlock;
+exports.toComputedKey = toComputedKey;
+exports.unwrapFunctionEnvironment = unwrapFunctionEnvironment;
+
+var _t = require("@babel/types");
+
+var _helperFunctionName = require("@babel/helper-function-name");
+
+const {
+ arrowFunctionExpression,
+ assignmentExpression,
+ binaryExpression,
+ blockStatement,
+ callExpression,
+ conditionalExpression,
+ expressionStatement,
+ identifier,
+ isIdentifier,
+ jsxIdentifier,
+ memberExpression,
+ metaProperty,
+ numericLiteral,
+ objectExpression,
+ restElement,
+ returnStatement,
+ sequenceExpression,
+ spreadElement,
+ stringLiteral,
+ super: _super,
+ thisExpression,
+ toExpression,
+ unaryExpression
+} = _t;
+
+function toComputedKey() {
+ let key;
+
+ if (this.isMemberExpression()) {
+ key = this.node.property;
+ } else if (this.isProperty() || this.isMethod()) {
+ key = this.node.key;
+ } else {
+ throw new ReferenceError("todo");
+ }
+
+ if (!this.node.computed) {
+ if (isIdentifier(key)) key = stringLiteral(key.name);
+ }
+
+ return key;
+}
+
+function ensureBlock() {
+ const body = this.get("body");
+ const bodyNode = body.node;
+
+ if (Array.isArray(body)) {
+ throw new Error("Can't convert array path to a block statement");
+ }
+
+ if (!bodyNode) {
+ throw new Error("Can't convert node without a body");
+ }
+
+ if (body.isBlockStatement()) {
+ return bodyNode;
+ }
+
+ const statements = [];
+ let stringPath = "body";
+ let key;
+ let listKey;
+
+ if (body.isStatement()) {
+ listKey = "body";
+ key = 0;
+ statements.push(body.node);
+ } else {
+ stringPath += ".body.0";
+
+ if (this.isFunction()) {
+ key = "argument";
+ statements.push(returnStatement(body.node));
+ } else {
+ key = "expression";
+ statements.push(expressionStatement(body.node));
+ }
+ }
+
+ this.node.body = blockStatement(statements);
+ const parentPath = this.get(stringPath);
+ body.setup(parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key);
+ return this.node;
+}
+
+function arrowFunctionToShadowed() {
+ if (!this.isArrowFunctionExpression()) return;
+ this.arrowFunctionToExpression();
+}
+
+function unwrapFunctionEnvironment() {
+ if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) {
+ throw this.buildCodeFrameError("Can only unwrap the environment of a function.");
+ }
+
+ hoistFunctionEnvironment(this);
+}
+
+function arrowFunctionToExpression({
+ allowInsertArrow = true,
+ specCompliant = false,
+ noNewArrows = !specCompliant
+} = {}) {
+ if (!this.isArrowFunctionExpression()) {
+ throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression.");
+ }
+
+ const {
+ thisBinding,
+ fnPath: fn
+ } = hoistFunctionEnvironment(this, noNewArrows, allowInsertArrow);
+ fn.ensureBlock();
+ fn.node.type = "FunctionExpression";
+
+ if (!noNewArrows) {
+ const checkBinding = thisBinding ? null : fn.scope.generateUidIdentifier("arrowCheckId");
+
+ if (checkBinding) {
+ fn.parentPath.scope.push({
+ id: checkBinding,
+ init: objectExpression([])
+ });
+ }
+
+ fn.get("body").unshiftContainer("body", expressionStatement(callExpression(this.hub.addHelper("newArrowCheck"), [thisExpression(), checkBinding ? identifier(checkBinding.name) : identifier(thisBinding)])));
+ fn.replaceWith(callExpression(memberExpression((0, _helperFunctionName.default)(this, true) || fn.node, identifier("bind")), [checkBinding ? identifier(checkBinding.name) : thisExpression()]));
+ }
+}
+
+function hoistFunctionEnvironment(fnPath, noNewArrows = true, allowInsertArrow = true) {
+ let arrowParent;
+ let thisEnvFn = fnPath.findParent(p => {
+ if (p.isArrowFunctionExpression()) {
+ var _arrowParent;
+
+ (_arrowParent = arrowParent) != null ? _arrowParent : arrowParent = p;
+ return false;
+ }
+
+ return p.isFunction() || p.isProgram() || p.isClassProperty({
+ static: false
+ }) || p.isClassPrivateProperty({
+ static: false
+ });
+ });
+ const inConstructor = thisEnvFn.isClassMethod({
+ kind: "constructor"
+ });
+
+ if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {
+ if (arrowParent) {
+ thisEnvFn = arrowParent;
+ } else if (allowInsertArrow) {
+ fnPath.replaceWith(callExpression(arrowFunctionExpression([], toExpression(fnPath.node)), []));
+ thisEnvFn = fnPath.get("callee");
+ fnPath = thisEnvFn.get("body");
+ } else {
+ throw fnPath.buildCodeFrameError("Unable to transform arrow inside class property");
+ }
+ }
+
+ const {
+ thisPaths,
+ argumentsPaths,
+ newTargetPaths,
+ superProps,
+ superCalls
+ } = getScopeInformation(fnPath);
+
+ if (inConstructor && superCalls.length > 0) {
+ if (!allowInsertArrow) {
+ throw superCalls[0].buildCodeFrameError("Unable to handle nested super() usage in arrow");
+ }
+
+ const allSuperCalls = [];
+ thisEnvFn.traverse({
+ Function(child) {
+ if (child.isArrowFunctionExpression()) return;
+ child.skip();
+ },
+
+ ClassProperty(child) {
+ child.skip();
+ },
+
+ CallExpression(child) {
+ if (!child.get("callee").isSuper()) return;
+ allSuperCalls.push(child);
+ }
+
+ });
+ const superBinding = getSuperBinding(thisEnvFn);
+ allSuperCalls.forEach(superCall => {
+ const callee = identifier(superBinding);
+ callee.loc = superCall.node.callee.loc;
+ superCall.get("callee").replaceWith(callee);
+ });
+ }
+
+ if (argumentsPaths.length > 0) {
+ const argumentsBinding = getBinding(thisEnvFn, "arguments", () => {
+ const args = () => identifier("arguments");
+
+ if (thisEnvFn.scope.path.isProgram()) {
+ return conditionalExpression(binaryExpression("===", unaryExpression("typeof", args()), stringLiteral("undefined")), thisEnvFn.scope.buildUndefinedNode(), args());
+ } else {
+ return args();
+ }
+ });
+ argumentsPaths.forEach(argumentsChild => {
+ const argsRef = identifier(argumentsBinding);
+ argsRef.loc = argumentsChild.node.loc;
+ argumentsChild.replaceWith(argsRef);
+ });
+ }
+
+ if (newTargetPaths.length > 0) {
+ const newTargetBinding = getBinding(thisEnvFn, "newtarget", () => metaProperty(identifier("new"), identifier("target")));
+ newTargetPaths.forEach(targetChild => {
+ const targetRef = identifier(newTargetBinding);
+ targetRef.loc = targetChild.node.loc;
+ targetChild.replaceWith(targetRef);
+ });
+ }
+
+ if (superProps.length > 0) {
+ if (!allowInsertArrow) {
+ throw superProps[0].buildCodeFrameError("Unable to handle nested super.prop usage");
+ }
+
+ const flatSuperProps = superProps.reduce((acc, superProp) => acc.concat(standardizeSuperProperty(superProp)), []);
+ flatSuperProps.forEach(superProp => {
+ const key = superProp.node.computed ? "" : superProp.get("property").node.name;
+ const isAssignment = superProp.parentPath.isAssignmentExpression({
+ left: superProp.node
+ });
+ const isCall = superProp.parentPath.isCallExpression({
+ callee: superProp.node
+ });
+ const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);
+ const args = [];
+
+ if (superProp.node.computed) {
+ args.push(superProp.get("property").node);
+ }
+
+ if (isAssignment) {
+ const value = superProp.parentPath.node.right;
+ args.push(value);
+ }
+
+ const call = callExpression(identifier(superBinding), args);
+
+ if (isCall) {
+ superProp.parentPath.unshiftContainer("arguments", thisExpression());
+ superProp.replaceWith(memberExpression(call, identifier("call")));
+ thisPaths.push(superProp.parentPath.get("arguments.0"));
+ } else if (isAssignment) {
+ superProp.parentPath.replaceWith(call);
+ } else {
+ superProp.replaceWith(call);
+ }
+ });
+ }
+
+ let thisBinding;
+
+ if (thisPaths.length > 0 || !noNewArrows) {
+ thisBinding = getThisBinding(thisEnvFn, inConstructor);
+
+ if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) {
+ thisPaths.forEach(thisChild => {
+ const thisRef = thisChild.isJSX() ? jsxIdentifier(thisBinding) : identifier(thisBinding);
+ thisRef.loc = thisChild.node.loc;
+ thisChild.replaceWith(thisRef);
+ });
+ if (!noNewArrows) thisBinding = null;
+ }
+ }
+
+ return {
+ thisBinding,
+ fnPath
+ };
+}
+
+function standardizeSuperProperty(superProp) {
+ if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== "=") {
+ const assignmentPath = superProp.parentPath;
+ const op = assignmentPath.node.operator.slice(0, -1);
+ const value = assignmentPath.node.right;
+ assignmentPath.node.operator = "=";
+
+ if (superProp.node.computed) {
+ const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp");
+ assignmentPath.get("left").replaceWith(memberExpression(superProp.node.object, assignmentExpression("=", tmp, superProp.node.property), true));
+ assignmentPath.get("right").replaceWith(binaryExpression(op, memberExpression(superProp.node.object, identifier(tmp.name), true), value));
+ } else {
+ assignmentPath.get("left").replaceWith(memberExpression(superProp.node.object, superProp.node.property));
+ assignmentPath.get("right").replaceWith(binaryExpression(op, memberExpression(superProp.node.object, identifier(superProp.node.property.name)), value));
+ }
+
+ return [assignmentPath.get("left"), assignmentPath.get("right").get("left")];
+ } else if (superProp.parentPath.isUpdateExpression()) {
+ const updateExpr = superProp.parentPath;
+ const tmp = superProp.scope.generateDeclaredUidIdentifier("tmp");
+ const computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier("prop") : null;
+ const parts = [assignmentExpression("=", tmp, memberExpression(superProp.node.object, computedKey ? assignmentExpression("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), assignmentExpression("=", memberExpression(superProp.node.object, computedKey ? identifier(computedKey.name) : superProp.node.property, superProp.node.computed), binaryExpression("+", identifier(tmp.name), numericLiteral(1)))];
+
+ if (!superProp.parentPath.node.prefix) {
+ parts.push(identifier(tmp.name));
+ }
+
+ updateExpr.replaceWith(sequenceExpression(parts));
+ const left = updateExpr.get("expressions.0.right");
+ const right = updateExpr.get("expressions.1.left");
+ return [left, right];
+ }
+
+ return [superProp];
+}
+
+function hasSuperClass(thisEnvFn) {
+ return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass;
+}
+
+function getThisBinding(thisEnvFn, inConstructor) {
+ return getBinding(thisEnvFn, "this", thisBinding => {
+ if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression();
+ const supers = new WeakSet();
+ thisEnvFn.traverse({
+ Function(child) {
+ if (child.isArrowFunctionExpression()) return;
+ child.skip();
+ },
+
+ ClassProperty(child) {
+ child.skip();
+ },
+
+ CallExpression(child) {
+ if (!child.get("callee").isSuper()) return;
+ if (supers.has(child.node)) return;
+ supers.add(child.node);
+ child.replaceWithMultiple([child.node, assignmentExpression("=", identifier(thisBinding), identifier("this"))]);
+ }
+
+ });
+ });
+}
+
+function getSuperBinding(thisEnvFn) {
+ return getBinding(thisEnvFn, "supercall", () => {
+ const argsBinding = thisEnvFn.scope.generateUidIdentifier("args");
+ return arrowFunctionExpression([restElement(argsBinding)], callExpression(_super(), [spreadElement(identifier(argsBinding.name))]));
+ });
+}
+
+function getSuperPropBinding(thisEnvFn, isAssignment, propName) {
+ const op = isAssignment ? "set" : "get";
+ return getBinding(thisEnvFn, `superprop_${op}:${propName || ""}`, () => {
+ const argsList = [];
+ let fnBody;
+
+ if (propName) {
+ fnBody = memberExpression(_super(), identifier(propName));
+ } else {
+ const method = thisEnvFn.scope.generateUidIdentifier("prop");
+ argsList.unshift(method);
+ fnBody = memberExpression(_super(), identifier(method.name), true);
+ }
+
+ if (isAssignment) {
+ const valueIdent = thisEnvFn.scope.generateUidIdentifier("value");
+ argsList.push(valueIdent);
+ fnBody = assignmentExpression("=", fnBody, identifier(valueIdent.name));
+ }
+
+ return arrowFunctionExpression(argsList, fnBody);
+ });
+}
+
+function getBinding(thisEnvFn, key, init) {
+ const cacheKey = "binding:" + key;
+ let data = thisEnvFn.getData(cacheKey);
+
+ if (!data) {
+ const id = thisEnvFn.scope.generateUidIdentifier(key);
+ data = id.name;
+ thisEnvFn.setData(cacheKey, data);
+ thisEnvFn.scope.push({
+ id: id,
+ init: init(data)
+ });
+ }
+
+ return data;
+}
+
+function getScopeInformation(fnPath) {
+ const thisPaths = [];
+ const argumentsPaths = [];
+ const newTargetPaths = [];
+ const superProps = [];
+ const superCalls = [];
+ fnPath.traverse({
+ ClassProperty(child) {
+ child.skip();
+ },
+
+ Function(child) {
+ if (child.isArrowFunctionExpression()) return;
+ child.skip();
+ },
+
+ ThisExpression(child) {
+ thisPaths.push(child);
+ },
+
+ JSXIdentifier(child) {
+ if (child.node.name !== "this") return;
+
+ if (!child.parentPath.isJSXMemberExpression({
+ object: child.node
+ }) && !child.parentPath.isJSXOpeningElement({
+ name: child.node
+ })) {
+ return;
+ }
+
+ thisPaths.push(child);
+ },
+
+ CallExpression(child) {
+ if (child.get("callee").isSuper()) superCalls.push(child);
+ },
+
+ MemberExpression(child) {
+ if (child.get("object").isSuper()) superProps.push(child);
+ },
+
+ ReferencedIdentifier(child) {
+ if (child.node.name !== "arguments") return;
+ let curr = child.scope;
+
+ do {
+ if (curr.hasOwnBinding("arguments")) {
+ curr.rename("arguments");
+ return;
+ }
+
+ if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {
+ break;
+ }
+ } while (curr = curr.parent);
+
+ argumentsPaths.push(child);
+ },
+
+ MetaProperty(child) {
+ if (!child.get("meta").isIdentifier({
+ name: "new"
+ })) return;
+ if (!child.get("property").isIdentifier({
+ name: "target"
+ })) return;
+ newTargetPaths.push(child);
+ }
+
+ });
+ return {
+ thisPaths,
+ argumentsPaths,
+ newTargetPaths,
+ superProps,
+ superCalls
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js
new file mode 100644
index 0000000000..abbbe050f5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js
@@ -0,0 +1,401 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.evaluate = evaluate;
+exports.evaluateTruthy = evaluateTruthy;
+const VALID_CALLEES = ["String", "Number", "Math"];
+const INVALID_METHODS = ["random"];
+
+function evaluateTruthy() {
+ const res = this.evaluate();
+ if (res.confident) return !!res.value;
+}
+
+function deopt(path, state) {
+ if (!state.confident) return;
+ state.deoptPath = path;
+ state.confident = false;
+}
+
+function evaluateCached(path, state) {
+ const {
+ node
+ } = path;
+ const {
+ seen
+ } = state;
+
+ if (seen.has(node)) {
+ const existing = seen.get(node);
+
+ if (existing.resolved) {
+ return existing.value;
+ } else {
+ deopt(path, state);
+ return;
+ }
+ } else {
+ const item = {
+ resolved: false
+ };
+ seen.set(node, item);
+
+ const val = _evaluate(path, state);
+
+ if (state.confident) {
+ item.resolved = true;
+ item.value = val;
+ }
+
+ return val;
+ }
+}
+
+function _evaluate(path, state) {
+ if (!state.confident) return;
+
+ if (path.isSequenceExpression()) {
+ const exprs = path.get("expressions");
+ return evaluateCached(exprs[exprs.length - 1], state);
+ }
+
+ if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) {
+ return path.node.value;
+ }
+
+ if (path.isNullLiteral()) {
+ return null;
+ }
+
+ if (path.isTemplateLiteral()) {
+ return evaluateQuasis(path, path.node.quasis, state);
+ }
+
+ if (path.isTaggedTemplateExpression() && path.get("tag").isMemberExpression()) {
+ const object = path.get("tag.object");
+ const {
+ node: {
+ name
+ }
+ } = object;
+ const property = path.get("tag.property");
+
+ if (object.isIdentifier() && name === "String" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === "raw") {
+ return evaluateQuasis(path, path.node.quasi.quasis, state, true);
+ }
+ }
+
+ if (path.isConditionalExpression()) {
+ const testResult = evaluateCached(path.get("test"), state);
+ if (!state.confident) return;
+
+ if (testResult) {
+ return evaluateCached(path.get("consequent"), state);
+ } else {
+ return evaluateCached(path.get("alternate"), state);
+ }
+ }
+
+ if (path.isExpressionWrapper()) {
+ return evaluateCached(path.get("expression"), state);
+ }
+
+ if (path.isMemberExpression() && !path.parentPath.isCallExpression({
+ callee: path.node
+ })) {
+ const property = path.get("property");
+ const object = path.get("object");
+
+ if (object.isLiteral() && property.isIdentifier()) {
+ const value = object.node.value;
+ const type = typeof value;
+
+ if (type === "number" || type === "string") {
+ return value[property.node.name];
+ }
+ }
+ }
+
+ if (path.isReferencedIdentifier()) {
+ const binding = path.scope.getBinding(path.node.name);
+
+ if (binding && binding.constantViolations.length > 0) {
+ return deopt(binding.path, state);
+ }
+
+ if (binding && path.node.start < binding.path.node.end) {
+ return deopt(binding.path, state);
+ }
+
+ if (binding != null && binding.hasValue) {
+ return binding.value;
+ } else {
+ if (path.node.name === "undefined") {
+ return binding ? deopt(binding.path, state) : undefined;
+ } else if (path.node.name === "Infinity") {
+ return binding ? deopt(binding.path, state) : Infinity;
+ } else if (path.node.name === "NaN") {
+ return binding ? deopt(binding.path, state) : NaN;
+ }
+
+ const resolved = path.resolve();
+
+ if (resolved === path) {
+ return deopt(path, state);
+ } else {
+ return evaluateCached(resolved, state);
+ }
+ }
+ }
+
+ if (path.isUnaryExpression({
+ prefix: true
+ })) {
+ if (path.node.operator === "void") {
+ return undefined;
+ }
+
+ const argument = path.get("argument");
+
+ if (path.node.operator === "typeof" && (argument.isFunction() || argument.isClass())) {
+ return "function";
+ }
+
+ const arg = evaluateCached(argument, state);
+ if (!state.confident) return;
+
+ switch (path.node.operator) {
+ case "!":
+ return !arg;
+
+ case "+":
+ return +arg;
+
+ case "-":
+ return -arg;
+
+ case "~":
+ return ~arg;
+
+ case "typeof":
+ return typeof arg;
+ }
+ }
+
+ if (path.isArrayExpression()) {
+ const arr = [];
+ const elems = path.get("elements");
+
+ for (const elem of elems) {
+ const elemValue = elem.evaluate();
+
+ if (elemValue.confident) {
+ arr.push(elemValue.value);
+ } else {
+ return deopt(elemValue.deopt, state);
+ }
+ }
+
+ return arr;
+ }
+
+ if (path.isObjectExpression()) {
+ const obj = {};
+ const props = path.get("properties");
+
+ for (const prop of props) {
+ if (prop.isObjectMethod() || prop.isSpreadElement()) {
+ return deopt(prop, state);
+ }
+
+ const keyPath = prop.get("key");
+ let key = keyPath;
+
+ if (prop.node.computed) {
+ key = key.evaluate();
+
+ if (!key.confident) {
+ return deopt(key.deopt, state);
+ }
+
+ key = key.value;
+ } else if (key.isIdentifier()) {
+ key = key.node.name;
+ } else {
+ key = key.node.value;
+ }
+
+ const valuePath = prop.get("value");
+ let value = valuePath.evaluate();
+
+ if (!value.confident) {
+ return deopt(value.deopt, state);
+ }
+
+ value = value.value;
+ obj[key] = value;
+ }
+
+ return obj;
+ }
+
+ if (path.isLogicalExpression()) {
+ const wasConfident = state.confident;
+ const left = evaluateCached(path.get("left"), state);
+ const leftConfident = state.confident;
+ state.confident = wasConfident;
+ const right = evaluateCached(path.get("right"), state);
+ const rightConfident = state.confident;
+
+ switch (path.node.operator) {
+ case "||":
+ state.confident = leftConfident && (!!left || rightConfident);
+ if (!state.confident) return;
+ return left || right;
+
+ case "&&":
+ state.confident = leftConfident && (!left || rightConfident);
+ if (!state.confident) return;
+ return left && right;
+ }
+ }
+
+ if (path.isBinaryExpression()) {
+ const left = evaluateCached(path.get("left"), state);
+ if (!state.confident) return;
+ const right = evaluateCached(path.get("right"), state);
+ if (!state.confident) return;
+
+ switch (path.node.operator) {
+ case "-":
+ return left - right;
+
+ case "+":
+ return left + right;
+
+ case "/":
+ return left / right;
+
+ case "*":
+ return left * right;
+
+ case "%":
+ return left % right;
+
+ case "**":
+ return Math.pow(left, right);
+
+ case "<":
+ return left < right;
+
+ case ">":
+ return left > right;
+
+ case "<=":
+ return left <= right;
+
+ case ">=":
+ return left >= right;
+
+ case "==":
+ return left == right;
+
+ case "!=":
+ return left != right;
+
+ case "===":
+ return left === right;
+
+ case "!==":
+ return left !== right;
+
+ case "|":
+ return left | right;
+
+ case "&":
+ return left & right;
+
+ case "^":
+ return left ^ right;
+
+ case "<<":
+ return left << right;
+
+ case ">>":
+ return left >> right;
+
+ case ">>>":
+ return left >>> right;
+ }
+ }
+
+ if (path.isCallExpression()) {
+ const callee = path.get("callee");
+ let context;
+ let func;
+
+ if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && VALID_CALLEES.indexOf(callee.node.name) >= 0) {
+ func = global[callee.node.name];
+ }
+
+ if (callee.isMemberExpression()) {
+ const object = callee.get("object");
+ const property = callee.get("property");
+
+ if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0 && INVALID_METHODS.indexOf(property.node.name) < 0) {
+ context = global[object.node.name];
+ func = context[property.node.name];
+ }
+
+ if (object.isLiteral() && property.isIdentifier()) {
+ const type = typeof object.node.value;
+
+ if (type === "string" || type === "number") {
+ context = object.node.value;
+ func = context[property.node.name];
+ }
+ }
+ }
+
+ if (func) {
+ const args = path.get("arguments").map(arg => evaluateCached(arg, state));
+ if (!state.confident) return;
+ return func.apply(context, args);
+ }
+ }
+
+ deopt(path, state);
+}
+
+function evaluateQuasis(path, quasis, state, raw = false) {
+ let str = "";
+ let i = 0;
+ const exprs = path.get("expressions");
+
+ for (const elem of quasis) {
+ if (!state.confident) break;
+ str += raw ? elem.value.raw : elem.value.cooked;
+ const expr = exprs[i++];
+ if (expr) str += String(evaluateCached(expr, state));
+ }
+
+ if (!state.confident) return;
+ return str;
+}
+
+function evaluate() {
+ const state = {
+ confident: true,
+ deoptPath: null,
+ seen: new Map()
+ };
+ let value = evaluateCached(this, state);
+ if (!state.confident) value = undefined;
+ return {
+ confident: state.confident,
+ deopt: state.deoptPath,
+ value: value
+ };
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/family.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/family.js
new file mode 100644
index 0000000000..6a6554bcd8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/family.js
@@ -0,0 +1,407 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._getKey = _getKey;
+exports._getPattern = _getPattern;
+exports.get = get;
+exports.getAllNextSiblings = getAllNextSiblings;
+exports.getAllPrevSiblings = getAllPrevSiblings;
+exports.getBindingIdentifierPaths = getBindingIdentifierPaths;
+exports.getBindingIdentifiers = getBindingIdentifiers;
+exports.getCompletionRecords = getCompletionRecords;
+exports.getNextSibling = getNextSibling;
+exports.getOpposite = getOpposite;
+exports.getOuterBindingIdentifierPaths = getOuterBindingIdentifierPaths;
+exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
+exports.getPrevSibling = getPrevSibling;
+exports.getSibling = getSibling;
+
+var _index = require("./index");
+
+var _t = require("@babel/types");
+
+const {
+ getBindingIdentifiers: _getBindingIdentifiers,
+ getOuterBindingIdentifiers: _getOuterBindingIdentifiers,
+ isDeclaration,
+ numericLiteral,
+ unaryExpression
+} = _t;
+const NORMAL_COMPLETION = 0;
+const BREAK_COMPLETION = 1;
+
+function NormalCompletion(path) {
+ return {
+ type: NORMAL_COMPLETION,
+ path
+ };
+}
+
+function BreakCompletion(path) {
+ return {
+ type: BREAK_COMPLETION,
+ path
+ };
+}
+
+function getOpposite() {
+ if (this.key === "left") {
+ return this.getSibling("right");
+ } else if (this.key === "right") {
+ return this.getSibling("left");
+ }
+
+ return null;
+}
+
+function addCompletionRecords(path, records, context) {
+ if (path) {
+ records.push(..._getCompletionRecords(path, context));
+ }
+
+ return records;
+}
+
+function completionRecordForSwitch(cases, records, context) {
+ let lastNormalCompletions = [];
+
+ for (let i = 0; i < cases.length; i++) {
+ const casePath = cases[i];
+
+ const caseCompletions = _getCompletionRecords(casePath, context);
+
+ const normalCompletions = [];
+ const breakCompletions = [];
+
+ for (const c of caseCompletions) {
+ if (c.type === NORMAL_COMPLETION) {
+ normalCompletions.push(c);
+ }
+
+ if (c.type === BREAK_COMPLETION) {
+ breakCompletions.push(c);
+ }
+ }
+
+ if (normalCompletions.length) {
+ lastNormalCompletions = normalCompletions;
+ }
+
+ records.push(...breakCompletions);
+ }
+
+ records.push(...lastNormalCompletions);
+ return records;
+}
+
+function normalCompletionToBreak(completions) {
+ completions.forEach(c => {
+ c.type = BREAK_COMPLETION;
+ });
+}
+
+function replaceBreakStatementInBreakCompletion(completions, reachable) {
+ completions.forEach(c => {
+ if (c.path.isBreakStatement({
+ label: null
+ })) {
+ if (reachable) {
+ c.path.replaceWith(unaryExpression("void", numericLiteral(0)));
+ } else {
+ c.path.remove();
+ }
+ }
+ });
+}
+
+function getStatementListCompletion(paths, context) {
+ const completions = [];
+
+ if (context.canHaveBreak) {
+ let lastNormalCompletions = [];
+
+ for (let i = 0; i < paths.length; i++) {
+ const path = paths[i];
+ const newContext = Object.assign({}, context, {
+ inCaseClause: false
+ });
+
+ if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) {
+ newContext.shouldPopulateBreak = true;
+ } else {
+ newContext.shouldPopulateBreak = false;
+ }
+
+ const statementCompletions = _getCompletionRecords(path, newContext);
+
+ if (statementCompletions.length > 0 && statementCompletions.every(c => c.type === BREAK_COMPLETION)) {
+ if (lastNormalCompletions.length > 0 && statementCompletions.every(c => c.path.isBreakStatement({
+ label: null
+ }))) {
+ normalCompletionToBreak(lastNormalCompletions);
+ completions.push(...lastNormalCompletions);
+
+ if (lastNormalCompletions.some(c => c.path.isDeclaration())) {
+ completions.push(...statementCompletions);
+ replaceBreakStatementInBreakCompletion(statementCompletions, true);
+ }
+
+ replaceBreakStatementInBreakCompletion(statementCompletions, false);
+ } else {
+ completions.push(...statementCompletions);
+
+ if (!context.shouldPopulateBreak) {
+ replaceBreakStatementInBreakCompletion(statementCompletions, true);
+ }
+ }
+
+ break;
+ }
+
+ if (i === paths.length - 1) {
+ completions.push(...statementCompletions);
+ } else {
+ lastNormalCompletions = [];
+
+ for (let i = 0; i < statementCompletions.length; i++) {
+ const c = statementCompletions[i];
+
+ if (c.type === BREAK_COMPLETION) {
+ completions.push(c);
+ }
+
+ if (c.type === NORMAL_COMPLETION) {
+ lastNormalCompletions.push(c);
+ }
+ }
+ }
+ }
+ } else if (paths.length) {
+ for (let i = paths.length - 1; i >= 0; i--) {
+ const pathCompletions = _getCompletionRecords(paths[i], context);
+
+ if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration()) {
+ completions.push(...pathCompletions);
+ break;
+ }
+ }
+ }
+
+ return completions;
+}
+
+function _getCompletionRecords(path, context) {
+ let records = [];
+
+ if (path.isIfStatement()) {
+ records = addCompletionRecords(path.get("consequent"), records, context);
+ records = addCompletionRecords(path.get("alternate"), records, context);
+ } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) {
+ return addCompletionRecords(path.get("body"), records, context);
+ } else if (path.isProgram() || path.isBlockStatement()) {
+ return getStatementListCompletion(path.get("body"), context);
+ } else if (path.isFunction()) {
+ return _getCompletionRecords(path.get("body"), context);
+ } else if (path.isTryStatement()) {
+ records = addCompletionRecords(path.get("block"), records, context);
+ records = addCompletionRecords(path.get("handler"), records, context);
+ } else if (path.isCatchClause()) {
+ return addCompletionRecords(path.get("body"), records, context);
+ } else if (path.isSwitchStatement()) {
+ return completionRecordForSwitch(path.get("cases"), records, context);
+ } else if (path.isSwitchCase()) {
+ return getStatementListCompletion(path.get("consequent"), {
+ canHaveBreak: true,
+ shouldPopulateBreak: false,
+ inCaseClause: true
+ });
+ } else if (path.isBreakStatement()) {
+ records.push(BreakCompletion(path));
+ } else {
+ records.push(NormalCompletion(path));
+ }
+
+ return records;
+}
+
+function getCompletionRecords() {
+ const records = _getCompletionRecords(this, {
+ canHaveBreak: false,
+ shouldPopulateBreak: false,
+ inCaseClause: false
+ });
+
+ return records.map(r => r.path);
+}
+
+function getSibling(key) {
+ return _index.default.get({
+ parentPath: this.parentPath,
+ parent: this.parent,
+ container: this.container,
+ listKey: this.listKey,
+ key: key
+ }).setContext(this.context);
+}
+
+function getPrevSibling() {
+ return this.getSibling(this.key - 1);
+}
+
+function getNextSibling() {
+ return this.getSibling(this.key + 1);
+}
+
+function getAllNextSiblings() {
+ let _key = this.key;
+ let sibling = this.getSibling(++_key);
+ const siblings = [];
+
+ while (sibling.node) {
+ siblings.push(sibling);
+ sibling = this.getSibling(++_key);
+ }
+
+ return siblings;
+}
+
+function getAllPrevSiblings() {
+ let _key = this.key;
+ let sibling = this.getSibling(--_key);
+ const siblings = [];
+
+ while (sibling.node) {
+ siblings.push(sibling);
+ sibling = this.getSibling(--_key);
+ }
+
+ return siblings;
+}
+
+function get(key, context = true) {
+ if (context === true) context = this.context;
+ const parts = key.split(".");
+
+ if (parts.length === 1) {
+ return this._getKey(key, context);
+ } else {
+ return this._getPattern(parts, context);
+ }
+}
+
+function _getKey(key, context) {
+ const node = this.node;
+ const container = node[key];
+
+ if (Array.isArray(container)) {
+ return container.map((_, i) => {
+ return _index.default.get({
+ listKey: key,
+ parentPath: this,
+ parent: node,
+ container: container,
+ key: i
+ }).setContext(context);
+ });
+ } else {
+ return _index.default.get({
+ parentPath: this,
+ parent: node,
+ container: node,
+ key: key
+ }).setContext(context);
+ }
+}
+
+function _getPattern(parts, context) {
+ let path = this;
+
+ for (const part of parts) {
+ if (part === ".") {
+ path = path.parentPath;
+ } else {
+ if (Array.isArray(path)) {
+ path = path[part];
+ } else {
+ path = path.get(part, context);
+ }
+ }
+ }
+
+ return path;
+}
+
+function getBindingIdentifiers(duplicates) {
+ return _getBindingIdentifiers(this.node, duplicates);
+}
+
+function getOuterBindingIdentifiers(duplicates) {
+ return _getOuterBindingIdentifiers(this.node, duplicates);
+}
+
+function getBindingIdentifierPaths(duplicates = false, outerOnly = false) {
+ const path = this;
+ const search = [path];
+ const ids = Object.create(null);
+
+ while (search.length) {
+ const id = search.shift();
+ if (!id) continue;
+ if (!id.node) continue;
+ const keys = _getBindingIdentifiers.keys[id.node.type];
+
+ if (id.isIdentifier()) {
+ if (duplicates) {
+ const _ids = ids[id.node.name] = ids[id.node.name] || [];
+
+ _ids.push(id);
+ } else {
+ ids[id.node.name] = id;
+ }
+
+ continue;
+ }
+
+ if (id.isExportDeclaration()) {
+ const declaration = id.get("declaration");
+
+ if (isDeclaration(declaration)) {
+ search.push(declaration);
+ }
+
+ continue;
+ }
+
+ if (outerOnly) {
+ if (id.isFunctionDeclaration()) {
+ search.push(id.get("id"));
+ continue;
+ }
+
+ if (id.isFunctionExpression()) {
+ continue;
+ }
+ }
+
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const child = id.get(key);
+
+ if (Array.isArray(child)) {
+ search.push(...child);
+ } else if (child.node) {
+ search.push(child);
+ }
+ }
+ }
+ }
+
+ return ids;
+}
+
+function getOuterBindingIdentifierPaths(duplicates) {
+ return this.getBindingIdentifierPaths(duplicates, true);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/asserts.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/asserts.js
new file mode 100644
index 0000000000..bee8a438ea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/asserts.js
@@ -0,0 +1,5 @@
+"use strict";
+
+var t = require("@babel/types");
+
+var _index = require("../index"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/validators.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/validators.js
new file mode 100644
index 0000000000..bee8a438ea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/validators.js
@@ -0,0 +1,5 @@
+"use strict";
+
+var t = require("@babel/types");
+
+var _index = require("../index"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/virtual-types.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/virtual-types.js
new file mode 100644
index 0000000000..bf37ed9378
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/generated/virtual-types.js
@@ -0,0 +1,3 @@
+"use strict";
+
+var t = require("@babel/types"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js
new file mode 100644
index 0000000000..9ab7288621
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/index.js
@@ -0,0 +1,253 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = exports.SHOULD_STOP = exports.SHOULD_SKIP = exports.REMOVED = void 0;
+
+var virtualTypes = require("./lib/virtual-types");
+
+var _debug = require("debug");
+
+var _index = require("../index");
+
+var _scope = require("../scope");
+
+var _t = require("@babel/types");
+
+var t = _t;
+
+var _cache = require("../cache");
+
+var _generator = require("@babel/generator");
+
+var NodePath_ancestry = require("./ancestry");
+
+var NodePath_inference = require("./inference");
+
+var NodePath_replacement = require("./replacement");
+
+var NodePath_evaluation = require("./evaluation");
+
+var NodePath_conversion = require("./conversion");
+
+var NodePath_introspection = require("./introspection");
+
+var NodePath_context = require("./context");
+
+var NodePath_removal = require("./removal");
+
+var NodePath_modification = require("./modification");
+
+var NodePath_family = require("./family");
+
+var NodePath_comments = require("./comments");
+
+const {
+ validate
+} = _t;
+
+const debug = _debug("babel");
+
+const REMOVED = 1 << 0;
+exports.REMOVED = REMOVED;
+const SHOULD_STOP = 1 << 1;
+exports.SHOULD_STOP = SHOULD_STOP;
+const SHOULD_SKIP = 1 << 2;
+exports.SHOULD_SKIP = SHOULD_SKIP;
+
+class NodePath {
+ constructor(hub, parent) {
+ this.contexts = [];
+ this.state = null;
+ this.opts = null;
+ this._traverseFlags = 0;
+ this.skipKeys = null;
+ this.parentPath = null;
+ this.container = null;
+ this.listKey = null;
+ this.key = null;
+ this.node = null;
+ this.type = null;
+ this.parent = parent;
+ this.hub = hub;
+ this.data = null;
+ this.context = null;
+ this.scope = null;
+ }
+
+ static get({
+ hub,
+ parentPath,
+ parent,
+ container,
+ listKey,
+ key
+ }) {
+ if (!hub && parentPath) {
+ hub = parentPath.hub;
+ }
+
+ if (!parent) {
+ throw new Error("To get a node path the parent needs to exist");
+ }
+
+ const targetNode = container[key];
+
+ let paths = _cache.path.get(parent);
+
+ if (!paths) {
+ paths = new Map();
+
+ _cache.path.set(parent, paths);
+ }
+
+ let path = paths.get(targetNode);
+
+ if (!path) {
+ path = new NodePath(hub, parent);
+ if (targetNode) paths.set(targetNode, path);
+ }
+
+ path.setup(parentPath, container, listKey, key);
+ return path;
+ }
+
+ getScope(scope) {
+ return this.isScope() ? new _scope.default(this) : scope;
+ }
+
+ setData(key, val) {
+ if (this.data == null) {
+ this.data = Object.create(null);
+ }
+
+ return this.data[key] = val;
+ }
+
+ getData(key, def) {
+ if (this.data == null) {
+ this.data = Object.create(null);
+ }
+
+ let val = this.data[key];
+ if (val === undefined && def !== undefined) val = this.data[key] = def;
+ return val;
+ }
+
+ buildCodeFrameError(msg, Error = SyntaxError) {
+ return this.hub.buildError(this.node, msg, Error);
+ }
+
+ traverse(visitor, state) {
+ (0, _index.default)(this.node, visitor, this.scope, state, this);
+ }
+
+ set(key, node) {
+ validate(this.node, key, node);
+ this.node[key] = node;
+ }
+
+ getPathLocation() {
+ const parts = [];
+ let path = this;
+
+ do {
+ let key = path.key;
+ if (path.inList) key = `${path.listKey}[${key}]`;
+ parts.unshift(key);
+ } while (path = path.parentPath);
+
+ return parts.join(".");
+ }
+
+ debug(message) {
+ if (!debug.enabled) return;
+ debug(`${this.getPathLocation()} ${this.type}: ${message}`);
+ }
+
+ toString() {
+ return (0, _generator.default)(this.node).code;
+ }
+
+ get inList() {
+ return !!this.listKey;
+ }
+
+ set inList(inList) {
+ if (!inList) {
+ this.listKey = null;
+ }
+ }
+
+ get parentKey() {
+ return this.listKey || this.key;
+ }
+
+ get shouldSkip() {
+ return !!(this._traverseFlags & SHOULD_SKIP);
+ }
+
+ set shouldSkip(v) {
+ if (v) {
+ this._traverseFlags |= SHOULD_SKIP;
+ } else {
+ this._traverseFlags &= ~SHOULD_SKIP;
+ }
+ }
+
+ get shouldStop() {
+ return !!(this._traverseFlags & SHOULD_STOP);
+ }
+
+ set shouldStop(v) {
+ if (v) {
+ this._traverseFlags |= SHOULD_STOP;
+ } else {
+ this._traverseFlags &= ~SHOULD_STOP;
+ }
+ }
+
+ get removed() {
+ return !!(this._traverseFlags & REMOVED);
+ }
+
+ set removed(v) {
+ if (v) {
+ this._traverseFlags |= REMOVED;
+ } else {
+ this._traverseFlags &= ~REMOVED;
+ }
+ }
+
+}
+
+Object.assign(NodePath.prototype, NodePath_ancestry, NodePath_inference, NodePath_replacement, NodePath_evaluation, NodePath_conversion, NodePath_introspection, NodePath_context, NodePath_removal, NodePath_modification, NodePath_family, NodePath_comments);
+
+for (const type of t.TYPES) {
+ const typeKey = `is${type}`;
+ const fn = t[typeKey];
+
+ NodePath.prototype[typeKey] = function (opts) {
+ return fn(this.node, opts);
+ };
+
+ NodePath.prototype[`assert${type}`] = function (opts) {
+ if (!fn(this.node, opts)) {
+ throw new TypeError(`Expected node path of type ${type}`);
+ }
+ };
+}
+
+for (const type of Object.keys(virtualTypes)) {
+ if (type[0] === "_") continue;
+ if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type);
+ const virtualType = virtualTypes[type];
+
+ NodePath.prototype[`is${type}`] = function (opts) {
+ return virtualType.checkPath(this, opts);
+ };
+}
+
+var _default = NodePath;
+exports.default = _default; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js
new file mode 100644
index 0000000000..f7fef255a1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/index.js
@@ -0,0 +1,156 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._getTypeAnnotation = _getTypeAnnotation;
+exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches;
+exports.couldBeBaseType = couldBeBaseType;
+exports.getTypeAnnotation = getTypeAnnotation;
+exports.isBaseType = isBaseType;
+exports.isGenericType = isGenericType;
+
+var inferers = require("./inferers");
+
+var _t = require("@babel/types");
+
+const {
+ anyTypeAnnotation,
+ isAnyTypeAnnotation,
+ isBooleanTypeAnnotation,
+ isEmptyTypeAnnotation,
+ isFlowBaseAnnotation,
+ isGenericTypeAnnotation,
+ isIdentifier,
+ isMixedTypeAnnotation,
+ isNumberTypeAnnotation,
+ isStringTypeAnnotation,
+ isTypeAnnotation,
+ isUnionTypeAnnotation,
+ isVoidTypeAnnotation,
+ stringTypeAnnotation,
+ voidTypeAnnotation
+} = _t;
+
+function getTypeAnnotation() {
+ if (this.typeAnnotation) return this.typeAnnotation;
+ let type = this._getTypeAnnotation() || anyTypeAnnotation();
+ if (isTypeAnnotation(type)) type = type.typeAnnotation;
+ return this.typeAnnotation = type;
+}
+
+const typeAnnotationInferringNodes = new WeakSet();
+
+function _getTypeAnnotation() {
+ const node = this.node;
+
+ if (!node) {
+ if (this.key === "init" && this.parentPath.isVariableDeclarator()) {
+ const declar = this.parentPath.parentPath;
+ const declarParent = declar.parentPath;
+
+ if (declar.key === "left" && declarParent.isForInStatement()) {
+ return stringTypeAnnotation();
+ }
+
+ if (declar.key === "left" && declarParent.isForOfStatement()) {
+ return anyTypeAnnotation();
+ }
+
+ return voidTypeAnnotation();
+ } else {
+ return;
+ }
+ }
+
+ if (node.typeAnnotation) {
+ return node.typeAnnotation;
+ }
+
+ if (typeAnnotationInferringNodes.has(node)) {
+ return;
+ }
+
+ typeAnnotationInferringNodes.add(node);
+
+ try {
+ var _inferer;
+
+ let inferer = inferers[node.type];
+
+ if (inferer) {
+ return inferer.call(this, node);
+ }
+
+ inferer = inferers[this.parentPath.type];
+
+ if ((_inferer = inferer) != null && _inferer.validParent) {
+ return this.parentPath.getTypeAnnotation();
+ }
+ } finally {
+ typeAnnotationInferringNodes.delete(node);
+ }
+}
+
+function isBaseType(baseName, soft) {
+ return _isBaseType(baseName, this.getTypeAnnotation(), soft);
+}
+
+function _isBaseType(baseName, type, soft) {
+ if (baseName === "string") {
+ return isStringTypeAnnotation(type);
+ } else if (baseName === "number") {
+ return isNumberTypeAnnotation(type);
+ } else if (baseName === "boolean") {
+ return isBooleanTypeAnnotation(type);
+ } else if (baseName === "any") {
+ return isAnyTypeAnnotation(type);
+ } else if (baseName === "mixed") {
+ return isMixedTypeAnnotation(type);
+ } else if (baseName === "empty") {
+ return isEmptyTypeAnnotation(type);
+ } else if (baseName === "void") {
+ return isVoidTypeAnnotation(type);
+ } else {
+ if (soft) {
+ return false;
+ } else {
+ throw new Error(`Unknown base type ${baseName}`);
+ }
+ }
+}
+
+function couldBeBaseType(name) {
+ const type = this.getTypeAnnotation();
+ if (isAnyTypeAnnotation(type)) return true;
+
+ if (isUnionTypeAnnotation(type)) {
+ for (const type2 of type.types) {
+ if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
+ return true;
+ }
+ }
+
+ return false;
+ } else {
+ return _isBaseType(name, type, true);
+ }
+}
+
+function baseTypeStrictlyMatches(rightArg) {
+ const left = this.getTypeAnnotation();
+ const right = rightArg.getTypeAnnotation();
+
+ if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {
+ return right.type === left.type;
+ }
+
+ return false;
+}
+
+function isGenericType(genericName) {
+ const type = this.getTypeAnnotation();
+ return isGenericTypeAnnotation(type) && isIdentifier(type.id, {
+ name: genericName
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js
new file mode 100644
index 0000000000..c328dc150f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferer-reference.js
@@ -0,0 +1,206 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = _default;
+
+var _t = require("@babel/types");
+
+const {
+ BOOLEAN_NUMBER_BINARY_OPERATORS,
+ createFlowUnionType,
+ createTSUnionType,
+ createTypeAnnotationBasedOnTypeof,
+ createUnionTypeAnnotation,
+ isTSTypeAnnotation,
+ numberTypeAnnotation,
+ voidTypeAnnotation
+} = _t;
+
+function _default(node) {
+ if (!this.isReferenced()) return;
+ const binding = this.scope.getBinding(node.name);
+
+ if (binding) {
+ if (binding.identifier.typeAnnotation) {
+ return binding.identifier.typeAnnotation;
+ } else {
+ return getTypeAnnotationBindingConstantViolations(binding, this, node.name);
+ }
+ }
+
+ if (node.name === "undefined") {
+ return voidTypeAnnotation();
+ } else if (node.name === "NaN" || node.name === "Infinity") {
+ return numberTypeAnnotation();
+ } else if (node.name === "arguments") {}
+}
+
+function getTypeAnnotationBindingConstantViolations(binding, path, name) {
+ const types = [];
+ const functionConstantViolations = [];
+ let constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations);
+ const testType = getConditionalAnnotation(binding, path, name);
+
+ if (testType) {
+ const testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement);
+ constantViolations = constantViolations.filter(path => testConstantViolations.indexOf(path) < 0);
+ types.push(testType.typeAnnotation);
+ }
+
+ if (constantViolations.length) {
+ constantViolations.push(...functionConstantViolations);
+
+ for (const violation of constantViolations) {
+ types.push(violation.getTypeAnnotation());
+ }
+ }
+
+ if (!types.length) {
+ return;
+ }
+
+ if (isTSTypeAnnotation(types[0]) && createTSUnionType) {
+ return createTSUnionType(types);
+ }
+
+ if (createFlowUnionType) {
+ return createFlowUnionType(types);
+ }
+
+ return createUnionTypeAnnotation(types);
+}
+
+function getConstantViolationsBefore(binding, path, functions) {
+ const violations = binding.constantViolations.slice();
+ violations.unshift(binding.path);
+ return violations.filter(violation => {
+ violation = violation.resolve();
+
+ const status = violation._guessExecutionStatusRelativeTo(path);
+
+ if (functions && status === "unknown") functions.push(violation);
+ return status === "before";
+ });
+}
+
+function inferAnnotationFromBinaryExpression(name, path) {
+ const operator = path.node.operator;
+ const right = path.get("right").resolve();
+ const left = path.get("left").resolve();
+ let target;
+
+ if (left.isIdentifier({
+ name
+ })) {
+ target = right;
+ } else if (right.isIdentifier({
+ name
+ })) {
+ target = left;
+ }
+
+ if (target) {
+ if (operator === "===") {
+ return target.getTypeAnnotation();
+ }
+
+ if (BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
+ return numberTypeAnnotation();
+ }
+
+ return;
+ }
+
+ if (operator !== "===" && operator !== "==") return;
+ let typeofPath;
+ let typePath;
+
+ if (left.isUnaryExpression({
+ operator: "typeof"
+ })) {
+ typeofPath = left;
+ typePath = right;
+ } else if (right.isUnaryExpression({
+ operator: "typeof"
+ })) {
+ typeofPath = right;
+ typePath = left;
+ }
+
+ if (!typeofPath) return;
+ if (!typeofPath.get("argument").isIdentifier({
+ name
+ })) return;
+ typePath = typePath.resolve();
+ if (!typePath.isLiteral()) return;
+ const typeValue = typePath.node.value;
+ if (typeof typeValue !== "string") return;
+ return createTypeAnnotationBasedOnTypeof(typeValue);
+}
+
+function getParentConditionalPath(binding, path, name) {
+ let parentPath;
+
+ while (parentPath = path.parentPath) {
+ if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {
+ if (path.key === "test") {
+ return;
+ }
+
+ return parentPath;
+ }
+
+ if (parentPath.isFunction()) {
+ if (parentPath.parentPath.scope.getBinding(name) !== binding) return;
+ }
+
+ path = parentPath;
+ }
+}
+
+function getConditionalAnnotation(binding, path, name) {
+ const ifStatement = getParentConditionalPath(binding, path, name);
+ if (!ifStatement) return;
+ const test = ifStatement.get("test");
+ const paths = [test];
+ const types = [];
+
+ for (let i = 0; i < paths.length; i++) {
+ const path = paths[i];
+
+ if (path.isLogicalExpression()) {
+ if (path.node.operator === "&&") {
+ paths.push(path.get("left"));
+ paths.push(path.get("right"));
+ }
+ } else if (path.isBinaryExpression()) {
+ const type = inferAnnotationFromBinaryExpression(name, path);
+ if (type) types.push(type);
+ }
+ }
+
+ if (types.length) {
+ if (isTSTypeAnnotation(types[0]) && createTSUnionType) {
+ return {
+ typeAnnotation: createTSUnionType(types),
+ ifStatement
+ };
+ }
+
+ if (createFlowUnionType) {
+ return {
+ typeAnnotation: createFlowUnionType(types),
+ ifStatement
+ };
+ }
+
+ return {
+ typeAnnotation: createUnionTypeAnnotation(types),
+ ifStatement
+ };
+ }
+
+ return getConditionalAnnotation(ifStatement, name);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js
new file mode 100644
index 0000000000..68180ac548
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/inference/inferers.js
@@ -0,0 +1,261 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.ArrayExpression = ArrayExpression;
+exports.AssignmentExpression = AssignmentExpression;
+exports.BinaryExpression = BinaryExpression;
+exports.BooleanLiteral = BooleanLiteral;
+exports.CallExpression = CallExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.ClassDeclaration = exports.ClassExpression = exports.FunctionDeclaration = exports.ArrowFunctionExpression = exports.FunctionExpression = Func;
+Object.defineProperty(exports, "Identifier", {
+ enumerable: true,
+ get: function () {
+ return _infererReference.default;
+ }
+});
+exports.LogicalExpression = LogicalExpression;
+exports.NewExpression = NewExpression;
+exports.NullLiteral = NullLiteral;
+exports.NumericLiteral = NumericLiteral;
+exports.ObjectExpression = ObjectExpression;
+exports.ParenthesizedExpression = ParenthesizedExpression;
+exports.RegExpLiteral = RegExpLiteral;
+exports.RestElement = RestElement;
+exports.SequenceExpression = SequenceExpression;
+exports.StringLiteral = StringLiteral;
+exports.TaggedTemplateExpression = TaggedTemplateExpression;
+exports.TemplateLiteral = TemplateLiteral;
+exports.TypeCastExpression = TypeCastExpression;
+exports.UnaryExpression = UnaryExpression;
+exports.UpdateExpression = UpdateExpression;
+exports.VariableDeclarator = VariableDeclarator;
+
+var _t = require("@babel/types");
+
+var _infererReference = require("./inferer-reference");
+
+const {
+ BOOLEAN_BINARY_OPERATORS,
+ BOOLEAN_UNARY_OPERATORS,
+ NUMBER_BINARY_OPERATORS,
+ NUMBER_UNARY_OPERATORS,
+ STRING_UNARY_OPERATORS,
+ anyTypeAnnotation,
+ arrayTypeAnnotation,
+ booleanTypeAnnotation,
+ buildMatchMemberExpression,
+ createFlowUnionType,
+ createTSUnionType,
+ createUnionTypeAnnotation,
+ genericTypeAnnotation,
+ identifier,
+ isTSTypeAnnotation,
+ nullLiteralTypeAnnotation,
+ numberTypeAnnotation,
+ stringTypeAnnotation,
+ tupleTypeAnnotation,
+ unionTypeAnnotation,
+ voidTypeAnnotation
+} = _t;
+
+function VariableDeclarator() {
+ var _type;
+
+ const id = this.get("id");
+ if (!id.isIdentifier()) return;
+ const init = this.get("init");
+ let type = init.getTypeAnnotation();
+
+ if (((_type = type) == null ? void 0 : _type.type) === "AnyTypeAnnotation") {
+ if (init.isCallExpression() && init.get("callee").isIdentifier({
+ name: "Array"
+ }) && !init.scope.hasBinding("Array", true)) {
+ type = ArrayExpression();
+ }
+ }
+
+ return type;
+}
+
+function TypeCastExpression(node) {
+ return node.typeAnnotation;
+}
+
+TypeCastExpression.validParent = true;
+
+function NewExpression(node) {
+ if (this.get("callee").isIdentifier()) {
+ return genericTypeAnnotation(node.callee);
+ }
+}
+
+function TemplateLiteral() {
+ return stringTypeAnnotation();
+}
+
+function UnaryExpression(node) {
+ const operator = node.operator;
+
+ if (operator === "void") {
+ return voidTypeAnnotation();
+ } else if (NUMBER_UNARY_OPERATORS.indexOf(operator) >= 0) {
+ return numberTypeAnnotation();
+ } else if (STRING_UNARY_OPERATORS.indexOf(operator) >= 0) {
+ return stringTypeAnnotation();
+ } else if (BOOLEAN_UNARY_OPERATORS.indexOf(operator) >= 0) {
+ return booleanTypeAnnotation();
+ }
+}
+
+function BinaryExpression(node) {
+ const operator = node.operator;
+
+ if (NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
+ return numberTypeAnnotation();
+ } else if (BOOLEAN_BINARY_OPERATORS.indexOf(operator) >= 0) {
+ return booleanTypeAnnotation();
+ } else if (operator === "+") {
+ const right = this.get("right");
+ const left = this.get("left");
+
+ if (left.isBaseType("number") && right.isBaseType("number")) {
+ return numberTypeAnnotation();
+ } else if (left.isBaseType("string") || right.isBaseType("string")) {
+ return stringTypeAnnotation();
+ }
+
+ return unionTypeAnnotation([stringTypeAnnotation(), numberTypeAnnotation()]);
+ }
+}
+
+function LogicalExpression() {
+ const argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()];
+
+ if (isTSTypeAnnotation(argumentTypes[0]) && createTSUnionType) {
+ return createTSUnionType(argumentTypes);
+ }
+
+ if (createFlowUnionType) {
+ return createFlowUnionType(argumentTypes);
+ }
+
+ return createUnionTypeAnnotation(argumentTypes);
+}
+
+function ConditionalExpression() {
+ const argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()];
+
+ if (isTSTypeAnnotation(argumentTypes[0]) && createTSUnionType) {
+ return createTSUnionType(argumentTypes);
+ }
+
+ if (createFlowUnionType) {
+ return createFlowUnionType(argumentTypes);
+ }
+
+ return createUnionTypeAnnotation(argumentTypes);
+}
+
+function SequenceExpression() {
+ return this.get("expressions").pop().getTypeAnnotation();
+}
+
+function ParenthesizedExpression() {
+ return this.get("expression").getTypeAnnotation();
+}
+
+function AssignmentExpression() {
+ return this.get("right").getTypeAnnotation();
+}
+
+function UpdateExpression(node) {
+ const operator = node.operator;
+
+ if (operator === "++" || operator === "--") {
+ return numberTypeAnnotation();
+ }
+}
+
+function StringLiteral() {
+ return stringTypeAnnotation();
+}
+
+function NumericLiteral() {
+ return numberTypeAnnotation();
+}
+
+function BooleanLiteral() {
+ return booleanTypeAnnotation();
+}
+
+function NullLiteral() {
+ return nullLiteralTypeAnnotation();
+}
+
+function RegExpLiteral() {
+ return genericTypeAnnotation(identifier("RegExp"));
+}
+
+function ObjectExpression() {
+ return genericTypeAnnotation(identifier("Object"));
+}
+
+function ArrayExpression() {
+ return genericTypeAnnotation(identifier("Array"));
+}
+
+function RestElement() {
+ return ArrayExpression();
+}
+
+RestElement.validParent = true;
+
+function Func() {
+ return genericTypeAnnotation(identifier("Function"));
+}
+
+const isArrayFrom = buildMatchMemberExpression("Array.from");
+const isObjectKeys = buildMatchMemberExpression("Object.keys");
+const isObjectValues = buildMatchMemberExpression("Object.values");
+const isObjectEntries = buildMatchMemberExpression("Object.entries");
+
+function CallExpression() {
+ const {
+ callee
+ } = this.node;
+
+ if (isObjectKeys(callee)) {
+ return arrayTypeAnnotation(stringTypeAnnotation());
+ } else if (isArrayFrom(callee) || isObjectValues(callee)) {
+ return arrayTypeAnnotation(anyTypeAnnotation());
+ } else if (isObjectEntries(callee)) {
+ return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()]));
+ }
+
+ return resolveCall(this.get("callee"));
+}
+
+function TaggedTemplateExpression() {
+ return resolveCall(this.get("tag"));
+}
+
+function resolveCall(callee) {
+ callee = callee.resolve();
+
+ if (callee.isFunction()) {
+ if (callee.is("async")) {
+ if (callee.is("generator")) {
+ return genericTypeAnnotation(identifier("AsyncIterator"));
+ } else {
+ return genericTypeAnnotation(identifier("Promise"));
+ }
+ } else {
+ if (callee.node.returnType) {
+ return callee.node.returnType;
+ } else {}
+ }
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js
new file mode 100644
index 0000000000..48d6ef1e1e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/introspection.js
@@ -0,0 +1,436 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo;
+exports._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeToDifferentFunctions;
+exports._resolve = _resolve;
+exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression;
+exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement;
+exports.equals = equals;
+exports.getSource = getSource;
+exports.has = has;
+exports.is = void 0;
+exports.isCompletionRecord = isCompletionRecord;
+exports.isConstantExpression = isConstantExpression;
+exports.isInStrictMode = isInStrictMode;
+exports.isNodeType = isNodeType;
+exports.isStatementOrBlock = isStatementOrBlock;
+exports.isStatic = isStatic;
+exports.isnt = isnt;
+exports.matchesPattern = matchesPattern;
+exports.referencesImport = referencesImport;
+exports.resolve = resolve;
+exports.willIMaybeExecuteBefore = willIMaybeExecuteBefore;
+
+var _t = require("@babel/types");
+
+const {
+ STATEMENT_OR_BLOCK_KEYS,
+ VISITOR_KEYS,
+ isBlockStatement,
+ isExpression,
+ isIdentifier,
+ isLiteral,
+ isStringLiteral,
+ isType,
+ matchesPattern: _matchesPattern
+} = _t;
+
+function matchesPattern(pattern, allowPartial) {
+ return _matchesPattern(this.node, pattern, allowPartial);
+}
+
+function has(key) {
+ const val = this.node && this.node[key];
+
+ if (val && Array.isArray(val)) {
+ return !!val.length;
+ } else {
+ return !!val;
+ }
+}
+
+function isStatic() {
+ return this.scope.isStatic(this.node);
+}
+
+const is = has;
+exports.is = is;
+
+function isnt(key) {
+ return !this.has(key);
+}
+
+function equals(key, value) {
+ return this.node[key] === value;
+}
+
+function isNodeType(type) {
+ return isType(this.type, type);
+}
+
+function canHaveVariableDeclarationOrExpression() {
+ return (this.key === "init" || this.key === "left") && this.parentPath.isFor();
+}
+
+function canSwapBetweenExpressionAndStatement(replacement) {
+ if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) {
+ return false;
+ }
+
+ if (this.isExpression()) {
+ return isBlockStatement(replacement);
+ } else if (this.isBlockStatement()) {
+ return isExpression(replacement);
+ }
+
+ return false;
+}
+
+function isCompletionRecord(allowInsideFunction) {
+ let path = this;
+ let first = true;
+
+ do {
+ const container = path.container;
+
+ if (path.isFunction() && !first) {
+ return !!allowInsideFunction;
+ }
+
+ first = false;
+
+ if (Array.isArray(container) && path.key !== container.length - 1) {
+ return false;
+ }
+ } while ((path = path.parentPath) && !path.isProgram());
+
+ return true;
+}
+
+function isStatementOrBlock() {
+ if (this.parentPath.isLabeledStatement() || isBlockStatement(this.container)) {
+ return false;
+ } else {
+ return STATEMENT_OR_BLOCK_KEYS.includes(this.key);
+ }
+}
+
+function referencesImport(moduleSource, importName) {
+ if (!this.isReferencedIdentifier()) {
+ if ((this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral(this.node.property, {
+ value: importName
+ }) : this.node.property.name === importName)) {
+ const object = this.get("object");
+ return object.isReferencedIdentifier() && object.referencesImport(moduleSource, "*");
+ }
+
+ return false;
+ }
+
+ const binding = this.scope.getBinding(this.node.name);
+ if (!binding || binding.kind !== "module") return false;
+ const path = binding.path;
+ const parent = path.parentPath;
+ if (!parent.isImportDeclaration()) return false;
+
+ if (parent.node.source.value === moduleSource) {
+ if (!importName) return true;
+ } else {
+ return false;
+ }
+
+ if (path.isImportDefaultSpecifier() && importName === "default") {
+ return true;
+ }
+
+ if (path.isImportNamespaceSpecifier() && importName === "*") {
+ return true;
+ }
+
+ if (path.isImportSpecifier() && isIdentifier(path.node.imported, {
+ name: importName
+ })) {
+ return true;
+ }
+
+ return false;
+}
+
+function getSource() {
+ const node = this.node;
+
+ if (node.end) {
+ const code = this.hub.getCode();
+ if (code) return code.slice(node.start, node.end);
+ }
+
+ return "";
+}
+
+function willIMaybeExecuteBefore(target) {
+ return this._guessExecutionStatusRelativeTo(target) !== "after";
+}
+
+function getOuterFunction(path) {
+ return (path.scope.getFunctionParent() || path.scope.getProgramParent()).path;
+}
+
+function isExecutionUncertain(type, key) {
+ switch (type) {
+ case "LogicalExpression":
+ return key === "right";
+
+ case "ConditionalExpression":
+ case "IfStatement":
+ return key === "consequent" || key === "alternate";
+
+ case "WhileStatement":
+ case "DoWhileStatement":
+ case "ForInStatement":
+ case "ForOfStatement":
+ return key === "body";
+
+ case "ForStatement":
+ return key === "body" || key === "update";
+
+ case "SwitchStatement":
+ return key === "cases";
+
+ case "TryStatement":
+ return key === "handler";
+
+ case "AssignmentPattern":
+ return key === "right";
+
+ case "OptionalMemberExpression":
+ return key === "property";
+
+ case "OptionalCallExpression":
+ return key === "arguments";
+
+ default:
+ return false;
+ }
+}
+
+function isExecutionUncertainInList(paths, maxIndex) {
+ for (let i = 0; i < maxIndex; i++) {
+ const path = paths[i];
+
+ if (isExecutionUncertain(path.parent.type, path.parentKey)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function _guessExecutionStatusRelativeTo(target) {
+ const funcParent = {
+ this: getOuterFunction(this),
+ target: getOuterFunction(target)
+ };
+
+ if (funcParent.target.node !== funcParent.this.node) {
+ return this._guessExecutionStatusRelativeToDifferentFunctions(funcParent.target);
+ }
+
+ const paths = {
+ target: target.getAncestry(),
+ this: this.getAncestry()
+ };
+ if (paths.target.indexOf(this) >= 0) return "after";
+ if (paths.this.indexOf(target) >= 0) return "before";
+ let commonPath;
+ const commonIndex = {
+ target: 0,
+ this: 0
+ };
+
+ while (!commonPath && commonIndex.this < paths.this.length) {
+ const path = paths.this[commonIndex.this];
+ commonIndex.target = paths.target.indexOf(path);
+
+ if (commonIndex.target >= 0) {
+ commonPath = path;
+ } else {
+ commonIndex.this++;
+ }
+ }
+
+ if (!commonPath) {
+ throw new Error("Internal Babel error - The two compared nodes" + " don't appear to belong to the same program.");
+ }
+
+ if (isExecutionUncertainInList(paths.this, commonIndex.this - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) {
+ return "unknown";
+ }
+
+ const divergence = {
+ this: paths.this[commonIndex.this - 1],
+ target: paths.target[commonIndex.target - 1]
+ };
+
+ if (divergence.target.listKey && divergence.this.listKey && divergence.target.container === divergence.this.container) {
+ return divergence.target.key > divergence.this.key ? "before" : "after";
+ }
+
+ const keys = VISITOR_KEYS[commonPath.type];
+ const keyPosition = {
+ this: keys.indexOf(divergence.this.parentKey),
+ target: keys.indexOf(divergence.target.parentKey)
+ };
+ return keyPosition.target > keyPosition.this ? "before" : "after";
+}
+
+const executionOrderCheckedNodes = new WeakSet();
+
+function _guessExecutionStatusRelativeToDifferentFunctions(target) {
+ if (!target.isFunctionDeclaration() || target.parentPath.isExportDeclaration()) {
+ return "unknown";
+ }
+
+ const binding = target.scope.getBinding(target.node.id.name);
+ if (!binding.references) return "before";
+ const referencePaths = binding.referencePaths;
+ let allStatus;
+
+ for (const path of referencePaths) {
+ const childOfFunction = !!path.find(path => path.node === target.node);
+ if (childOfFunction) continue;
+
+ if (path.key !== "callee" || !path.parentPath.isCallExpression()) {
+ return "unknown";
+ }
+
+ if (executionOrderCheckedNodes.has(path.node)) continue;
+ executionOrderCheckedNodes.add(path.node);
+
+ const status = this._guessExecutionStatusRelativeTo(path);
+
+ executionOrderCheckedNodes.delete(path.node);
+
+ if (allStatus && allStatus !== status) {
+ return "unknown";
+ } else {
+ allStatus = status;
+ }
+ }
+
+ return allStatus;
+}
+
+function resolve(dangerous, resolved) {
+ return this._resolve(dangerous, resolved) || this;
+}
+
+function _resolve(dangerous, resolved) {
+ if (resolved && resolved.indexOf(this) >= 0) return;
+ resolved = resolved || [];
+ resolved.push(this);
+
+ if (this.isVariableDeclarator()) {
+ if (this.get("id").isIdentifier()) {
+ return this.get("init").resolve(dangerous, resolved);
+ } else {}
+ } else if (this.isReferencedIdentifier()) {
+ const binding = this.scope.getBinding(this.node.name);
+ if (!binding) return;
+ if (!binding.constant) return;
+ if (binding.kind === "module") return;
+
+ if (binding.path !== this) {
+ const ret = binding.path.resolve(dangerous, resolved);
+ if (this.find(parent => parent.node === ret.node)) return;
+ return ret;
+ }
+ } else if (this.isTypeCastExpression()) {
+ return this.get("expression").resolve(dangerous, resolved);
+ } else if (dangerous && this.isMemberExpression()) {
+ const targetKey = this.toComputedKey();
+ if (!isLiteral(targetKey)) return;
+ const targetName = targetKey.value;
+ const target = this.get("object").resolve(dangerous, resolved);
+
+ if (target.isObjectExpression()) {
+ const props = target.get("properties");
+
+ for (const prop of props) {
+ if (!prop.isProperty()) continue;
+ const key = prop.get("key");
+ let match = prop.isnt("computed") && key.isIdentifier({
+ name: targetName
+ });
+ match = match || key.isLiteral({
+ value: targetName
+ });
+ if (match) return prop.get("value").resolve(dangerous, resolved);
+ }
+ } else if (target.isArrayExpression() && !isNaN(+targetName)) {
+ const elems = target.get("elements");
+ const elem = elems[targetName];
+ if (elem) return elem.resolve(dangerous, resolved);
+ }
+ }
+}
+
+function isConstantExpression() {
+ if (this.isIdentifier()) {
+ const binding = this.scope.getBinding(this.node.name);
+ if (!binding) return false;
+ return binding.constant;
+ }
+
+ if (this.isLiteral()) {
+ if (this.isRegExpLiteral()) {
+ return false;
+ }
+
+ if (this.isTemplateLiteral()) {
+ return this.get("expressions").every(expression => expression.isConstantExpression());
+ }
+
+ return true;
+ }
+
+ if (this.isUnaryExpression()) {
+ if (this.node.operator !== "void") {
+ return false;
+ }
+
+ return this.get("argument").isConstantExpression();
+ }
+
+ if (this.isBinaryExpression()) {
+ return this.get("left").isConstantExpression() && this.get("right").isConstantExpression();
+ }
+
+ return false;
+}
+
+function isInStrictMode() {
+ const start = this.isProgram() ? this : this.parentPath;
+ const strictParent = start.find(path => {
+ if (path.isProgram({
+ sourceType: "module"
+ })) return true;
+ if (path.isClass()) return true;
+ if (!path.isProgram() && !path.isFunction()) return false;
+
+ if (path.isArrowFunctionExpression() && !path.get("body").isBlockStatement()) {
+ return false;
+ }
+
+ const body = path.isFunction() ? path.node.body : path.node;
+
+ for (const directive of body.directives) {
+ if (directive.value.value === "use strict") {
+ return true;
+ }
+ }
+ });
+ return !!strictParent;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/hoister.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/hoister.js
new file mode 100644
index 0000000000..536a340974
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/hoister.js
@@ -0,0 +1,206 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _t = require("@babel/types");
+
+var _t2 = _t;
+const {
+ react
+} = _t;
+const {
+ cloneNode,
+ jsxExpressionContainer,
+ variableDeclaration,
+ variableDeclarator
+} = _t2;
+const referenceVisitor = {
+ ReferencedIdentifier(path, state) {
+ if (path.isJSXIdentifier() && react.isCompatTag(path.node.name) && !path.parentPath.isJSXMemberExpression()) {
+ return;
+ }
+
+ if (path.node.name === "this") {
+ let scope = path.scope;
+
+ do {
+ if (scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) {
+ break;
+ }
+ } while (scope = scope.parent);
+
+ if (scope) state.breakOnScopePaths.push(scope.path);
+ }
+
+ const binding = path.scope.getBinding(path.node.name);
+ if (!binding) return;
+
+ for (const violation of binding.constantViolations) {
+ if (violation.scope !== binding.path.scope) {
+ state.mutableBinding = true;
+ path.stop();
+ return;
+ }
+ }
+
+ if (binding !== state.scope.getBinding(path.node.name)) return;
+ state.bindings[path.node.name] = binding;
+ }
+
+};
+
+class PathHoister {
+ constructor(path, scope) {
+ this.breakOnScopePaths = void 0;
+ this.bindings = void 0;
+ this.mutableBinding = void 0;
+ this.scopes = void 0;
+ this.scope = void 0;
+ this.path = void 0;
+ this.attachAfter = void 0;
+ this.breakOnScopePaths = [];
+ this.bindings = {};
+ this.mutableBinding = false;
+ this.scopes = [];
+ this.scope = scope;
+ this.path = path;
+ this.attachAfter = false;
+ }
+
+ isCompatibleScope(scope) {
+ for (const key of Object.keys(this.bindings)) {
+ const binding = this.bindings[key];
+
+ if (!scope.bindingIdentifierEquals(key, binding.identifier)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ getCompatibleScopes() {
+ let scope = this.path.scope;
+
+ do {
+ if (this.isCompatibleScope(scope)) {
+ this.scopes.push(scope);
+ } else {
+ break;
+ }
+
+ if (this.breakOnScopePaths.indexOf(scope.path) >= 0) {
+ break;
+ }
+ } while (scope = scope.parent);
+ }
+
+ getAttachmentPath() {
+ let path = this._getAttachmentPath();
+
+ if (!path) return;
+ let targetScope = path.scope;
+
+ if (targetScope.path === path) {
+ targetScope = path.scope.parent;
+ }
+
+ if (targetScope.path.isProgram() || targetScope.path.isFunction()) {
+ for (const name of Object.keys(this.bindings)) {
+ if (!targetScope.hasOwnBinding(name)) continue;
+ const binding = this.bindings[name];
+
+ if (binding.kind === "param" || binding.path.parentKey === "params") {
+ continue;
+ }
+
+ const bindingParentPath = this.getAttachmentParentForPath(binding.path);
+
+ if (bindingParentPath.key >= path.key) {
+ this.attachAfter = true;
+ path = binding.path;
+
+ for (const violationPath of binding.constantViolations) {
+ if (this.getAttachmentParentForPath(violationPath).key > path.key) {
+ path = violationPath;
+ }
+ }
+ }
+ }
+ }
+
+ return path;
+ }
+
+ _getAttachmentPath() {
+ const scopes = this.scopes;
+ const scope = scopes.pop();
+ if (!scope) return;
+
+ if (scope.path.isFunction()) {
+ if (this.hasOwnParamBindings(scope)) {
+ if (this.scope === scope) return;
+ const bodies = scope.path.get("body").get("body");
+
+ for (let i = 0; i < bodies.length; i++) {
+ if (bodies[i].node._blockHoist) continue;
+ return bodies[i];
+ }
+ } else {
+ return this.getNextScopeAttachmentParent();
+ }
+ } else if (scope.path.isProgram()) {
+ return this.getNextScopeAttachmentParent();
+ }
+ }
+
+ getNextScopeAttachmentParent() {
+ const scope = this.scopes.pop();
+ if (scope) return this.getAttachmentParentForPath(scope.path);
+ }
+
+ getAttachmentParentForPath(path) {
+ do {
+ if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
+ return path;
+ }
+ } while (path = path.parentPath);
+ }
+
+ hasOwnParamBindings(scope) {
+ for (const name of Object.keys(this.bindings)) {
+ if (!scope.hasOwnBinding(name)) continue;
+ const binding = this.bindings[name];
+ if (binding.kind === "param" && binding.constant) return true;
+ }
+
+ return false;
+ }
+
+ run() {
+ this.path.traverse(referenceVisitor, this);
+ if (this.mutableBinding) return;
+ this.getCompatibleScopes();
+ const attachTo = this.getAttachmentPath();
+ if (!attachTo) return;
+ if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return;
+ let uid = attachTo.scope.generateUidIdentifier("ref");
+ const declarator = variableDeclarator(uid, this.path.node);
+ const insertFn = this.attachAfter ? "insertAfter" : "insertBefore";
+ const [attached] = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : variableDeclaration("var", [declarator])]);
+ const parent = this.path.parentPath;
+
+ if (parent.isJSXElement() && this.path.container === parent.node.children) {
+ uid = jsxExpressionContainer(uid);
+ }
+
+ this.path.replaceWith(cloneNode(uid));
+ return attachTo.isVariableDeclarator() ? attached.get("init") : attached.get("declarations.0.init");
+ }
+
+}
+
+exports.default = PathHoister; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js
new file mode 100644
index 0000000000..23ec8fe6d7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/removal-hooks.js
@@ -0,0 +1,38 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.hooks = void 0;
+const hooks = [function (self, parent) {
+ const removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement();
+
+ if (removeParent) {
+ parent.remove();
+ return true;
+ }
+}, function (self, parent) {
+ if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {
+ parent.replaceWith(parent.node.expressions[0]);
+ return true;
+ }
+}, function (self, parent) {
+ if (parent.isBinary()) {
+ if (self.key === "left") {
+ parent.replaceWith(parent.node.right);
+ } else {
+ parent.replaceWith(parent.node.left);
+ }
+
+ return true;
+ }
+}, function (self, parent) {
+ if (parent.isIfStatement() && (self.key === "consequent" || self.key === "alternate") || self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression())) {
+ self.replaceWith({
+ type: "BlockStatement",
+ body: []
+ });
+ return true;
+ }
+}];
+exports.hooks = hooks; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js
new file mode 100644
index 0000000000..871cb249d3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/lib/virtual-types.js
@@ -0,0 +1,230 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.Var = exports.User = exports.Statement = exports.SpreadProperty = exports.Scope = exports.RestProperty = exports.ReferencedMemberExpression = exports.ReferencedIdentifier = exports.Referenced = exports.Pure = exports.NumericLiteralTypeAnnotation = exports.Generated = exports.ForAwaitStatement = exports.Flow = exports.Expression = exports.ExistentialTypeParam = exports.BlockScoped = exports.BindingIdentifier = void 0;
+
+var _t = require("@babel/types");
+
+const {
+ isBinding,
+ isBlockScoped,
+ isExportDeclaration,
+ isExpression,
+ isFlow,
+ isForStatement,
+ isForXStatement,
+ isIdentifier,
+ isImportDeclaration,
+ isImportSpecifier,
+ isJSXIdentifier,
+ isJSXMemberExpression,
+ isMemberExpression,
+ isReferenced,
+ isScope,
+ isStatement,
+ isVar,
+ isVariableDeclaration,
+ react
+} = _t;
+const {
+ isCompatTag
+} = react;
+const ReferencedIdentifier = {
+ types: ["Identifier", "JSXIdentifier"],
+
+ checkPath(path, opts) {
+ const {
+ node,
+ parent
+ } = path;
+
+ if (!isIdentifier(node, opts) && !isJSXMemberExpression(parent, opts)) {
+ if (isJSXIdentifier(node, opts)) {
+ if (isCompatTag(node.name)) return false;
+ } else {
+ return false;
+ }
+ }
+
+ return isReferenced(node, parent, path.parentPath.parent);
+ }
+
+};
+exports.ReferencedIdentifier = ReferencedIdentifier;
+const ReferencedMemberExpression = {
+ types: ["MemberExpression"],
+
+ checkPath({
+ node,
+ parent
+ }) {
+ return isMemberExpression(node) && isReferenced(node, parent);
+ }
+
+};
+exports.ReferencedMemberExpression = ReferencedMemberExpression;
+const BindingIdentifier = {
+ types: ["Identifier"],
+
+ checkPath(path) {
+ const {
+ node,
+ parent
+ } = path;
+ const grandparent = path.parentPath.parent;
+ return isIdentifier(node) && isBinding(node, parent, grandparent);
+ }
+
+};
+exports.BindingIdentifier = BindingIdentifier;
+const Statement = {
+ types: ["Statement"],
+
+ checkPath({
+ node,
+ parent
+ }) {
+ if (isStatement(node)) {
+ if (isVariableDeclaration(node)) {
+ if (isForXStatement(parent, {
+ left: node
+ })) return false;
+ if (isForStatement(parent, {
+ init: node
+ })) return false;
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+};
+exports.Statement = Statement;
+const Expression = {
+ types: ["Expression"],
+
+ checkPath(path) {
+ if (path.isIdentifier()) {
+ return path.isReferencedIdentifier();
+ } else {
+ return isExpression(path.node);
+ }
+ }
+
+};
+exports.Expression = Expression;
+const Scope = {
+ types: ["Scopable", "Pattern"],
+
+ checkPath(path) {
+ return isScope(path.node, path.parent);
+ }
+
+};
+exports.Scope = Scope;
+const Referenced = {
+ checkPath(path) {
+ return isReferenced(path.node, path.parent);
+ }
+
+};
+exports.Referenced = Referenced;
+const BlockScoped = {
+ checkPath(path) {
+ return isBlockScoped(path.node);
+ }
+
+};
+exports.BlockScoped = BlockScoped;
+const Var = {
+ types: ["VariableDeclaration"],
+
+ checkPath(path) {
+ return isVar(path.node);
+ }
+
+};
+exports.Var = Var;
+const User = {
+ checkPath(path) {
+ return path.node && !!path.node.loc;
+ }
+
+};
+exports.User = User;
+const Generated = {
+ checkPath(path) {
+ return !path.isUser();
+ }
+
+};
+exports.Generated = Generated;
+const Pure = {
+ checkPath(path, opts) {
+ return path.scope.isPure(path.node, opts);
+ }
+
+};
+exports.Pure = Pure;
+const Flow = {
+ types: ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"],
+
+ checkPath({
+ node
+ }) {
+ if (isFlow(node)) {
+ return true;
+ } else if (isImportDeclaration(node)) {
+ return node.importKind === "type" || node.importKind === "typeof";
+ } else if (isExportDeclaration(node)) {
+ return node.exportKind === "type";
+ } else if (isImportSpecifier(node)) {
+ return node.importKind === "type" || node.importKind === "typeof";
+ } else {
+ return false;
+ }
+ }
+
+};
+exports.Flow = Flow;
+const RestProperty = {
+ types: ["RestElement"],
+
+ checkPath(path) {
+ return path.parentPath && path.parentPath.isObjectPattern();
+ }
+
+};
+exports.RestProperty = RestProperty;
+const SpreadProperty = {
+ types: ["RestElement"],
+
+ checkPath(path) {
+ return path.parentPath && path.parentPath.isObjectExpression();
+ }
+
+};
+exports.SpreadProperty = SpreadProperty;
+const ExistentialTypeParam = {
+ types: ["ExistsTypeAnnotation"]
+};
+exports.ExistentialTypeParam = ExistentialTypeParam;
+const NumericLiteralTypeAnnotation = {
+ types: ["NumberLiteralTypeAnnotation"]
+};
+exports.NumericLiteralTypeAnnotation = NumericLiteralTypeAnnotation;
+const ForAwaitStatement = {
+ types: ["ForOfStatement"],
+
+ checkPath({
+ node
+ }) {
+ return node.await === true;
+ }
+
+};
+exports.ForAwaitStatement = ForAwaitStatement; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/modification.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/modification.js
new file mode 100644
index 0000000000..9a227f2f53
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/modification.js
@@ -0,0 +1,232 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._containerInsert = _containerInsert;
+exports._containerInsertAfter = _containerInsertAfter;
+exports._containerInsertBefore = _containerInsertBefore;
+exports._verifyNodeList = _verifyNodeList;
+exports.hoist = hoist;
+exports.insertAfter = insertAfter;
+exports.insertBefore = insertBefore;
+exports.pushContainer = pushContainer;
+exports.unshiftContainer = unshiftContainer;
+exports.updateSiblingKeys = updateSiblingKeys;
+
+var _cache = require("../cache");
+
+var _hoister = require("./lib/hoister");
+
+var _index = require("./index");
+
+var _t = require("@babel/types");
+
+const {
+ arrowFunctionExpression,
+ assertExpression,
+ assignmentExpression,
+ blockStatement,
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ isExpression
+} = _t;
+
+function insertBefore(nodes_) {
+ this._assertUnremoved();
+
+ const nodes = this._verifyNodeList(nodes_);
+
+ const {
+ parentPath
+ } = this;
+
+ if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || parentPath.isExportNamedDeclaration() || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {
+ return parentPath.insertBefore(nodes);
+ } else if (this.isNodeType("Expression") && !this.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
+ if (this.node) nodes.push(this.node);
+ return this.replaceExpressionWithStatements(nodes);
+ } else if (Array.isArray(this.container)) {
+ return this._containerInsertBefore(nodes);
+ } else if (this.isStatementOrBlock()) {
+ const node = this.node;
+ const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null);
+ this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));
+ return this.unshiftContainer("body", nodes);
+ } else {
+ throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?");
+ }
+}
+
+function _containerInsert(from, nodes) {
+ this.updateSiblingKeys(from, nodes.length);
+ const paths = [];
+ this.container.splice(from, 0, ...nodes);
+
+ for (let i = 0; i < nodes.length; i++) {
+ const to = from + i;
+ const path = this.getSibling(to);
+ paths.push(path);
+
+ if (this.context && this.context.queue) {
+ path.pushContext(this.context);
+ }
+ }
+
+ const contexts = this._getQueueContexts();
+
+ for (const path of paths) {
+ path.setScope();
+ path.debug("Inserted.");
+
+ for (const context of contexts) {
+ context.maybeQueue(path, true);
+ }
+ }
+
+ return paths;
+}
+
+function _containerInsertBefore(nodes) {
+ return this._containerInsert(this.key, nodes);
+}
+
+function _containerInsertAfter(nodes) {
+ return this._containerInsert(this.key + 1, nodes);
+}
+
+function insertAfter(nodes_) {
+ this._assertUnremoved();
+
+ const nodes = this._verifyNodeList(nodes_);
+
+ const {
+ parentPath
+ } = this;
+
+ if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || parentPath.isExportNamedDeclaration() || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {
+ return parentPath.insertAfter(nodes.map(node => {
+ return isExpression(node) ? expressionStatement(node) : node;
+ }));
+ } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
+ if (this.node) {
+ const node = this.node;
+ let {
+ scope
+ } = this;
+
+ if (scope.path.isPattern()) {
+ assertExpression(node);
+ this.replaceWith(callExpression(arrowFunctionExpression([], node), []));
+ this.get("callee.body").insertAfter(nodes);
+ return [this];
+ }
+
+ if (parentPath.isMethod({
+ computed: true,
+ key: node
+ })) {
+ scope = scope.parent;
+ }
+
+ const temp = scope.generateDeclaredUidIdentifier();
+ nodes.unshift(expressionStatement(assignmentExpression("=", cloneNode(temp), node)));
+ nodes.push(expressionStatement(cloneNode(temp)));
+ }
+
+ return this.replaceExpressionWithStatements(nodes);
+ } else if (Array.isArray(this.container)) {
+ return this._containerInsertAfter(nodes);
+ } else if (this.isStatementOrBlock()) {
+ const node = this.node;
+ const shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null);
+ this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));
+ return this.pushContainer("body", nodes);
+ } else {
+ throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?");
+ }
+}
+
+function updateSiblingKeys(fromIndex, incrementBy) {
+ if (!this.parent) return;
+
+ const paths = _cache.path.get(this.parent);
+
+ for (const [, path] of paths) {
+ if (path.key >= fromIndex) {
+ path.key += incrementBy;
+ }
+ }
+}
+
+function _verifyNodeList(nodes) {
+ if (!nodes) {
+ return [];
+ }
+
+ if (!Array.isArray(nodes)) {
+ nodes = [nodes];
+ }
+
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ let msg;
+
+ if (!node) {
+ msg = "has falsy node";
+ } else if (typeof node !== "object") {
+ msg = "contains a non-object node";
+ } else if (!node.type) {
+ msg = "without a type";
+ } else if (node instanceof _index.default) {
+ msg = "has a NodePath when it expected a raw object";
+ }
+
+ if (msg) {
+ const type = Array.isArray(node) ? "array" : typeof node;
+ throw new Error(`Node list ${msg} with the index of ${i} and type of ${type}`);
+ }
+ }
+
+ return nodes;
+}
+
+function unshiftContainer(listKey, nodes) {
+ this._assertUnremoved();
+
+ nodes = this._verifyNodeList(nodes);
+
+ const path = _index.default.get({
+ parentPath: this,
+ parent: this.node,
+ container: this.node[listKey],
+ listKey,
+ key: 0
+ }).setContext(this.context);
+
+ return path._containerInsertBefore(nodes);
+}
+
+function pushContainer(listKey, nodes) {
+ this._assertUnremoved();
+
+ const verifiedNodes = this._verifyNodeList(nodes);
+
+ const container = this.node[listKey];
+
+ const path = _index.default.get({
+ parentPath: this,
+ parent: this.node,
+ container: container,
+ listKey,
+ key: container.length
+ }).setContext(this.context);
+
+ return path.replaceWithMultiple(verifiedNodes);
+}
+
+function hoist(scope = this.scope) {
+ const hoister = new _hoister.default(this, scope);
+ return hoister.run();
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/removal.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/removal.js
new file mode 100644
index 0000000000..3e5d4fff09
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/removal.js
@@ -0,0 +1,73 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._assertUnremoved = _assertUnremoved;
+exports._callRemovalHooks = _callRemovalHooks;
+exports._markRemoved = _markRemoved;
+exports._remove = _remove;
+exports._removeFromScope = _removeFromScope;
+exports.remove = remove;
+
+var _removalHooks = require("./lib/removal-hooks");
+
+var _cache = require("../cache");
+
+var _index = require("./index");
+
+function remove() {
+ var _this$opts;
+
+ this._assertUnremoved();
+
+ this.resync();
+
+ if (!((_this$opts = this.opts) != null && _this$opts.noScope)) {
+ this._removeFromScope();
+ }
+
+ if (this._callRemovalHooks()) {
+ this._markRemoved();
+
+ return;
+ }
+
+ this.shareCommentsWithSiblings();
+
+ this._remove();
+
+ this._markRemoved();
+}
+
+function _removeFromScope() {
+ const bindings = this.getBindingIdentifiers();
+ Object.keys(bindings).forEach(name => this.scope.removeBinding(name));
+}
+
+function _callRemovalHooks() {
+ for (const fn of _removalHooks.hooks) {
+ if (fn(this, this.parentPath)) return true;
+ }
+}
+
+function _remove() {
+ if (Array.isArray(this.container)) {
+ this.container.splice(this.key, 1);
+ this.updateSiblingKeys(this.key, -1);
+ } else {
+ this._replaceWith(null);
+ }
+}
+
+function _markRemoved() {
+ this._traverseFlags |= _index.SHOULD_SKIP | _index.REMOVED;
+ if (this.parent) _cache.path.get(this.parent).delete(this.node);
+ this.node = null;
+}
+
+function _assertUnremoved() {
+ if (this.removed) {
+ throw this.buildCodeFrameError("NodePath has been removed so is read-only.");
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js
new file mode 100644
index 0000000000..ee5cdce8e1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/replacement.js
@@ -0,0 +1,260 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports._replaceWith = _replaceWith;
+exports.replaceExpressionWithStatements = replaceExpressionWithStatements;
+exports.replaceInline = replaceInline;
+exports.replaceWith = replaceWith;
+exports.replaceWithMultiple = replaceWithMultiple;
+exports.replaceWithSourceString = replaceWithSourceString;
+
+var _codeFrame = require("@babel/code-frame");
+
+var _index = require("../index");
+
+var _index2 = require("./index");
+
+var _cache = require("../cache");
+
+var _parser = require("@babel/parser");
+
+var _t = require("@babel/types");
+
+var _helperHoistVariables = require("@babel/helper-hoist-variables");
+
+const {
+ FUNCTION_TYPES,
+ arrowFunctionExpression,
+ assignmentExpression,
+ awaitExpression,
+ blockStatement,
+ callExpression,
+ cloneNode,
+ expressionStatement,
+ identifier,
+ inheritLeadingComments,
+ inheritTrailingComments,
+ inheritsComments,
+ isExpression,
+ isProgram,
+ isStatement,
+ removeComments,
+ returnStatement,
+ toSequenceExpression,
+ validate,
+ yieldExpression
+} = _t;
+
+function replaceWithMultiple(nodes) {
+ var _pathCache$get;
+
+ this.resync();
+ nodes = this._verifyNodeList(nodes);
+ inheritLeadingComments(nodes[0], this.node);
+ inheritTrailingComments(nodes[nodes.length - 1], this.node);
+ (_pathCache$get = _cache.path.get(this.parent)) == null ? void 0 : _pathCache$get.delete(this.node);
+ this.node = this.container[this.key] = null;
+ const paths = this.insertAfter(nodes);
+
+ if (this.node) {
+ this.requeue();
+ } else {
+ this.remove();
+ }
+
+ return paths;
+}
+
+function replaceWithSourceString(replacement) {
+ this.resync();
+
+ try {
+ replacement = `(${replacement})`;
+ replacement = (0, _parser.parse)(replacement);
+ } catch (err) {
+ const loc = err.loc;
+
+ if (loc) {
+ err.message += " - make sure this is an expression.\n" + (0, _codeFrame.codeFrameColumns)(replacement, {
+ start: {
+ line: loc.line,
+ column: loc.column + 1
+ }
+ });
+ err.code = "BABEL_REPLACE_SOURCE_ERROR";
+ }
+
+ throw err;
+ }
+
+ replacement = replacement.program.body[0].expression;
+
+ _index.default.removeProperties(replacement);
+
+ return this.replaceWith(replacement);
+}
+
+function replaceWith(replacement) {
+ this.resync();
+
+ if (this.removed) {
+ throw new Error("You can't replace this node, we've already removed it");
+ }
+
+ if (replacement instanceof _index2.default) {
+ replacement = replacement.node;
+ }
+
+ if (!replacement) {
+ throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");
+ }
+
+ if (this.node === replacement) {
+ return [this];
+ }
+
+ if (this.isProgram() && !isProgram(replacement)) {
+ throw new Error("You can only replace a Program root node with another Program node");
+ }
+
+ if (Array.isArray(replacement)) {
+ throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");
+ }
+
+ if (typeof replacement === "string") {
+ throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");
+ }
+
+ let nodePath = "";
+
+ if (this.isNodeType("Statement") && isExpression(replacement)) {
+ if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) {
+ replacement = expressionStatement(replacement);
+ nodePath = "expression";
+ }
+ }
+
+ if (this.isNodeType("Expression") && isStatement(replacement)) {
+ if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {
+ return this.replaceExpressionWithStatements([replacement]);
+ }
+ }
+
+ const oldNode = this.node;
+
+ if (oldNode) {
+ inheritsComments(replacement, oldNode);
+ removeComments(oldNode);
+ }
+
+ this._replaceWith(replacement);
+
+ this.type = replacement.type;
+ this.setScope();
+ this.requeue();
+ return [nodePath ? this.get(nodePath) : this];
+}
+
+function _replaceWith(node) {
+ var _pathCache$get2;
+
+ if (!this.container) {
+ throw new ReferenceError("Container is falsy");
+ }
+
+ if (this.inList) {
+ validate(this.parent, this.key, [node]);
+ } else {
+ validate(this.parent, this.key, node);
+ }
+
+ this.debug(`Replace with ${node == null ? void 0 : node.type}`);
+ (_pathCache$get2 = _cache.path.get(this.parent)) == null ? void 0 : _pathCache$get2.set(node, this).delete(this.node);
+ this.node = this.container[this.key] = node;
+}
+
+function replaceExpressionWithStatements(nodes) {
+ this.resync();
+ const nodesAsSequenceExpression = toSequenceExpression(nodes, this.scope);
+
+ if (nodesAsSequenceExpression) {
+ return this.replaceWith(nodesAsSequenceExpression)[0].get("expressions");
+ }
+
+ const functionParent = this.getFunctionParent();
+ const isParentAsync = functionParent == null ? void 0 : functionParent.is("async");
+ const isParentGenerator = functionParent == null ? void 0 : functionParent.is("generator");
+ const container = arrowFunctionExpression([], blockStatement(nodes));
+ this.replaceWith(callExpression(container, []));
+ const callee = this.get("callee");
+ (0, _helperHoistVariables.default)(callee.get("body"), id => {
+ this.scope.push({
+ id
+ });
+ }, "var");
+ const completionRecords = this.get("callee").getCompletionRecords();
+
+ for (const path of completionRecords) {
+ if (!path.isExpressionStatement()) continue;
+ const loop = path.findParent(path => path.isLoop());
+
+ if (loop) {
+ let uid = loop.getData("expressionReplacementReturnUid");
+
+ if (!uid) {
+ uid = callee.scope.generateDeclaredUidIdentifier("ret");
+ callee.get("body").pushContainer("body", returnStatement(cloneNode(uid)));
+ loop.setData("expressionReplacementReturnUid", uid);
+ } else {
+ uid = identifier(uid.name);
+ }
+
+ path.get("expression").replaceWith(assignmentExpression("=", cloneNode(uid), path.node.expression));
+ } else {
+ path.replaceWith(returnStatement(path.node.expression));
+ }
+ }
+
+ callee.arrowFunctionToExpression();
+ const newCallee = callee;
+
+ const needToAwaitFunction = isParentAsync && _index.default.hasType(this.get("callee.body").node, "AwaitExpression", FUNCTION_TYPES);
+
+ const needToYieldFunction = isParentGenerator && _index.default.hasType(this.get("callee.body").node, "YieldExpression", FUNCTION_TYPES);
+
+ if (needToAwaitFunction) {
+ newCallee.set("async", true);
+
+ if (!needToYieldFunction) {
+ this.replaceWith(awaitExpression(this.node));
+ }
+ }
+
+ if (needToYieldFunction) {
+ newCallee.set("generator", true);
+ this.replaceWith(yieldExpression(this.node, true));
+ }
+
+ return newCallee.get("body.body");
+}
+
+function replaceInline(nodes) {
+ this.resync();
+
+ if (Array.isArray(nodes)) {
+ if (Array.isArray(this.container)) {
+ nodes = this._verifyNodeList(nodes);
+
+ const paths = this._containerInsertAfter(nodes);
+
+ this.remove();
+ return paths;
+ } else {
+ return this.replaceWithMultiple(nodes);
+ }
+ } else {
+ return this.replaceWith(nodes);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/binding.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/binding.js
new file mode 100644
index 0000000000..16911ef21c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/binding.js
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+class Binding {
+ constructor({
+ identifier,
+ scope,
+ path,
+ kind
+ }) {
+ this.identifier = void 0;
+ this.scope = void 0;
+ this.path = void 0;
+ this.kind = void 0;
+ this.constantViolations = [];
+ this.constant = true;
+ this.referencePaths = [];
+ this.referenced = false;
+ this.references = 0;
+ this.identifier = identifier;
+ this.scope = scope;
+ this.path = path;
+ this.kind = kind;
+ this.clearValue();
+ }
+
+ deoptValue() {
+ this.clearValue();
+ this.hasDeoptedValue = true;
+ }
+
+ setValue(value) {
+ if (this.hasDeoptedValue) return;
+ this.hasValue = true;
+ this.value = value;
+ }
+
+ clearValue() {
+ this.hasDeoptedValue = false;
+ this.hasValue = false;
+ this.value = null;
+ }
+
+ reassign(path) {
+ this.constant = false;
+
+ if (this.constantViolations.indexOf(path) !== -1) {
+ return;
+ }
+
+ this.constantViolations.push(path);
+ }
+
+ reference(path) {
+ if (this.referencePaths.indexOf(path) !== -1) {
+ return;
+ }
+
+ this.referenced = true;
+ this.references++;
+ this.referencePaths.push(path);
+ }
+
+ dereference() {
+ this.references--;
+ this.referenced = !!this.references;
+ }
+
+}
+
+exports.default = Binding; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js
new file mode 100644
index 0000000000..cee3186a77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js
@@ -0,0 +1,1015 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _renamer = require("./lib/renamer");
+
+var _index = require("../index");
+
+var _binding = require("./binding");
+
+var _globals = require("globals");
+
+var _t = require("@babel/types");
+
+var _cache = require("../cache");
+
+const {
+ NOT_LOCAL_BINDING,
+ callExpression,
+ cloneNode,
+ getBindingIdentifiers,
+ identifier,
+ isArrayExpression,
+ isBinary,
+ isClass,
+ isClassBody,
+ isClassDeclaration,
+ isExportAllDeclaration,
+ isExportDefaultDeclaration,
+ isExportNamedDeclaration,
+ isFunctionDeclaration,
+ isIdentifier,
+ isImportDeclaration,
+ isLiteral,
+ isMethod,
+ isModuleDeclaration,
+ isModuleSpecifier,
+ isObjectExpression,
+ isProperty,
+ isPureish,
+ isSuper,
+ isTaggedTemplateExpression,
+ isTemplateLiteral,
+ isThisExpression,
+ isUnaryExpression,
+ isVariableDeclaration,
+ matchesPattern,
+ memberExpression,
+ numericLiteral,
+ toIdentifier,
+ unaryExpression,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+
+function gatherNodeParts(node, parts) {
+ switch (node == null ? void 0 : node.type) {
+ default:
+ if (isModuleDeclaration(node)) {
+ if ((isExportAllDeclaration(node) || isExportNamedDeclaration(node) || isImportDeclaration(node)) && node.source) {
+ gatherNodeParts(node.source, parts);
+ } else if ((isExportNamedDeclaration(node) || isImportDeclaration(node)) && node.specifiers && node.specifiers.length) {
+ for (const e of node.specifiers) gatherNodeParts(e, parts);
+ } else if ((isExportDefaultDeclaration(node) || isExportNamedDeclaration(node)) && node.declaration) {
+ gatherNodeParts(node.declaration, parts);
+ }
+ } else if (isModuleSpecifier(node)) {
+ gatherNodeParts(node.local, parts);
+ } else if (isLiteral(node)) {
+ parts.push(node.value);
+ }
+
+ break;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ case "JSXMemberExpression":
+ gatherNodeParts(node.object, parts);
+ gatherNodeParts(node.property, parts);
+ break;
+
+ case "Identifier":
+ case "JSXIdentifier":
+ parts.push(node.name);
+ break;
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ case "NewExpression":
+ gatherNodeParts(node.callee, parts);
+ break;
+
+ case "ObjectExpression":
+ case "ObjectPattern":
+ for (const e of node.properties) {
+ gatherNodeParts(e, parts);
+ }
+
+ break;
+
+ case "SpreadElement":
+ case "RestElement":
+ gatherNodeParts(node.argument, parts);
+ break;
+
+ case "ObjectProperty":
+ case "ObjectMethod":
+ case "ClassProperty":
+ case "ClassMethod":
+ case "ClassPrivateProperty":
+ case "ClassPrivateMethod":
+ gatherNodeParts(node.key, parts);
+ break;
+
+ case "ThisExpression":
+ parts.push("this");
+ break;
+
+ case "Super":
+ parts.push("super");
+ break;
+
+ case "Import":
+ parts.push("import");
+ break;
+
+ case "DoExpression":
+ parts.push("do");
+ break;
+
+ case "YieldExpression":
+ parts.push("yield");
+ gatherNodeParts(node.argument, parts);
+ break;
+
+ case "AwaitExpression":
+ parts.push("await");
+ gatherNodeParts(node.argument, parts);
+ break;
+
+ case "AssignmentExpression":
+ gatherNodeParts(node.left, parts);
+ break;
+
+ case "VariableDeclarator":
+ gatherNodeParts(node.id, parts);
+ break;
+
+ case "FunctionExpression":
+ case "FunctionDeclaration":
+ case "ClassExpression":
+ case "ClassDeclaration":
+ gatherNodeParts(node.id, parts);
+ break;
+
+ case "PrivateName":
+ gatherNodeParts(node.id, parts);
+ break;
+
+ case "ParenthesizedExpression":
+ gatherNodeParts(node.expression, parts);
+ break;
+
+ case "UnaryExpression":
+ case "UpdateExpression":
+ gatherNodeParts(node.argument, parts);
+ break;
+
+ case "MetaProperty":
+ gatherNodeParts(node.meta, parts);
+ gatherNodeParts(node.property, parts);
+ break;
+
+ case "JSXElement":
+ gatherNodeParts(node.openingElement, parts);
+ break;
+
+ case "JSXOpeningElement":
+ parts.push(node.name);
+ break;
+
+ case "JSXFragment":
+ gatherNodeParts(node.openingFragment, parts);
+ break;
+
+ case "JSXOpeningFragment":
+ parts.push("Fragment");
+ break;
+
+ case "JSXNamespacedName":
+ gatherNodeParts(node.namespace, parts);
+ gatherNodeParts(node.name, parts);
+ break;
+ }
+}
+
+const collectorVisitor = {
+ ForStatement(path) {
+ const declar = path.get("init");
+
+ if (declar.isVar()) {
+ const {
+ scope
+ } = path;
+ const parentScope = scope.getFunctionParent() || scope.getProgramParent();
+ parentScope.registerBinding("var", declar);
+ }
+ },
+
+ Declaration(path) {
+ if (path.isBlockScoped()) return;
+ if (path.isImportDeclaration()) return;
+ if (path.isExportDeclaration()) return;
+ const parent = path.scope.getFunctionParent() || path.scope.getProgramParent();
+ parent.registerDeclaration(path);
+ },
+
+ ImportDeclaration(path) {
+ const parent = path.scope.getBlockParent();
+ parent.registerDeclaration(path);
+ },
+
+ ReferencedIdentifier(path, state) {
+ state.references.push(path);
+ },
+
+ ForXStatement(path, state) {
+ const left = path.get("left");
+
+ if (left.isPattern() || left.isIdentifier()) {
+ state.constantViolations.push(path);
+ } else if (left.isVar()) {
+ const {
+ scope
+ } = path;
+ const parentScope = scope.getFunctionParent() || scope.getProgramParent();
+ parentScope.registerBinding("var", left);
+ }
+ },
+
+ ExportDeclaration: {
+ exit(path) {
+ const {
+ node,
+ scope
+ } = path;
+ if (isExportAllDeclaration(node)) return;
+ const declar = node.declaration;
+
+ if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {
+ const id = declar.id;
+ if (!id) return;
+ const binding = scope.getBinding(id.name);
+ binding == null ? void 0 : binding.reference(path);
+ } else if (isVariableDeclaration(declar)) {
+ for (const decl of declar.declarations) {
+ for (const name of Object.keys(getBindingIdentifiers(decl))) {
+ const binding = scope.getBinding(name);
+ binding == null ? void 0 : binding.reference(path);
+ }
+ }
+ }
+ }
+
+ },
+
+ LabeledStatement(path) {
+ path.scope.getBlockParent().registerDeclaration(path);
+ },
+
+ AssignmentExpression(path, state) {
+ state.assignments.push(path);
+ },
+
+ UpdateExpression(path, state) {
+ state.constantViolations.push(path);
+ },
+
+ UnaryExpression(path, state) {
+ if (path.node.operator === "delete") {
+ state.constantViolations.push(path);
+ }
+ },
+
+ BlockScoped(path) {
+ let scope = path.scope;
+ if (scope.path === path) scope = scope.parent;
+ const parent = scope.getBlockParent();
+ parent.registerDeclaration(path);
+
+ if (path.isClassDeclaration() && path.node.id) {
+ const id = path.node.id;
+ const name = id.name;
+ path.scope.bindings[name] = path.scope.parent.getBinding(name);
+ }
+ },
+
+ CatchClause(path) {
+ path.scope.registerBinding("let", path);
+ },
+
+ Function(path) {
+ const params = path.get("params");
+
+ for (const param of params) {
+ path.scope.registerBinding("param", param);
+ }
+
+ if (path.isFunctionExpression() && path.has("id") && !path.get("id").node[NOT_LOCAL_BINDING]) {
+ path.scope.registerBinding("local", path.get("id"), path);
+ }
+ },
+
+ ClassExpression(path) {
+ if (path.has("id") && !path.get("id").node[NOT_LOCAL_BINDING]) {
+ path.scope.registerBinding("local", path);
+ }
+ }
+
+};
+let uid = 0;
+
+class Scope {
+ constructor(path) {
+ this.uid = void 0;
+ this.path = void 0;
+ this.block = void 0;
+ this.labels = void 0;
+ this.inited = void 0;
+ this.bindings = void 0;
+ this.references = void 0;
+ this.globals = void 0;
+ this.uids = void 0;
+ this.data = void 0;
+ this.crawling = void 0;
+ const {
+ node
+ } = path;
+
+ const cached = _cache.scope.get(node);
+
+ if ((cached == null ? void 0 : cached.path) === path) {
+ return cached;
+ }
+
+ _cache.scope.set(node, this);
+
+ this.uid = uid++;
+ this.block = node;
+ this.path = path;
+ this.labels = new Map();
+ this.inited = false;
+ }
+
+ get parent() {
+ var _parent;
+
+ let parent,
+ path = this.path;
+
+ do {
+ const isKey = path.key === "key";
+ path = path.parentPath;
+ if (isKey && path.isMethod()) path = path.parentPath;
+ if (path && path.isScope()) parent = path;
+ } while (path && !parent);
+
+ return (_parent = parent) == null ? void 0 : _parent.scope;
+ }
+
+ get parentBlock() {
+ return this.path.parent;
+ }
+
+ get hub() {
+ return this.path.hub;
+ }
+
+ traverse(node, opts, state) {
+ (0, _index.default)(node, opts, this, state, this.path);
+ }
+
+ generateDeclaredUidIdentifier(name) {
+ const id = this.generateUidIdentifier(name);
+ this.push({
+ id
+ });
+ return cloneNode(id);
+ }
+
+ generateUidIdentifier(name) {
+ return identifier(this.generateUid(name));
+ }
+
+ generateUid(name = "temp") {
+ name = toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
+ let uid;
+ let i = 1;
+
+ do {
+ uid = this._generateUid(name, i);
+ i++;
+ } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid));
+
+ const program = this.getProgramParent();
+ program.references[uid] = true;
+ program.uids[uid] = true;
+ return uid;
+ }
+
+ _generateUid(name, i) {
+ let id = name;
+ if (i > 1) id += i;
+ return `_${id}`;
+ }
+
+ generateUidBasedOnNode(node, defaultName) {
+ const parts = [];
+ gatherNodeParts(node, parts);
+ let id = parts.join("$");
+ id = id.replace(/^_/, "") || defaultName || "ref";
+ return this.generateUid(id.slice(0, 20));
+ }
+
+ generateUidIdentifierBasedOnNode(node, defaultName) {
+ return identifier(this.generateUidBasedOnNode(node, defaultName));
+ }
+
+ isStatic(node) {
+ if (isThisExpression(node) || isSuper(node)) {
+ return true;
+ }
+
+ if (isIdentifier(node)) {
+ const binding = this.getBinding(node.name);
+
+ if (binding) {
+ return binding.constant;
+ } else {
+ return this.hasBinding(node.name);
+ }
+ }
+
+ return false;
+ }
+
+ maybeGenerateMemoised(node, dontPush) {
+ if (this.isStatic(node)) {
+ return null;
+ } else {
+ const id = this.generateUidIdentifierBasedOnNode(node);
+
+ if (!dontPush) {
+ this.push({
+ id
+ });
+ return cloneNode(id);
+ }
+
+ return id;
+ }
+ }
+
+ checkBlockScopedCollisions(local, kind, name, id) {
+ if (kind === "param") return;
+ if (local.kind === "local") return;
+ const duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module" || local.kind === "param" && (kind === "let" || kind === "const");
+
+ if (duplicate) {
+ throw this.hub.buildError(id, `Duplicate declaration "${name}"`, TypeError);
+ }
+ }
+
+ rename(oldName, newName, block) {
+ const binding = this.getBinding(oldName);
+
+ if (binding) {
+ newName = newName || this.generateUidIdentifier(oldName).name;
+ return new _renamer.default(binding, oldName, newName).rename(block);
+ }
+ }
+
+ _renameFromMap(map, oldName, newName, value) {
+ if (map[oldName]) {
+ map[newName] = value;
+ map[oldName] = null;
+ }
+ }
+
+ dump() {
+ const sep = "-".repeat(60);
+ console.log(sep);
+ let scope = this;
+
+ do {
+ console.log("#", scope.block.type);
+
+ for (const name of Object.keys(scope.bindings)) {
+ const binding = scope.bindings[name];
+ console.log(" -", name, {
+ constant: binding.constant,
+ references: binding.references,
+ violations: binding.constantViolations.length,
+ kind: binding.kind
+ });
+ }
+ } while (scope = scope.parent);
+
+ console.log(sep);
+ }
+
+ toArray(node, i, arrayLikeIsIterable) {
+ if (isIdentifier(node)) {
+ const binding = this.getBinding(node.name);
+
+ if (binding != null && binding.constant && binding.path.isGenericType("Array")) {
+ return node;
+ }
+ }
+
+ if (isArrayExpression(node)) {
+ return node;
+ }
+
+ if (isIdentifier(node, {
+ name: "arguments"
+ })) {
+ return callExpression(memberExpression(memberExpression(memberExpression(identifier("Array"), identifier("prototype")), identifier("slice")), identifier("call")), [node]);
+ }
+
+ let helperName;
+ const args = [node];
+
+ if (i === true) {
+ helperName = "toConsumableArray";
+ } else if (i) {
+ args.push(numericLiteral(i));
+ helperName = "slicedToArray";
+ } else {
+ helperName = "toArray";
+ }
+
+ if (arrayLikeIsIterable) {
+ args.unshift(this.hub.addHelper(helperName));
+ helperName = "maybeArrayLike";
+ }
+
+ return callExpression(this.hub.addHelper(helperName), args);
+ }
+
+ hasLabel(name) {
+ return !!this.getLabel(name);
+ }
+
+ getLabel(name) {
+ return this.labels.get(name);
+ }
+
+ registerLabel(path) {
+ this.labels.set(path.node.label.name, path);
+ }
+
+ registerDeclaration(path) {
+ if (path.isLabeledStatement()) {
+ this.registerLabel(path);
+ } else if (path.isFunctionDeclaration()) {
+ this.registerBinding("hoisted", path.get("id"), path);
+ } else if (path.isVariableDeclaration()) {
+ const declarations = path.get("declarations");
+
+ for (const declar of declarations) {
+ this.registerBinding(path.node.kind, declar);
+ }
+ } else if (path.isClassDeclaration()) {
+ this.registerBinding("let", path);
+ } else if (path.isImportDeclaration()) {
+ const specifiers = path.get("specifiers");
+
+ for (const specifier of specifiers) {
+ this.registerBinding("module", specifier);
+ }
+ } else if (path.isExportDeclaration()) {
+ const declar = path.get("declaration");
+
+ if (declar.isClassDeclaration() || declar.isFunctionDeclaration() || declar.isVariableDeclaration()) {
+ this.registerDeclaration(declar);
+ }
+ } else {
+ this.registerBinding("unknown", path);
+ }
+ }
+
+ buildUndefinedNode() {
+ return unaryExpression("void", numericLiteral(0), true);
+ }
+
+ registerConstantViolation(path) {
+ const ids = path.getBindingIdentifiers();
+
+ for (const name of Object.keys(ids)) {
+ const binding = this.getBinding(name);
+ if (binding) binding.reassign(path);
+ }
+ }
+
+ registerBinding(kind, path, bindingPath = path) {
+ if (!kind) throw new ReferenceError("no `kind`");
+
+ if (path.isVariableDeclaration()) {
+ const declarators = path.get("declarations");
+
+ for (const declar of declarators) {
+ this.registerBinding(kind, declar);
+ }
+
+ return;
+ }
+
+ const parent = this.getProgramParent();
+ const ids = path.getOuterBindingIdentifiers(true);
+
+ for (const name of Object.keys(ids)) {
+ parent.references[name] = true;
+
+ for (const id of ids[name]) {
+ const local = this.getOwnBinding(name);
+
+ if (local) {
+ if (local.identifier === id) continue;
+ this.checkBlockScopedCollisions(local, kind, name, id);
+ }
+
+ if (local) {
+ this.registerConstantViolation(bindingPath);
+ } else {
+ this.bindings[name] = new _binding.default({
+ identifier: id,
+ scope: this,
+ path: bindingPath,
+ kind: kind
+ });
+ }
+ }
+ }
+ }
+
+ addGlobal(node) {
+ this.globals[node.name] = node;
+ }
+
+ hasUid(name) {
+ let scope = this;
+
+ do {
+ if (scope.uids[name]) return true;
+ } while (scope = scope.parent);
+
+ return false;
+ }
+
+ hasGlobal(name) {
+ let scope = this;
+
+ do {
+ if (scope.globals[name]) return true;
+ } while (scope = scope.parent);
+
+ return false;
+ }
+
+ hasReference(name) {
+ return !!this.getProgramParent().references[name];
+ }
+
+ isPure(node, constantsOnly) {
+ if (isIdentifier(node)) {
+ const binding = this.getBinding(node.name);
+ if (!binding) return false;
+ if (constantsOnly) return binding.constant;
+ return true;
+ } else if (isClass(node)) {
+ if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {
+ return false;
+ }
+
+ return this.isPure(node.body, constantsOnly);
+ } else if (isClassBody(node)) {
+ for (const method of node.body) {
+ if (!this.isPure(method, constantsOnly)) return false;
+ }
+
+ return true;
+ } else if (isBinary(node)) {
+ return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly);
+ } else if (isArrayExpression(node)) {
+ for (const elem of node.elements) {
+ if (!this.isPure(elem, constantsOnly)) return false;
+ }
+
+ return true;
+ } else if (isObjectExpression(node)) {
+ for (const prop of node.properties) {
+ if (!this.isPure(prop, constantsOnly)) return false;
+ }
+
+ return true;
+ } else if (isMethod(node)) {
+ if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
+ if (node.kind === "get" || node.kind === "set") return false;
+ return true;
+ } else if (isProperty(node)) {
+ if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
+ return this.isPure(node.value, constantsOnly);
+ } else if (isUnaryExpression(node)) {
+ return this.isPure(node.argument, constantsOnly);
+ } else if (isTaggedTemplateExpression(node)) {
+ return matchesPattern(node.tag, "String.raw") && !this.hasBinding("String", true) && this.isPure(node.quasi, constantsOnly);
+ } else if (isTemplateLiteral(node)) {
+ for (const expression of node.expressions) {
+ if (!this.isPure(expression, constantsOnly)) return false;
+ }
+
+ return true;
+ } else {
+ return isPureish(node);
+ }
+ }
+
+ setData(key, val) {
+ return this.data[key] = val;
+ }
+
+ getData(key) {
+ let scope = this;
+
+ do {
+ const data = scope.data[key];
+ if (data != null) return data;
+ } while (scope = scope.parent);
+ }
+
+ removeData(key) {
+ let scope = this;
+
+ do {
+ const data = scope.data[key];
+ if (data != null) scope.data[key] = null;
+ } while (scope = scope.parent);
+ }
+
+ init() {
+ if (!this.inited) {
+ this.inited = true;
+ this.crawl();
+ }
+ }
+
+ crawl() {
+ const path = this.path;
+ this.references = Object.create(null);
+ this.bindings = Object.create(null);
+ this.globals = Object.create(null);
+ this.uids = Object.create(null);
+ this.data = Object.create(null);
+ const programParent = this.getProgramParent();
+ if (programParent.crawling) return;
+ const state = {
+ references: [],
+ constantViolations: [],
+ assignments: []
+ };
+ this.crawling = true;
+
+ if (path.type !== "Program" && collectorVisitor._exploded) {
+ for (const visit of collectorVisitor.enter) {
+ visit(path, state);
+ }
+
+ const typeVisitors = collectorVisitor[path.type];
+
+ if (typeVisitors) {
+ for (const visit of typeVisitors.enter) {
+ visit(path, state);
+ }
+ }
+ }
+
+ path.traverse(collectorVisitor, state);
+ this.crawling = false;
+
+ for (const path of state.assignments) {
+ const ids = path.getBindingIdentifiers();
+
+ for (const name of Object.keys(ids)) {
+ if (path.scope.getBinding(name)) continue;
+ programParent.addGlobal(ids[name]);
+ }
+
+ path.scope.registerConstantViolation(path);
+ }
+
+ for (const ref of state.references) {
+ const binding = ref.scope.getBinding(ref.node.name);
+
+ if (binding) {
+ binding.reference(ref);
+ } else {
+ programParent.addGlobal(ref.node);
+ }
+ }
+
+ for (const path of state.constantViolations) {
+ path.scope.registerConstantViolation(path);
+ }
+ }
+
+ push(opts) {
+ let path = this.path;
+
+ if (!path.isBlockStatement() && !path.isProgram()) {
+ path = this.getBlockParent().path;
+ }
+
+ if (path.isSwitchStatement()) {
+ path = (this.getFunctionParent() || this.getProgramParent()).path;
+ }
+
+ if (path.isLoop() || path.isCatchClause() || path.isFunction()) {
+ path.ensureBlock();
+ path = path.get("body");
+ }
+
+ const unique = opts.unique;
+ const kind = opts.kind || "var";
+ const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;
+ const dataKey = `declaration:${kind}:${blockHoist}`;
+ let declarPath = !unique && path.getData(dataKey);
+
+ if (!declarPath) {
+ const declar = variableDeclaration(kind, []);
+ declar._blockHoist = blockHoist;
+ [declarPath] = path.unshiftContainer("body", [declar]);
+ if (!unique) path.setData(dataKey, declarPath);
+ }
+
+ const declarator = variableDeclarator(opts.id, opts.init);
+ declarPath.node.declarations.push(declarator);
+ this.registerBinding(kind, declarPath.get("declarations").pop());
+ }
+
+ getProgramParent() {
+ let scope = this;
+
+ do {
+ if (scope.path.isProgram()) {
+ return scope;
+ }
+ } while (scope = scope.parent);
+
+ throw new Error("Couldn't find a Program");
+ }
+
+ getFunctionParent() {
+ let scope = this;
+
+ do {
+ if (scope.path.isFunctionParent()) {
+ return scope;
+ }
+ } while (scope = scope.parent);
+
+ return null;
+ }
+
+ getBlockParent() {
+ let scope = this;
+
+ do {
+ if (scope.path.isBlockParent()) {
+ return scope;
+ }
+ } while (scope = scope.parent);
+
+ throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...");
+ }
+
+ getAllBindings() {
+ const ids = Object.create(null);
+ let scope = this;
+
+ do {
+ for (const key of Object.keys(scope.bindings)) {
+ if (key in ids === false) {
+ ids[key] = scope.bindings[key];
+ }
+ }
+
+ scope = scope.parent;
+ } while (scope);
+
+ return ids;
+ }
+
+ getAllBindingsOfKind(...kinds) {
+ const ids = Object.create(null);
+
+ for (const kind of kinds) {
+ let scope = this;
+
+ do {
+ for (const name of Object.keys(scope.bindings)) {
+ const binding = scope.bindings[name];
+ if (binding.kind === kind) ids[name] = binding;
+ }
+
+ scope = scope.parent;
+ } while (scope);
+ }
+
+ return ids;
+ }
+
+ bindingIdentifierEquals(name, node) {
+ return this.getBindingIdentifier(name) === node;
+ }
+
+ getBinding(name) {
+ let scope = this;
+ let previousPath;
+
+ do {
+ const binding = scope.getOwnBinding(name);
+
+ if (binding) {
+ var _previousPath;
+
+ if ((_previousPath = previousPath) != null && _previousPath.isPattern() && binding.kind !== "param" && binding.kind !== "local") {} else {
+ return binding;
+ }
+ }
+
+ previousPath = scope.path;
+ } while (scope = scope.parent);
+ }
+
+ getOwnBinding(name) {
+ return this.bindings[name];
+ }
+
+ getBindingIdentifier(name) {
+ var _this$getBinding;
+
+ return (_this$getBinding = this.getBinding(name)) == null ? void 0 : _this$getBinding.identifier;
+ }
+
+ getOwnBindingIdentifier(name) {
+ const binding = this.bindings[name];
+ return binding == null ? void 0 : binding.identifier;
+ }
+
+ hasOwnBinding(name) {
+ return !!this.getOwnBinding(name);
+ }
+
+ hasBinding(name, noGlobals) {
+ if (!name) return false;
+ if (this.hasOwnBinding(name)) return true;
+ if (this.parentHasBinding(name, noGlobals)) return true;
+ if (this.hasUid(name)) return true;
+ if (!noGlobals && Scope.globals.includes(name)) return true;
+ if (!noGlobals && Scope.contextVariables.includes(name)) return true;
+ return false;
+ }
+
+ parentHasBinding(name, noGlobals) {
+ var _this$parent;
+
+ return (_this$parent = this.parent) == null ? void 0 : _this$parent.hasBinding(name, noGlobals);
+ }
+
+ moveBindingTo(name, scope) {
+ const info = this.getBinding(name);
+
+ if (info) {
+ info.scope.removeOwnBinding(name);
+ info.scope = scope;
+ scope.bindings[name] = info;
+ }
+ }
+
+ removeOwnBinding(name) {
+ delete this.bindings[name];
+ }
+
+ removeBinding(name) {
+ var _this$getBinding2;
+
+ (_this$getBinding2 = this.getBinding(name)) == null ? void 0 : _this$getBinding2.scope.removeOwnBinding(name);
+ let scope = this;
+
+ do {
+ if (scope.uids[name]) {
+ scope.uids[name] = false;
+ }
+ } while (scope = scope.parent);
+ }
+
+}
+
+exports.default = Scope;
+Scope.globals = Object.keys(_globals.builtin);
+Scope.contextVariables = ["arguments", "undefined", "Infinity", "NaN"]; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js
new file mode 100644
index 0000000000..f11bbb7006
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/lib/renamer.js
@@ -0,0 +1,146 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _binding = require("../binding");
+
+var _helperSplitExportDeclaration = require("@babel/helper-split-export-declaration");
+
+var _t = require("@babel/types");
+
+const {
+ VISITOR_KEYS,
+ assignmentExpression,
+ identifier,
+ toExpression,
+ variableDeclaration,
+ variableDeclarator
+} = _t;
+const renameVisitor = {
+ ReferencedIdentifier({
+ node
+ }, state) {
+ if (node.name === state.oldName) {
+ node.name = state.newName;
+ }
+ },
+
+ Scope(path, state) {
+ if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) {
+ skipAllButComputedMethodKey(path);
+ }
+ },
+
+ "AssignmentExpression|Declaration|VariableDeclarator"(path, state) {
+ if (path.isVariableDeclaration()) return;
+ const ids = path.getOuterBindingIdentifiers();
+
+ for (const name in ids) {
+ if (name === state.oldName) ids[name].name = state.newName;
+ }
+ }
+
+};
+
+class Renamer {
+ constructor(binding, oldName, newName) {
+ this.newName = newName;
+ this.oldName = oldName;
+ this.binding = binding;
+ }
+
+ maybeConvertFromExportDeclaration(parentDeclar) {
+ const maybeExportDeclar = parentDeclar.parentPath;
+
+ if (!maybeExportDeclar.isExportDeclaration()) {
+ return;
+ }
+
+ if (maybeExportDeclar.isExportDefaultDeclaration() && !maybeExportDeclar.get("declaration").node.id) {
+ return;
+ }
+
+ (0, _helperSplitExportDeclaration.default)(maybeExportDeclar);
+ }
+
+ maybeConvertFromClassFunctionDeclaration(path) {
+ return;
+ if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return;
+ if (this.binding.kind !== "hoisted") return;
+ path.node.id = identifier(this.oldName);
+ path.node._blockHoist = 3;
+ path.replaceWith(variableDeclaration("let", [variableDeclarator(identifier(this.newName), toExpression(path.node))]));
+ }
+
+ maybeConvertFromClassFunctionExpression(path) {
+ return;
+ if (!path.isFunctionExpression() && !path.isClassExpression()) return;
+ if (this.binding.kind !== "local") return;
+ path.node.id = identifier(this.oldName);
+ this.binding.scope.parent.push({
+ id: identifier(this.newName)
+ });
+ path.replaceWith(assignmentExpression("=", identifier(this.newName), path.node));
+ }
+
+ rename(block) {
+ const {
+ binding,
+ oldName,
+ newName
+ } = this;
+ const {
+ scope,
+ path
+ } = binding;
+ const parentDeclar = path.find(path => path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression());
+
+ if (parentDeclar) {
+ const bindingIds = parentDeclar.getOuterBindingIdentifiers();
+
+ if (bindingIds[oldName] === binding.identifier) {
+ this.maybeConvertFromExportDeclaration(parentDeclar);
+ }
+ }
+
+ const blockToTraverse = block || scope.block;
+
+ if ((blockToTraverse == null ? void 0 : blockToTraverse.type) === "SwitchStatement") {
+ blockToTraverse.cases.forEach(c => {
+ scope.traverse(c, renameVisitor, this);
+ });
+ } else {
+ scope.traverse(blockToTraverse, renameVisitor, this);
+ }
+
+ if (!block) {
+ scope.removeOwnBinding(oldName);
+ scope.bindings[newName] = binding;
+ this.binding.identifier.name = newName;
+ }
+
+ if (parentDeclar) {
+ this.maybeConvertFromClassFunctionDeclaration(parentDeclar);
+ this.maybeConvertFromClassFunctionExpression(parentDeclar);
+ }
+ }
+
+}
+
+exports.default = Renamer;
+
+function skipAllButComputedMethodKey(path) {
+ if (!path.isMethod() || !path.node.computed) {
+ path.skip();
+ return;
+ }
+
+ const keys = VISITOR_KEYS[path.type];
+
+ for (const key of keys) {
+ if (key !== "key") path.skipKey(key);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/types.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/types.js
new file mode 100644
index 0000000000..ec17ee62fc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/types.js
@@ -0,0 +1,5 @@
+"use strict";
+
+var _index = require("./index");
+
+var _virtualTypes = require("./path/generated/virtual-types"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/visitors.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/visitors.js
new file mode 100644
index 0000000000..81d6335771
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/visitors.js
@@ -0,0 +1,242 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.explode = explode;
+exports.merge = merge;
+exports.verify = verify;
+
+var virtualTypes = require("./path/lib/virtual-types");
+
+var _t = require("@babel/types");
+
+const {
+ DEPRECATED_KEYS,
+ FLIPPED_ALIAS_KEYS,
+ TYPES
+} = _t;
+
+function explode(visitor) {
+ if (visitor._exploded) return visitor;
+ visitor._exploded = true;
+
+ for (const nodeType of Object.keys(visitor)) {
+ if (shouldIgnoreKey(nodeType)) continue;
+ const parts = nodeType.split("|");
+ if (parts.length === 1) continue;
+ const fns = visitor[nodeType];
+ delete visitor[nodeType];
+
+ for (const part of parts) {
+ visitor[part] = fns;
+ }
+ }
+
+ verify(visitor);
+ delete visitor.__esModule;
+ ensureEntranceObjects(visitor);
+ ensureCallbackArrays(visitor);
+
+ for (const nodeType of Object.keys(visitor)) {
+ if (shouldIgnoreKey(nodeType)) continue;
+ const wrapper = virtualTypes[nodeType];
+ if (!wrapper) continue;
+ const fns = visitor[nodeType];
+
+ for (const type of Object.keys(fns)) {
+ fns[type] = wrapCheck(wrapper, fns[type]);
+ }
+
+ delete visitor[nodeType];
+
+ if (wrapper.types) {
+ for (const type of wrapper.types) {
+ if (visitor[type]) {
+ mergePair(visitor[type], fns);
+ } else {
+ visitor[type] = fns;
+ }
+ }
+ } else {
+ mergePair(visitor, fns);
+ }
+ }
+
+ for (const nodeType of Object.keys(visitor)) {
+ if (shouldIgnoreKey(nodeType)) continue;
+ const fns = visitor[nodeType];
+ let aliases = FLIPPED_ALIAS_KEYS[nodeType];
+ const deprecatedKey = DEPRECATED_KEYS[nodeType];
+
+ if (deprecatedKey) {
+ console.trace(`Visitor defined for ${nodeType} but it has been renamed to ${deprecatedKey}`);
+ aliases = [deprecatedKey];
+ }
+
+ if (!aliases) continue;
+ delete visitor[nodeType];
+
+ for (const alias of aliases) {
+ const existing = visitor[alias];
+
+ if (existing) {
+ mergePair(existing, fns);
+ } else {
+ visitor[alias] = Object.assign({}, fns);
+ }
+ }
+ }
+
+ for (const nodeType of Object.keys(visitor)) {
+ if (shouldIgnoreKey(nodeType)) continue;
+ ensureCallbackArrays(visitor[nodeType]);
+ }
+
+ return visitor;
+}
+
+function verify(visitor) {
+ if (visitor._verified) return;
+
+ if (typeof visitor === "function") {
+ throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?");
+ }
+
+ for (const nodeType of Object.keys(visitor)) {
+ if (nodeType === "enter" || nodeType === "exit") {
+ validateVisitorMethods(nodeType, visitor[nodeType]);
+ }
+
+ if (shouldIgnoreKey(nodeType)) continue;
+
+ if (TYPES.indexOf(nodeType) < 0) {
+ throw new Error(`You gave us a visitor for the node type ${nodeType} but it's not a valid type`);
+ }
+
+ const visitors = visitor[nodeType];
+
+ if (typeof visitors === "object") {
+ for (const visitorKey of Object.keys(visitors)) {
+ if (visitorKey === "enter" || visitorKey === "exit") {
+ validateVisitorMethods(`${nodeType}.${visitorKey}`, visitors[visitorKey]);
+ } else {
+ throw new Error("You passed `traverse()` a visitor object with the property " + `${nodeType} that has the invalid property ${visitorKey}`);
+ }
+ }
+ }
+ }
+
+ visitor._verified = true;
+}
+
+function validateVisitorMethods(path, val) {
+ const fns = [].concat(val);
+
+ for (const fn of fns) {
+ if (typeof fn !== "function") {
+ throw new TypeError(`Non-function found defined in ${path} with type ${typeof fn}`);
+ }
+ }
+}
+
+function merge(visitors, states = [], wrapper) {
+ const rootVisitor = {};
+
+ for (let i = 0; i < visitors.length; i++) {
+ const visitor = visitors[i];
+ const state = states[i];
+ explode(visitor);
+
+ for (const type of Object.keys(visitor)) {
+ let visitorType = visitor[type];
+
+ if (state || wrapper) {
+ visitorType = wrapWithStateOrWrapper(visitorType, state, wrapper);
+ }
+
+ const nodeVisitor = rootVisitor[type] = rootVisitor[type] || {};
+ mergePair(nodeVisitor, visitorType);
+ }
+ }
+
+ return rootVisitor;
+}
+
+function wrapWithStateOrWrapper(oldVisitor, state, wrapper) {
+ const newVisitor = {};
+
+ for (const key of Object.keys(oldVisitor)) {
+ let fns = oldVisitor[key];
+ if (!Array.isArray(fns)) continue;
+ fns = fns.map(function (fn) {
+ let newFn = fn;
+
+ if (state) {
+ newFn = function (path) {
+ return fn.call(state, path, state);
+ };
+ }
+
+ if (wrapper) {
+ newFn = wrapper(state.key, key, newFn);
+ }
+
+ if (newFn !== fn) {
+ newFn.toString = () => fn.toString();
+ }
+
+ return newFn;
+ });
+ newVisitor[key] = fns;
+ }
+
+ return newVisitor;
+}
+
+function ensureEntranceObjects(obj) {
+ for (const key of Object.keys(obj)) {
+ if (shouldIgnoreKey(key)) continue;
+ const fns = obj[key];
+
+ if (typeof fns === "function") {
+ obj[key] = {
+ enter: fns
+ };
+ }
+ }
+}
+
+function ensureCallbackArrays(obj) {
+ if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
+ if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
+}
+
+function wrapCheck(wrapper, fn) {
+ const newFn = function (path) {
+ if (wrapper.checkPath(path)) {
+ return fn.apply(this, arguments);
+ }
+ };
+
+ newFn.toString = () => fn.toString();
+
+ return newFn;
+}
+
+function shouldIgnoreKey(key) {
+ if (key[0] === "_") return true;
+ if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
+
+ if (key === "denylist" || key === "noScope" || key === "skipKeys" || key === "blacklist") {
+ return true;
+ }
+
+ return false;
+}
+
+function mergePair(dest, src) {
+ for (const key of Object.keys(src)) {
+ dest[key] = [].concat(dest[key] || [], src[key]);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/globals.json b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/globals.json
new file mode 100644
index 0000000000..6f5ac02f1e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/globals.json
@@ -0,0 +1,1563 @@
+{
+ "builtin": {
+ "Array": false,
+ "ArrayBuffer": false,
+ "Atomics": false,
+ "BigInt": false,
+ "BigInt64Array": false,
+ "BigUint64Array": false,
+ "Boolean": false,
+ "constructor": false,
+ "DataView": false,
+ "Date": false,
+ "decodeURI": false,
+ "decodeURIComponent": false,
+ "encodeURI": false,
+ "encodeURIComponent": false,
+ "Error": false,
+ "escape": false,
+ "eval": false,
+ "EvalError": false,
+ "Float32Array": false,
+ "Float64Array": false,
+ "Function": false,
+ "globalThis": false,
+ "hasOwnProperty": false,
+ "Infinity": false,
+ "Int16Array": false,
+ "Int32Array": false,
+ "Int8Array": false,
+ "isFinite": false,
+ "isNaN": false,
+ "isPrototypeOf": false,
+ "JSON": false,
+ "Map": false,
+ "Math": false,
+ "NaN": false,
+ "Number": false,
+ "Object": false,
+ "parseFloat": false,
+ "parseInt": false,
+ "Promise": false,
+ "propertyIsEnumerable": false,
+ "Proxy": false,
+ "RangeError": false,
+ "ReferenceError": false,
+ "Reflect": false,
+ "RegExp": false,
+ "Set": false,
+ "SharedArrayBuffer": false,
+ "String": false,
+ "Symbol": false,
+ "SyntaxError": false,
+ "toLocaleString": false,
+ "toString": false,
+ "TypeError": false,
+ "Uint16Array": false,
+ "Uint32Array": false,
+ "Uint8Array": false,
+ "Uint8ClampedArray": false,
+ "undefined": false,
+ "unescape": false,
+ "URIError": false,
+ "valueOf": false,
+ "WeakMap": false,
+ "WeakSet": false
+ },
+ "es5": {
+ "Array": false,
+ "Boolean": false,
+ "constructor": false,
+ "Date": false,
+ "decodeURI": false,
+ "decodeURIComponent": false,
+ "encodeURI": false,
+ "encodeURIComponent": false,
+ "Error": false,
+ "escape": false,
+ "eval": false,
+ "EvalError": false,
+ "Function": false,
+ "hasOwnProperty": false,
+ "Infinity": false,
+ "isFinite": false,
+ "isNaN": false,
+ "isPrototypeOf": false,
+ "JSON": false,
+ "Math": false,
+ "NaN": false,
+ "Number": false,
+ "Object": false,
+ "parseFloat": false,
+ "parseInt": false,
+ "propertyIsEnumerable": false,
+ "RangeError": false,
+ "ReferenceError": false,
+ "RegExp": false,
+ "String": false,
+ "SyntaxError": false,
+ "toLocaleString": false,
+ "toString": false,
+ "TypeError": false,
+ "undefined": false,
+ "unescape": false,
+ "URIError": false,
+ "valueOf": false
+ },
+ "es2015": {
+ "Array": false,
+ "ArrayBuffer": false,
+ "Boolean": false,
+ "constructor": false,
+ "DataView": false,
+ "Date": false,
+ "decodeURI": false,
+ "decodeURIComponent": false,
+ "encodeURI": false,
+ "encodeURIComponent": false,
+ "Error": false,
+ "escape": false,
+ "eval": false,
+ "EvalError": false,
+ "Float32Array": false,
+ "Float64Array": false,
+ "Function": false,
+ "hasOwnProperty": false,
+ "Infinity": false,
+ "Int16Array": false,
+ "Int32Array": false,
+ "Int8Array": false,
+ "isFinite": false,
+ "isNaN": false,
+ "isPrototypeOf": false,
+ "JSON": false,
+ "Map": false,
+ "Math": false,
+ "NaN": false,
+ "Number": false,
+ "Object": false,
+ "parseFloat": false,
+ "parseInt": false,
+ "Promise": false,
+ "propertyIsEnumerable": false,
+ "Proxy": false,
+ "RangeError": false,
+ "ReferenceError": false,
+ "Reflect": false,
+ "RegExp": false,
+ "Set": false,
+ "String": false,
+ "Symbol": false,
+ "SyntaxError": false,
+ "toLocaleString": false,
+ "toString": false,
+ "TypeError": false,
+ "Uint16Array": false,
+ "Uint32Array": false,
+ "Uint8Array": false,
+ "Uint8ClampedArray": false,
+ "undefined": false,
+ "unescape": false,
+ "URIError": false,
+ "valueOf": false,
+ "WeakMap": false,
+ "WeakSet": false
+ },
+ "es2017": {
+ "Array": false,
+ "ArrayBuffer": false,
+ "Atomics": false,
+ "Boolean": false,
+ "constructor": false,
+ "DataView": false,
+ "Date": false,
+ "decodeURI": false,
+ "decodeURIComponent": false,
+ "encodeURI": false,
+ "encodeURIComponent": false,
+ "Error": false,
+ "escape": false,
+ "eval": false,
+ "EvalError": false,
+ "Float32Array": false,
+ "Float64Array": false,
+ "Function": false,
+ "hasOwnProperty": false,
+ "Infinity": false,
+ "Int16Array": false,
+ "Int32Array": false,
+ "Int8Array": false,
+ "isFinite": false,
+ "isNaN": false,
+ "isPrototypeOf": false,
+ "JSON": false,
+ "Map": false,
+ "Math": false,
+ "NaN": false,
+ "Number": false,
+ "Object": false,
+ "parseFloat": false,
+ "parseInt": false,
+ "Promise": false,
+ "propertyIsEnumerable": false,
+ "Proxy": false,
+ "RangeError": false,
+ "ReferenceError": false,
+ "Reflect": false,
+ "RegExp": false,
+ "Set": false,
+ "SharedArrayBuffer": false,
+ "String": false,
+ "Symbol": false,
+ "SyntaxError": false,
+ "toLocaleString": false,
+ "toString": false,
+ "TypeError": false,
+ "Uint16Array": false,
+ "Uint32Array": false,
+ "Uint8Array": false,
+ "Uint8ClampedArray": false,
+ "undefined": false,
+ "unescape": false,
+ "URIError": false,
+ "valueOf": false,
+ "WeakMap": false,
+ "WeakSet": false
+ },
+ "browser": {
+ "AbortController": false,
+ "AbortSignal": false,
+ "addEventListener": false,
+ "alert": false,
+ "AnalyserNode": false,
+ "Animation": false,
+ "AnimationEffectReadOnly": false,
+ "AnimationEffectTiming": false,
+ "AnimationEffectTimingReadOnly": false,
+ "AnimationEvent": false,
+ "AnimationPlaybackEvent": false,
+ "AnimationTimeline": false,
+ "applicationCache": false,
+ "ApplicationCache": false,
+ "ApplicationCacheErrorEvent": false,
+ "atob": false,
+ "Attr": false,
+ "Audio": false,
+ "AudioBuffer": false,
+ "AudioBufferSourceNode": false,
+ "AudioContext": false,
+ "AudioDestinationNode": false,
+ "AudioListener": false,
+ "AudioNode": false,
+ "AudioParam": false,
+ "AudioProcessingEvent": false,
+ "AudioScheduledSourceNode": false,
+ "AudioWorkletGlobalScope ": false,
+ "AudioWorkletNode": false,
+ "AudioWorkletProcessor": false,
+ "BarProp": false,
+ "BaseAudioContext": false,
+ "BatteryManager": false,
+ "BeforeUnloadEvent": false,
+ "BiquadFilterNode": false,
+ "Blob": false,
+ "BlobEvent": false,
+ "blur": false,
+ "BroadcastChannel": false,
+ "btoa": false,
+ "BudgetService": false,
+ "ByteLengthQueuingStrategy": false,
+ "Cache": false,
+ "caches": false,
+ "CacheStorage": false,
+ "cancelAnimationFrame": false,
+ "cancelIdleCallback": false,
+ "CanvasCaptureMediaStreamTrack": false,
+ "CanvasGradient": false,
+ "CanvasPattern": false,
+ "CanvasRenderingContext2D": false,
+ "ChannelMergerNode": false,
+ "ChannelSplitterNode": false,
+ "CharacterData": false,
+ "clearInterval": false,
+ "clearTimeout": false,
+ "clientInformation": false,
+ "ClipboardEvent": false,
+ "close": false,
+ "closed": false,
+ "CloseEvent": false,
+ "Comment": false,
+ "CompositionEvent": false,
+ "confirm": false,
+ "console": false,
+ "ConstantSourceNode": false,
+ "ConvolverNode": false,
+ "CountQueuingStrategy": false,
+ "createImageBitmap": false,
+ "Credential": false,
+ "CredentialsContainer": false,
+ "crypto": false,
+ "Crypto": false,
+ "CryptoKey": false,
+ "CSS": false,
+ "CSSConditionRule": false,
+ "CSSFontFaceRule": false,
+ "CSSGroupingRule": false,
+ "CSSImportRule": false,
+ "CSSKeyframeRule": false,
+ "CSSKeyframesRule": false,
+ "CSSMediaRule": false,
+ "CSSNamespaceRule": false,
+ "CSSPageRule": false,
+ "CSSRule": false,
+ "CSSRuleList": false,
+ "CSSStyleDeclaration": false,
+ "CSSStyleRule": false,
+ "CSSStyleSheet": false,
+ "CSSSupportsRule": false,
+ "CustomElementRegistry": false,
+ "customElements": false,
+ "CustomEvent": false,
+ "DataTransfer": false,
+ "DataTransferItem": false,
+ "DataTransferItemList": false,
+ "defaultstatus": false,
+ "defaultStatus": false,
+ "DelayNode": false,
+ "DeviceMotionEvent": false,
+ "DeviceOrientationEvent": false,
+ "devicePixelRatio": false,
+ "dispatchEvent": false,
+ "document": false,
+ "Document": false,
+ "DocumentFragment": false,
+ "DocumentType": false,
+ "DOMError": false,
+ "DOMException": false,
+ "DOMImplementation": false,
+ "DOMMatrix": false,
+ "DOMMatrixReadOnly": false,
+ "DOMParser": false,
+ "DOMPoint": false,
+ "DOMPointReadOnly": false,
+ "DOMQuad": false,
+ "DOMRect": false,
+ "DOMRectReadOnly": false,
+ "DOMStringList": false,
+ "DOMStringMap": false,
+ "DOMTokenList": false,
+ "DragEvent": false,
+ "DynamicsCompressorNode": false,
+ "Element": false,
+ "ErrorEvent": false,
+ "event": false,
+ "Event": false,
+ "EventSource": false,
+ "EventTarget": false,
+ "external": false,
+ "fetch": false,
+ "File": false,
+ "FileList": false,
+ "FileReader": false,
+ "find": false,
+ "focus": false,
+ "FocusEvent": false,
+ "FontFace": false,
+ "FontFaceSetLoadEvent": false,
+ "FormData": false,
+ "frameElement": false,
+ "frames": false,
+ "GainNode": false,
+ "Gamepad": false,
+ "GamepadButton": false,
+ "GamepadEvent": false,
+ "getComputedStyle": false,
+ "getSelection": false,
+ "HashChangeEvent": false,
+ "Headers": false,
+ "history": false,
+ "History": false,
+ "HTMLAllCollection": false,
+ "HTMLAnchorElement": false,
+ "HTMLAreaElement": false,
+ "HTMLAudioElement": false,
+ "HTMLBaseElement": false,
+ "HTMLBodyElement": false,
+ "HTMLBRElement": false,
+ "HTMLButtonElement": false,
+ "HTMLCanvasElement": false,
+ "HTMLCollection": false,
+ "HTMLContentElement": false,
+ "HTMLDataElement": false,
+ "HTMLDataListElement": false,
+ "HTMLDetailsElement": false,
+ "HTMLDialogElement": false,
+ "HTMLDirectoryElement": false,
+ "HTMLDivElement": false,
+ "HTMLDListElement": false,
+ "HTMLDocument": false,
+ "HTMLElement": false,
+ "HTMLEmbedElement": false,
+ "HTMLFieldSetElement": false,
+ "HTMLFontElement": false,
+ "HTMLFormControlsCollection": false,
+ "HTMLFormElement": false,
+ "HTMLFrameElement": false,
+ "HTMLFrameSetElement": false,
+ "HTMLHeadElement": false,
+ "HTMLHeadingElement": false,
+ "HTMLHRElement": false,
+ "HTMLHtmlElement": false,
+ "HTMLIFrameElement": false,
+ "HTMLImageElement": false,
+ "HTMLInputElement": false,
+ "HTMLLabelElement": false,
+ "HTMLLegendElement": false,
+ "HTMLLIElement": false,
+ "HTMLLinkElement": false,
+ "HTMLMapElement": false,
+ "HTMLMarqueeElement": false,
+ "HTMLMediaElement": false,
+ "HTMLMenuElement": false,
+ "HTMLMetaElement": false,
+ "HTMLMeterElement": false,
+ "HTMLModElement": false,
+ "HTMLObjectElement": false,
+ "HTMLOListElement": false,
+ "HTMLOptGroupElement": false,
+ "HTMLOptionElement": false,
+ "HTMLOptionsCollection": false,
+ "HTMLOutputElement": false,
+ "HTMLParagraphElement": false,
+ "HTMLParamElement": false,
+ "HTMLPictureElement": false,
+ "HTMLPreElement": false,
+ "HTMLProgressElement": false,
+ "HTMLQuoteElement": false,
+ "HTMLScriptElement": false,
+ "HTMLSelectElement": false,
+ "HTMLShadowElement": false,
+ "HTMLSlotElement": false,
+ "HTMLSourceElement": false,
+ "HTMLSpanElement": false,
+ "HTMLStyleElement": false,
+ "HTMLTableCaptionElement": false,
+ "HTMLTableCellElement": false,
+ "HTMLTableColElement": false,
+ "HTMLTableElement": false,
+ "HTMLTableRowElement": false,
+ "HTMLTableSectionElement": false,
+ "HTMLTemplateElement": false,
+ "HTMLTextAreaElement": false,
+ "HTMLTimeElement": false,
+ "HTMLTitleElement": false,
+ "HTMLTrackElement": false,
+ "HTMLUListElement": false,
+ "HTMLUnknownElement": false,
+ "HTMLVideoElement": false,
+ "IDBCursor": false,
+ "IDBCursorWithValue": false,
+ "IDBDatabase": false,
+ "IDBFactory": false,
+ "IDBIndex": false,
+ "IDBKeyRange": false,
+ "IDBObjectStore": false,
+ "IDBOpenDBRequest": false,
+ "IDBRequest": false,
+ "IDBTransaction": false,
+ "IDBVersionChangeEvent": false,
+ "IdleDeadline": false,
+ "IIRFilterNode": false,
+ "Image": false,
+ "ImageBitmap": false,
+ "ImageBitmapRenderingContext": false,
+ "ImageCapture": false,
+ "ImageData": false,
+ "indexedDB": false,
+ "innerHeight": false,
+ "innerWidth": false,
+ "InputEvent": false,
+ "IntersectionObserver": false,
+ "IntersectionObserverEntry": false,
+ "Intl": false,
+ "isSecureContext": false,
+ "KeyboardEvent": false,
+ "KeyframeEffect": false,
+ "KeyframeEffectReadOnly": false,
+ "length": false,
+ "localStorage": false,
+ "location": true,
+ "Location": false,
+ "locationbar": false,
+ "matchMedia": false,
+ "MediaDeviceInfo": false,
+ "MediaDevices": false,
+ "MediaElementAudioSourceNode": false,
+ "MediaEncryptedEvent": false,
+ "MediaError": false,
+ "MediaKeyMessageEvent": false,
+ "MediaKeySession": false,
+ "MediaKeyStatusMap": false,
+ "MediaKeySystemAccess": false,
+ "MediaList": false,
+ "MediaQueryList": false,
+ "MediaQueryListEvent": false,
+ "MediaRecorder": false,
+ "MediaSettingsRange": false,
+ "MediaSource": false,
+ "MediaStream": false,
+ "MediaStreamAudioDestinationNode": false,
+ "MediaStreamAudioSourceNode": false,
+ "MediaStreamEvent": false,
+ "MediaStreamTrack": false,
+ "MediaStreamTrackEvent": false,
+ "menubar": false,
+ "MessageChannel": false,
+ "MessageEvent": false,
+ "MessagePort": false,
+ "MIDIAccess": false,
+ "MIDIConnectionEvent": false,
+ "MIDIInput": false,
+ "MIDIInputMap": false,
+ "MIDIMessageEvent": false,
+ "MIDIOutput": false,
+ "MIDIOutputMap": false,
+ "MIDIPort": false,
+ "MimeType": false,
+ "MimeTypeArray": false,
+ "MouseEvent": false,
+ "moveBy": false,
+ "moveTo": false,
+ "MutationEvent": false,
+ "MutationObserver": false,
+ "MutationRecord": false,
+ "name": false,
+ "NamedNodeMap": false,
+ "NavigationPreloadManager": false,
+ "navigator": false,
+ "Navigator": false,
+ "NetworkInformation": false,
+ "Node": false,
+ "NodeFilter": false,
+ "NodeIterator": false,
+ "NodeList": false,
+ "Notification": false,
+ "OfflineAudioCompletionEvent": false,
+ "OfflineAudioContext": false,
+ "offscreenBuffering": false,
+ "OffscreenCanvas": true,
+ "onabort": true,
+ "onafterprint": true,
+ "onanimationend": true,
+ "onanimationiteration": true,
+ "onanimationstart": true,
+ "onappinstalled": true,
+ "onauxclick": true,
+ "onbeforeinstallprompt": true,
+ "onbeforeprint": true,
+ "onbeforeunload": true,
+ "onblur": true,
+ "oncancel": true,
+ "oncanplay": true,
+ "oncanplaythrough": true,
+ "onchange": true,
+ "onclick": true,
+ "onclose": true,
+ "oncontextmenu": true,
+ "oncuechange": true,
+ "ondblclick": true,
+ "ondevicemotion": true,
+ "ondeviceorientation": true,
+ "ondeviceorientationabsolute": true,
+ "ondrag": true,
+ "ondragend": true,
+ "ondragenter": true,
+ "ondragleave": true,
+ "ondragover": true,
+ "ondragstart": true,
+ "ondrop": true,
+ "ondurationchange": true,
+ "onemptied": true,
+ "onended": true,
+ "onerror": true,
+ "onfocus": true,
+ "ongotpointercapture": true,
+ "onhashchange": true,
+ "oninput": true,
+ "oninvalid": true,
+ "onkeydown": true,
+ "onkeypress": true,
+ "onkeyup": true,
+ "onlanguagechange": true,
+ "onload": true,
+ "onloadeddata": true,
+ "onloadedmetadata": true,
+ "onloadstart": true,
+ "onlostpointercapture": true,
+ "onmessage": true,
+ "onmessageerror": true,
+ "onmousedown": true,
+ "onmouseenter": true,
+ "onmouseleave": true,
+ "onmousemove": true,
+ "onmouseout": true,
+ "onmouseover": true,
+ "onmouseup": true,
+ "onmousewheel": true,
+ "onoffline": true,
+ "ononline": true,
+ "onpagehide": true,
+ "onpageshow": true,
+ "onpause": true,
+ "onplay": true,
+ "onplaying": true,
+ "onpointercancel": true,
+ "onpointerdown": true,
+ "onpointerenter": true,
+ "onpointerleave": true,
+ "onpointermove": true,
+ "onpointerout": true,
+ "onpointerover": true,
+ "onpointerup": true,
+ "onpopstate": true,
+ "onprogress": true,
+ "onratechange": true,
+ "onrejectionhandled": true,
+ "onreset": true,
+ "onresize": true,
+ "onscroll": true,
+ "onsearch": true,
+ "onseeked": true,
+ "onseeking": true,
+ "onselect": true,
+ "onstalled": true,
+ "onstorage": true,
+ "onsubmit": true,
+ "onsuspend": true,
+ "ontimeupdate": true,
+ "ontoggle": true,
+ "ontransitionend": true,
+ "onunhandledrejection": true,
+ "onunload": true,
+ "onvolumechange": true,
+ "onwaiting": true,
+ "onwheel": true,
+ "open": false,
+ "openDatabase": false,
+ "opener": false,
+ "Option": false,
+ "origin": false,
+ "OscillatorNode": false,
+ "outerHeight": false,
+ "outerWidth": false,
+ "PageTransitionEvent": false,
+ "pageXOffset": false,
+ "pageYOffset": false,
+ "PannerNode": false,
+ "parent": false,
+ "Path2D": false,
+ "PaymentAddress": false,
+ "PaymentRequest": false,
+ "PaymentRequestUpdateEvent": false,
+ "PaymentResponse": false,
+ "performance": false,
+ "Performance": false,
+ "PerformanceEntry": false,
+ "PerformanceLongTaskTiming": false,
+ "PerformanceMark": false,
+ "PerformanceMeasure": false,
+ "PerformanceNavigation": false,
+ "PerformanceNavigationTiming": false,
+ "PerformanceObserver": false,
+ "PerformanceObserverEntryList": false,
+ "PerformancePaintTiming": false,
+ "PerformanceResourceTiming": false,
+ "PerformanceTiming": false,
+ "PeriodicWave": false,
+ "Permissions": false,
+ "PermissionStatus": false,
+ "personalbar": false,
+ "PhotoCapabilities": false,
+ "Plugin": false,
+ "PluginArray": false,
+ "PointerEvent": false,
+ "PopStateEvent": false,
+ "postMessage": false,
+ "Presentation": false,
+ "PresentationAvailability": false,
+ "PresentationConnection": false,
+ "PresentationConnectionAvailableEvent": false,
+ "PresentationConnectionCloseEvent": false,
+ "PresentationConnectionList": false,
+ "PresentationReceiver": false,
+ "PresentationRequest": false,
+ "print": false,
+ "ProcessingInstruction": false,
+ "ProgressEvent": false,
+ "PromiseRejectionEvent": false,
+ "prompt": false,
+ "PushManager": false,
+ "PushSubscription": false,
+ "PushSubscriptionOptions": false,
+ "queueMicrotask": false,
+ "RadioNodeList": false,
+ "Range": false,
+ "ReadableStream": false,
+ "registerProcessor": false,
+ "RemotePlayback": false,
+ "removeEventListener": false,
+ "Request": false,
+ "requestAnimationFrame": false,
+ "requestIdleCallback": false,
+ "resizeBy": false,
+ "ResizeObserver": false,
+ "ResizeObserverEntry": false,
+ "resizeTo": false,
+ "Response": false,
+ "RTCCertificate": false,
+ "RTCDataChannel": false,
+ "RTCDataChannelEvent": false,
+ "RTCDtlsTransport": false,
+ "RTCIceCandidate": false,
+ "RTCIceGatherer": false,
+ "RTCIceTransport": false,
+ "RTCPeerConnection": false,
+ "RTCPeerConnectionIceEvent": false,
+ "RTCRtpContributingSource": false,
+ "RTCRtpReceiver": false,
+ "RTCRtpSender": false,
+ "RTCSctpTransport": false,
+ "RTCSessionDescription": false,
+ "RTCStatsReport": false,
+ "RTCTrackEvent": false,
+ "screen": false,
+ "Screen": false,
+ "screenLeft": false,
+ "ScreenOrientation": false,
+ "screenTop": false,
+ "screenX": false,
+ "screenY": false,
+ "ScriptProcessorNode": false,
+ "scroll": false,
+ "scrollbars": false,
+ "scrollBy": false,
+ "scrollTo": false,
+ "scrollX": false,
+ "scrollY": false,
+ "SecurityPolicyViolationEvent": false,
+ "Selection": false,
+ "self": false,
+ "ServiceWorker": false,
+ "ServiceWorkerContainer": false,
+ "ServiceWorkerRegistration": false,
+ "sessionStorage": false,
+ "setInterval": false,
+ "setTimeout": false,
+ "ShadowRoot": false,
+ "SharedWorker": false,
+ "SourceBuffer": false,
+ "SourceBufferList": false,
+ "speechSynthesis": false,
+ "SpeechSynthesisEvent": false,
+ "SpeechSynthesisUtterance": false,
+ "StaticRange": false,
+ "status": false,
+ "statusbar": false,
+ "StereoPannerNode": false,
+ "stop": false,
+ "Storage": false,
+ "StorageEvent": false,
+ "StorageManager": false,
+ "styleMedia": false,
+ "StyleSheet": false,
+ "StyleSheetList": false,
+ "SubtleCrypto": false,
+ "SVGAElement": false,
+ "SVGAngle": false,
+ "SVGAnimatedAngle": false,
+ "SVGAnimatedBoolean": false,
+ "SVGAnimatedEnumeration": false,
+ "SVGAnimatedInteger": false,
+ "SVGAnimatedLength": false,
+ "SVGAnimatedLengthList": false,
+ "SVGAnimatedNumber": false,
+ "SVGAnimatedNumberList": false,
+ "SVGAnimatedPreserveAspectRatio": false,
+ "SVGAnimatedRect": false,
+ "SVGAnimatedString": false,
+ "SVGAnimatedTransformList": false,
+ "SVGAnimateElement": false,
+ "SVGAnimateMotionElement": false,
+ "SVGAnimateTransformElement": false,
+ "SVGAnimationElement": false,
+ "SVGCircleElement": false,
+ "SVGClipPathElement": false,
+ "SVGComponentTransferFunctionElement": false,
+ "SVGDefsElement": false,
+ "SVGDescElement": false,
+ "SVGDiscardElement": false,
+ "SVGElement": false,
+ "SVGEllipseElement": false,
+ "SVGFEBlendElement": false,
+ "SVGFEColorMatrixElement": false,
+ "SVGFEComponentTransferElement": false,
+ "SVGFECompositeElement": false,
+ "SVGFEConvolveMatrixElement": false,
+ "SVGFEDiffuseLightingElement": false,
+ "SVGFEDisplacementMapElement": false,
+ "SVGFEDistantLightElement": false,
+ "SVGFEDropShadowElement": false,
+ "SVGFEFloodElement": false,
+ "SVGFEFuncAElement": false,
+ "SVGFEFuncBElement": false,
+ "SVGFEFuncGElement": false,
+ "SVGFEFuncRElement": false,
+ "SVGFEGaussianBlurElement": false,
+ "SVGFEImageElement": false,
+ "SVGFEMergeElement": false,
+ "SVGFEMergeNodeElement": false,
+ "SVGFEMorphologyElement": false,
+ "SVGFEOffsetElement": false,
+ "SVGFEPointLightElement": false,
+ "SVGFESpecularLightingElement": false,
+ "SVGFESpotLightElement": false,
+ "SVGFETileElement": false,
+ "SVGFETurbulenceElement": false,
+ "SVGFilterElement": false,
+ "SVGForeignObjectElement": false,
+ "SVGGElement": false,
+ "SVGGeometryElement": false,
+ "SVGGradientElement": false,
+ "SVGGraphicsElement": false,
+ "SVGImageElement": false,
+ "SVGLength": false,
+ "SVGLengthList": false,
+ "SVGLinearGradientElement": false,
+ "SVGLineElement": false,
+ "SVGMarkerElement": false,
+ "SVGMaskElement": false,
+ "SVGMatrix": false,
+ "SVGMetadataElement": false,
+ "SVGMPathElement": false,
+ "SVGNumber": false,
+ "SVGNumberList": false,
+ "SVGPathElement": false,
+ "SVGPatternElement": false,
+ "SVGPoint": false,
+ "SVGPointList": false,
+ "SVGPolygonElement": false,
+ "SVGPolylineElement": false,
+ "SVGPreserveAspectRatio": false,
+ "SVGRadialGradientElement": false,
+ "SVGRect": false,
+ "SVGRectElement": false,
+ "SVGScriptElement": false,
+ "SVGSetElement": false,
+ "SVGStopElement": false,
+ "SVGStringList": false,
+ "SVGStyleElement": false,
+ "SVGSVGElement": false,
+ "SVGSwitchElement": false,
+ "SVGSymbolElement": false,
+ "SVGTextContentElement": false,
+ "SVGTextElement": false,
+ "SVGTextPathElement": false,
+ "SVGTextPositioningElement": false,
+ "SVGTitleElement": false,
+ "SVGTransform": false,
+ "SVGTransformList": false,
+ "SVGTSpanElement": false,
+ "SVGUnitTypes": false,
+ "SVGUseElement": false,
+ "SVGViewElement": false,
+ "TaskAttributionTiming": false,
+ "Text": false,
+ "TextDecoder": false,
+ "TextEncoder": false,
+ "TextEvent": false,
+ "TextMetrics": false,
+ "TextTrack": false,
+ "TextTrackCue": false,
+ "TextTrackCueList": false,
+ "TextTrackList": false,
+ "TimeRanges": false,
+ "toolbar": false,
+ "top": false,
+ "Touch": false,
+ "TouchEvent": false,
+ "TouchList": false,
+ "TrackEvent": false,
+ "TransitionEvent": false,
+ "TreeWalker": false,
+ "UIEvent": false,
+ "URL": false,
+ "URLSearchParams": false,
+ "ValidityState": false,
+ "visualViewport": false,
+ "VisualViewport": false,
+ "VTTCue": false,
+ "WaveShaperNode": false,
+ "WebAssembly": false,
+ "WebGL2RenderingContext": false,
+ "WebGLActiveInfo": false,
+ "WebGLBuffer": false,
+ "WebGLContextEvent": false,
+ "WebGLFramebuffer": false,
+ "WebGLProgram": false,
+ "WebGLQuery": false,
+ "WebGLRenderbuffer": false,
+ "WebGLRenderingContext": false,
+ "WebGLSampler": false,
+ "WebGLShader": false,
+ "WebGLShaderPrecisionFormat": false,
+ "WebGLSync": false,
+ "WebGLTexture": false,
+ "WebGLTransformFeedback": false,
+ "WebGLUniformLocation": false,
+ "WebGLVertexArrayObject": false,
+ "WebSocket": false,
+ "WheelEvent": false,
+ "window": false,
+ "Window": false,
+ "Worker": false,
+ "WritableStream": false,
+ "XMLDocument": false,
+ "XMLHttpRequest": false,
+ "XMLHttpRequestEventTarget": false,
+ "XMLHttpRequestUpload": false,
+ "XMLSerializer": false,
+ "XPathEvaluator": false,
+ "XPathExpression": false,
+ "XPathResult": false,
+ "XSLTProcessor": false
+ },
+ "worker": {
+ "addEventListener": false,
+ "applicationCache": false,
+ "atob": false,
+ "Blob": false,
+ "BroadcastChannel": false,
+ "btoa": false,
+ "Cache": false,
+ "caches": false,
+ "clearInterval": false,
+ "clearTimeout": false,
+ "close": true,
+ "console": false,
+ "fetch": false,
+ "FileReaderSync": false,
+ "FormData": false,
+ "Headers": false,
+ "IDBCursor": false,
+ "IDBCursorWithValue": false,
+ "IDBDatabase": false,
+ "IDBFactory": false,
+ "IDBIndex": false,
+ "IDBKeyRange": false,
+ "IDBObjectStore": false,
+ "IDBOpenDBRequest": false,
+ "IDBRequest": false,
+ "IDBTransaction": false,
+ "IDBVersionChangeEvent": false,
+ "ImageData": false,
+ "importScripts": true,
+ "indexedDB": false,
+ "location": false,
+ "MessageChannel": false,
+ "MessagePort": false,
+ "name": false,
+ "navigator": false,
+ "Notification": false,
+ "onclose": true,
+ "onconnect": true,
+ "onerror": true,
+ "onlanguagechange": true,
+ "onmessage": true,
+ "onoffline": true,
+ "ononline": true,
+ "onrejectionhandled": true,
+ "onunhandledrejection": true,
+ "performance": false,
+ "Performance": false,
+ "PerformanceEntry": false,
+ "PerformanceMark": false,
+ "PerformanceMeasure": false,
+ "PerformanceNavigation": false,
+ "PerformanceResourceTiming": false,
+ "PerformanceTiming": false,
+ "postMessage": true,
+ "Promise": false,
+ "queueMicrotask": false,
+ "removeEventListener": false,
+ "Request": false,
+ "Response": false,
+ "self": true,
+ "ServiceWorkerRegistration": false,
+ "setInterval": false,
+ "setTimeout": false,
+ "TextDecoder": false,
+ "TextEncoder": false,
+ "URL": false,
+ "URLSearchParams": false,
+ "WebSocket": false,
+ "Worker": false,
+ "WorkerGlobalScope": false,
+ "XMLHttpRequest": false
+ },
+ "node": {
+ "__dirname": false,
+ "__filename": false,
+ "Buffer": false,
+ "clearImmediate": false,
+ "clearInterval": false,
+ "clearTimeout": false,
+ "console": false,
+ "exports": true,
+ "global": false,
+ "Intl": false,
+ "module": false,
+ "process": false,
+ "queueMicrotask": false,
+ "require": false,
+ "setImmediate": false,
+ "setInterval": false,
+ "setTimeout": false,
+ "TextDecoder": false,
+ "TextEncoder": false,
+ "URL": false,
+ "URLSearchParams": false
+ },
+ "commonjs": {
+ "exports": true,
+ "global": false,
+ "module": false,
+ "require": false
+ },
+ "amd": {
+ "define": false,
+ "require": false
+ },
+ "mocha": {
+ "after": false,
+ "afterEach": false,
+ "before": false,
+ "beforeEach": false,
+ "context": false,
+ "describe": false,
+ "it": false,
+ "mocha": false,
+ "run": false,
+ "setup": false,
+ "specify": false,
+ "suite": false,
+ "suiteSetup": false,
+ "suiteTeardown": false,
+ "teardown": false,
+ "test": false,
+ "xcontext": false,
+ "xdescribe": false,
+ "xit": false,
+ "xspecify": false
+ },
+ "jasmine": {
+ "afterAll": false,
+ "afterEach": false,
+ "beforeAll": false,
+ "beforeEach": false,
+ "describe": false,
+ "expect": false,
+ "fail": false,
+ "fdescribe": false,
+ "fit": false,
+ "it": false,
+ "jasmine": false,
+ "pending": false,
+ "runs": false,
+ "spyOn": false,
+ "spyOnProperty": false,
+ "waits": false,
+ "waitsFor": false,
+ "xdescribe": false,
+ "xit": false
+ },
+ "jest": {
+ "afterAll": false,
+ "afterEach": false,
+ "beforeAll": false,
+ "beforeEach": false,
+ "describe": false,
+ "expect": false,
+ "fdescribe": false,
+ "fit": false,
+ "it": false,
+ "jest": false,
+ "pit": false,
+ "require": false,
+ "test": false,
+ "xdescribe": false,
+ "xit": false,
+ "xtest": false
+ },
+ "qunit": {
+ "asyncTest": false,
+ "deepEqual": false,
+ "equal": false,
+ "expect": false,
+ "module": false,
+ "notDeepEqual": false,
+ "notEqual": false,
+ "notOk": false,
+ "notPropEqual": false,
+ "notStrictEqual": false,
+ "ok": false,
+ "propEqual": false,
+ "QUnit": false,
+ "raises": false,
+ "start": false,
+ "stop": false,
+ "strictEqual": false,
+ "test": false,
+ "throws": false
+ },
+ "phantomjs": {
+ "console": true,
+ "exports": true,
+ "phantom": true,
+ "require": true,
+ "WebPage": true
+ },
+ "couch": {
+ "emit": false,
+ "exports": false,
+ "getRow": false,
+ "log": false,
+ "module": false,
+ "provides": false,
+ "require": false,
+ "respond": false,
+ "send": false,
+ "start": false,
+ "sum": false
+ },
+ "rhino": {
+ "defineClass": false,
+ "deserialize": false,
+ "gc": false,
+ "help": false,
+ "importClass": false,
+ "importPackage": false,
+ "java": false,
+ "load": false,
+ "loadClass": false,
+ "Packages": false,
+ "print": false,
+ "quit": false,
+ "readFile": false,
+ "readUrl": false,
+ "runCommand": false,
+ "seal": false,
+ "serialize": false,
+ "spawn": false,
+ "sync": false,
+ "toint32": false,
+ "version": false
+ },
+ "nashorn": {
+ "__DIR__": false,
+ "__FILE__": false,
+ "__LINE__": false,
+ "com": false,
+ "edu": false,
+ "exit": false,
+ "java": false,
+ "Java": false,
+ "javafx": false,
+ "JavaImporter": false,
+ "javax": false,
+ "JSAdapter": false,
+ "load": false,
+ "loadWithNewGlobal": false,
+ "org": false,
+ "Packages": false,
+ "print": false,
+ "quit": false
+ },
+ "wsh": {
+ "ActiveXObject": true,
+ "Enumerator": true,
+ "GetObject": true,
+ "ScriptEngine": true,
+ "ScriptEngineBuildVersion": true,
+ "ScriptEngineMajorVersion": true,
+ "ScriptEngineMinorVersion": true,
+ "VBArray": true,
+ "WScript": true,
+ "WSH": true,
+ "XDomainRequest": true
+ },
+ "jquery": {
+ "$": false,
+ "jQuery": false
+ },
+ "yui": {
+ "YAHOO": false,
+ "YAHOO_config": false,
+ "YUI": false,
+ "YUI_config": false
+ },
+ "shelljs": {
+ "cat": false,
+ "cd": false,
+ "chmod": false,
+ "config": false,
+ "cp": false,
+ "dirs": false,
+ "echo": false,
+ "env": false,
+ "error": false,
+ "exec": false,
+ "exit": false,
+ "find": false,
+ "grep": false,
+ "ln": false,
+ "ls": false,
+ "mkdir": false,
+ "mv": false,
+ "popd": false,
+ "pushd": false,
+ "pwd": false,
+ "rm": false,
+ "sed": false,
+ "set": false,
+ "target": false,
+ "tempdir": false,
+ "test": false,
+ "touch": false,
+ "which": false
+ },
+ "prototypejs": {
+ "$": false,
+ "$$": false,
+ "$A": false,
+ "$break": false,
+ "$continue": false,
+ "$F": false,
+ "$H": false,
+ "$R": false,
+ "$w": false,
+ "Abstract": false,
+ "Ajax": false,
+ "Autocompleter": false,
+ "Builder": false,
+ "Class": false,
+ "Control": false,
+ "Draggable": false,
+ "Draggables": false,
+ "Droppables": false,
+ "Effect": false,
+ "Element": false,
+ "Enumerable": false,
+ "Event": false,
+ "Field": false,
+ "Form": false,
+ "Hash": false,
+ "Insertion": false,
+ "ObjectRange": false,
+ "PeriodicalExecuter": false,
+ "Position": false,
+ "Prototype": false,
+ "Scriptaculous": false,
+ "Selector": false,
+ "Sortable": false,
+ "SortableObserver": false,
+ "Sound": false,
+ "Template": false,
+ "Toggle": false,
+ "Try": false
+ },
+ "meteor": {
+ "_": false,
+ "$": false,
+ "Accounts": false,
+ "AccountsClient": false,
+ "AccountsCommon": false,
+ "AccountsServer": false,
+ "App": false,
+ "Assets": false,
+ "Blaze": false,
+ "check": false,
+ "Cordova": false,
+ "DDP": false,
+ "DDPRateLimiter": false,
+ "DDPServer": false,
+ "Deps": false,
+ "EJSON": false,
+ "Email": false,
+ "HTTP": false,
+ "Log": false,
+ "Match": false,
+ "Meteor": false,
+ "Mongo": false,
+ "MongoInternals": false,
+ "Npm": false,
+ "Package": false,
+ "Plugin": false,
+ "process": false,
+ "Random": false,
+ "ReactiveDict": false,
+ "ReactiveVar": false,
+ "Router": false,
+ "ServiceConfiguration": false,
+ "Session": false,
+ "share": false,
+ "Spacebars": false,
+ "Template": false,
+ "Tinytest": false,
+ "Tracker": false,
+ "UI": false,
+ "Utils": false,
+ "WebApp": false,
+ "WebAppInternals": false
+ },
+ "mongo": {
+ "_isWindows": false,
+ "_rand": false,
+ "BulkWriteResult": false,
+ "cat": false,
+ "cd": false,
+ "connect": false,
+ "db": false,
+ "getHostName": false,
+ "getMemInfo": false,
+ "hostname": false,
+ "ISODate": false,
+ "listFiles": false,
+ "load": false,
+ "ls": false,
+ "md5sumFile": false,
+ "mkdir": false,
+ "Mongo": false,
+ "NumberInt": false,
+ "NumberLong": false,
+ "ObjectId": false,
+ "PlanCache": false,
+ "print": false,
+ "printjson": false,
+ "pwd": false,
+ "quit": false,
+ "removeFile": false,
+ "rs": false,
+ "sh": false,
+ "UUID": false,
+ "version": false,
+ "WriteResult": false
+ },
+ "applescript": {
+ "$": false,
+ "Application": false,
+ "Automation": false,
+ "console": false,
+ "delay": false,
+ "Library": false,
+ "ObjC": false,
+ "ObjectSpecifier": false,
+ "Path": false,
+ "Progress": false,
+ "Ref": false
+ },
+ "serviceworker": {
+ "addEventListener": false,
+ "applicationCache": false,
+ "atob": false,
+ "Blob": false,
+ "BroadcastChannel": false,
+ "btoa": false,
+ "Cache": false,
+ "caches": false,
+ "CacheStorage": false,
+ "clearInterval": false,
+ "clearTimeout": false,
+ "Client": false,
+ "clients": false,
+ "Clients": false,
+ "close": true,
+ "console": false,
+ "ExtendableEvent": false,
+ "ExtendableMessageEvent": false,
+ "fetch": false,
+ "FetchEvent": false,
+ "FileReaderSync": false,
+ "FormData": false,
+ "Headers": false,
+ "IDBCursor": false,
+ "IDBCursorWithValue": false,
+ "IDBDatabase": false,
+ "IDBFactory": false,
+ "IDBIndex": false,
+ "IDBKeyRange": false,
+ "IDBObjectStore": false,
+ "IDBOpenDBRequest": false,
+ "IDBRequest": false,
+ "IDBTransaction": false,
+ "IDBVersionChangeEvent": false,
+ "ImageData": false,
+ "importScripts": false,
+ "indexedDB": false,
+ "location": false,
+ "MessageChannel": false,
+ "MessagePort": false,
+ "name": false,
+ "navigator": false,
+ "Notification": false,
+ "onclose": true,
+ "onconnect": true,
+ "onerror": true,
+ "onfetch": true,
+ "oninstall": true,
+ "onlanguagechange": true,
+ "onmessage": true,
+ "onmessageerror": true,
+ "onnotificationclick": true,
+ "onnotificationclose": true,
+ "onoffline": true,
+ "ononline": true,
+ "onpush": true,
+ "onpushsubscriptionchange": true,
+ "onrejectionhandled": true,
+ "onsync": true,
+ "onunhandledrejection": true,
+ "performance": false,
+ "Performance": false,
+ "PerformanceEntry": false,
+ "PerformanceMark": false,
+ "PerformanceMeasure": false,
+ "PerformanceNavigation": false,
+ "PerformanceResourceTiming": false,
+ "PerformanceTiming": false,
+ "postMessage": true,
+ "Promise": false,
+ "queueMicrotask": false,
+ "registration": false,
+ "removeEventListener": false,
+ "Request": false,
+ "Response": false,
+ "self": false,
+ "ServiceWorker": false,
+ "ServiceWorkerContainer": false,
+ "ServiceWorkerGlobalScope": false,
+ "ServiceWorkerMessageEvent": false,
+ "ServiceWorkerRegistration": false,
+ "setInterval": false,
+ "setTimeout": false,
+ "skipWaiting": false,
+ "TextDecoder": false,
+ "TextEncoder": false,
+ "URL": false,
+ "URLSearchParams": false,
+ "WebSocket": false,
+ "WindowClient": false,
+ "Worker": false,
+ "WorkerGlobalScope": false,
+ "XMLHttpRequest": false
+ },
+ "atomtest": {
+ "advanceClock": false,
+ "fakeClearInterval": false,
+ "fakeClearTimeout": false,
+ "fakeSetInterval": false,
+ "fakeSetTimeout": false,
+ "resetTimeouts": false,
+ "waitsForPromise": false
+ },
+ "embertest": {
+ "andThen": false,
+ "click": false,
+ "currentPath": false,
+ "currentRouteName": false,
+ "currentURL": false,
+ "fillIn": false,
+ "find": false,
+ "findAll": false,
+ "findWithAssert": false,
+ "keyEvent": false,
+ "pauseTest": false,
+ "resumeTest": false,
+ "triggerEvent": false,
+ "visit": false,
+ "wait": false
+ },
+ "protractor": {
+ "$": false,
+ "$$": false,
+ "browser": false,
+ "by": false,
+ "By": false,
+ "DartObject": false,
+ "element": false,
+ "protractor": false
+ },
+ "shared-node-browser": {
+ "clearInterval": false,
+ "clearTimeout": false,
+ "console": false,
+ "setInterval": false,
+ "setTimeout": false,
+ "URL": false,
+ "URLSearchParams": false
+ },
+ "webextensions": {
+ "browser": false,
+ "chrome": false,
+ "opr": false
+ },
+ "greasemonkey": {
+ "cloneInto": false,
+ "createObjectIn": false,
+ "exportFunction": false,
+ "GM": false,
+ "GM_addStyle": false,
+ "GM_deleteValue": false,
+ "GM_getResourceText": false,
+ "GM_getResourceURL": false,
+ "GM_getValue": false,
+ "GM_info": false,
+ "GM_listValues": false,
+ "GM_log": false,
+ "GM_openInTab": false,
+ "GM_registerMenuCommand": false,
+ "GM_setClipboard": false,
+ "GM_setValue": false,
+ "GM_xmlhttpRequest": false,
+ "unsafeWindow": false
+ },
+ "devtools": {
+ "$": false,
+ "$_": false,
+ "$$": false,
+ "$0": false,
+ "$1": false,
+ "$2": false,
+ "$3": false,
+ "$4": false,
+ "$x": false,
+ "chrome": false,
+ "clear": false,
+ "copy": false,
+ "debug": false,
+ "dir": false,
+ "dirxml": false,
+ "getEventListeners": false,
+ "inspect": false,
+ "keys": false,
+ "monitor": false,
+ "monitorEvents": false,
+ "profile": false,
+ "profileEnd": false,
+ "queryObjects": false,
+ "table": false,
+ "undebug": false,
+ "unmonitor": false,
+ "unmonitorEvents": false,
+ "values": false
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/index.js
new file mode 100644
index 0000000000..a951582e41
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/index.js
@@ -0,0 +1,2 @@
+'use strict';
+module.exports = require('./globals.json');
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/license b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/license
new file mode 100644
index 0000000000..e7af2f7710
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/package.json b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/package.json
new file mode 100644
index 0000000000..dfe459b6fa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "globals",
+ "version": "11.12.0",
+ "description": "Global identifiers from different JavaScript environments",
+ "license": "MIT",
+ "repository": "sindresorhus/globals",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "xo && ava"
+ },
+ "files": [
+ "index.js",
+ "globals.json"
+ ],
+ "keywords": [
+ "globals",
+ "global",
+ "identifiers",
+ "variables",
+ "vars",
+ "jshint",
+ "eslint",
+ "environments"
+ ],
+ "devDependencies": {
+ "ava": "0.21.0",
+ "xo": "0.18.0"
+ },
+ "xo": {
+ "ignores": [
+ "get-browser-globals.js"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/readme.md b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/readme.md
new file mode 100644
index 0000000000..8c47855f34
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/node_modules/globals/readme.md
@@ -0,0 +1,41 @@
+# globals [![Build Status](https://travis-ci.org/sindresorhus/globals.svg?branch=master)](https://travis-ci.org/sindresorhus/globals)
+
+> Global identifiers from different JavaScript environments
+
+Extracted from [JSHint](https://github.com/jshint/jshint/blob/3a8efa979dbb157bfb5c10b5826603a55a33b9ad/src/vars.js) and [ESLint](https://github.com/eslint/eslint/blob/b648406218f8a2d7302b98f5565e23199f44eb31/conf/environments.json) and merged.
+
+It's just a [JSON file](globals.json), so use it in whatever environment you like.
+
+**This module [no longer accepts](https://github.com/sindresorhus/globals/issues/82) new environments. If you need it for ESLint, just [create a plugin](http://eslint.org/docs/developer-guide/working-with-plugins#environments-in-plugins).**
+
+
+## Install
+
+```
+$ npm install globals
+```
+
+
+## Usage
+
+```js
+const globals = require('globals');
+
+console.log(globals.browser);
+/*
+{
+ addEventListener: false,
+ applicationCache: false,
+ ArrayBuffer: false,
+ atob: false,
+ ...
+}
+*/
+```
+
+Each global is given a value of `true` or `false`. A value of `true` indicates that the variable may be overwritten. A value of `false` indicates that the variable should be considered read-only. This information is used by static analysis tools to flag incorrect behavior. We assume all variables should be `false` unless we hear otherwise.
+
+
+## License
+
+MIT © [Sindre Sorhus](https://sindresorhus.com)
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/package.json b/tools/node_modules/eslint/node_modules/@babel/traverse/package.json
new file mode 100644
index 0000000000..6cd8c71a20
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "@babel/traverse",
+ "version": "7.16.3",
+ "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-traverse",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20traverse%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-traverse"
+ },
+ "main": "./lib/index.js",
+ "dependencies": {
+ "@babel/code-frame": "^7.16.0",
+ "@babel/generator": "^7.16.0",
+ "@babel/helper-function-name": "^7.16.0",
+ "@babel/helper-hoist-variables": "^7.16.0",
+ "@babel/helper-split-export-declaration": "^7.16.0",
+ "@babel/parser": "^7.16.3",
+ "@babel/types": "^7.16.0",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "devDependencies": {
+ "@babel/helper-plugin-test-runner": "^7.16.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js
new file mode 100644
index 0000000000..f10b33eede
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/asserts.js
@@ -0,0 +1,25 @@
+import t from "@babel/types";
+
+export default function generateAsserts() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import * as t from "@babel/types";
+import NodePath from "../index";
+
+
+export interface NodePathAssetions {`;
+
+ for (const type of [...t.TYPES].sort()) {
+ output += `
+ assert${type}(
+ opts?: object,
+ ): asserts this is NodePath<t.${type}>;`;
+ }
+
+ output += `
+}`;
+
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js
new file mode 100644
index 0000000000..a3ec31a3eb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/validators.js
@@ -0,0 +1,43 @@
+import t from "@babel/types";
+import virtualTypes from "../../lib/path/lib/virtual-types.js";
+import definitions from "@babel/types/lib/definitions/index.js";
+
+export default function generateValidators() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import * as t from "@babel/types";
+import NodePath from "../index";
+import type { VirtualTypeAliases } from "./virtual-types";
+
+export interface NodePathValidators {
+`;
+
+ for (const type of [...t.TYPES].sort()) {
+ output += `is${type}(opts?: object): this is NodePath<t.${type}>;`;
+ }
+
+ for (const type of Object.keys(virtualTypes)) {
+ const { types } = virtualTypes[type];
+ if (type[0] === "_") continue;
+ if (definitions.NODE_FIELDS[type] || definitions.FLIPPED_ALIAS_KEYS[type]) {
+ output += `is${type}(opts?: object): this is NodePath<t.${type}>;`;
+ } else if (types /* in VirtualTypeAliases */) {
+ output += `is${type}(opts?: object): this is NodePath<VirtualTypeAliases["${type}"]>;`;
+ } else {
+ // if it don't have types, then VirtualTypeAliases[type] is t.Node
+ // which TS marked as always true
+ // eg. if (path.isBlockScope()) return;
+ // path resolved to `never` here
+ // so we have to return boolean instead of this is NodePath<t.Node> here
+ output += `is${type}(opts?: object): boolean;`;
+ }
+ }
+
+ output += `
+}
+`;
+
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js
new file mode 100644
index 0000000000..6d55f54caa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/generators/virtual-types.js
@@ -0,0 +1,24 @@
+import virtualTypes from "../../lib/path/lib/virtual-types.js";
+
+export default function generateValidators() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import * as t from "@babel/types";
+
+export interface VirtualTypeAliases {
+`;
+
+ for (const type of Object.keys(virtualTypes)) {
+ output += ` ${type}: ${(virtualTypes[type].types || ["Node"])
+ .map(t => `t.${t}`)
+ .join(" | ")};`;
+ }
+
+ output += `
+}
+`;
+
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/package.json b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/package.json
new file mode 100644
index 0000000000..5ffd9800b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/traverse/scripts/package.json
@@ -0,0 +1 @@
+{ "type": "module" }
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/LICENSE b/tools/node_modules/eslint/node_modules/@babel/types/LICENSE
new file mode 100644
index 0000000000..f31575ec77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/LICENSE
@@ -0,0 +1,22 @@
+MIT License
+
+Copyright (c) 2014-present Sebastian McKenzie and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/README.md b/tools/node_modules/eslint/node_modules/@babel/types/README.md
new file mode 100644
index 0000000000..0071bd7a9b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/README.md
@@ -0,0 +1,19 @@
+# @babel/types
+
+> Babel Types is a Lodash-esque utility library for AST nodes
+
+See our website [@babel/types](https://babeljs.io/docs/en/babel-types) for more information or the [issues](https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen) associated with this package.
+
+## Install
+
+Using npm:
+
+```sh
+npm install --save-dev @babel/types
+```
+
+or using yarn:
+
+```sh
+yarn add @babel/types --dev
+```
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/assertNode.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/assertNode.js
new file mode 100644
index 0000000000..e584e3eec6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/assertNode.js
@@ -0,0 +1,17 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = assertNode;
+
+var _isNode = require("../validators/isNode");
+
+function assertNode(node) {
+ if (!(0, _isNode.default)(node)) {
+ var _node$type;
+
+ const type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
+ throw new TypeError(`Not a valid node of type "${type}"`);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js
new file mode 100644
index 0000000000..eb0ffafa66
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/asserts/generated/index.js
@@ -0,0 +1,1507 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.assertAnyTypeAnnotation = assertAnyTypeAnnotation;
+exports.assertArgumentPlaceholder = assertArgumentPlaceholder;
+exports.assertArrayExpression = assertArrayExpression;
+exports.assertArrayPattern = assertArrayPattern;
+exports.assertArrayTypeAnnotation = assertArrayTypeAnnotation;
+exports.assertArrowFunctionExpression = assertArrowFunctionExpression;
+exports.assertAssignmentExpression = assertAssignmentExpression;
+exports.assertAssignmentPattern = assertAssignmentPattern;
+exports.assertAwaitExpression = assertAwaitExpression;
+exports.assertBigIntLiteral = assertBigIntLiteral;
+exports.assertBinary = assertBinary;
+exports.assertBinaryExpression = assertBinaryExpression;
+exports.assertBindExpression = assertBindExpression;
+exports.assertBlock = assertBlock;
+exports.assertBlockParent = assertBlockParent;
+exports.assertBlockStatement = assertBlockStatement;
+exports.assertBooleanLiteral = assertBooleanLiteral;
+exports.assertBooleanLiteralTypeAnnotation = assertBooleanLiteralTypeAnnotation;
+exports.assertBooleanTypeAnnotation = assertBooleanTypeAnnotation;
+exports.assertBreakStatement = assertBreakStatement;
+exports.assertCallExpression = assertCallExpression;
+exports.assertCatchClause = assertCatchClause;
+exports.assertClass = assertClass;
+exports.assertClassBody = assertClassBody;
+exports.assertClassDeclaration = assertClassDeclaration;
+exports.assertClassExpression = assertClassExpression;
+exports.assertClassImplements = assertClassImplements;
+exports.assertClassMethod = assertClassMethod;
+exports.assertClassPrivateMethod = assertClassPrivateMethod;
+exports.assertClassPrivateProperty = assertClassPrivateProperty;
+exports.assertClassProperty = assertClassProperty;
+exports.assertCompletionStatement = assertCompletionStatement;
+exports.assertConditional = assertConditional;
+exports.assertConditionalExpression = assertConditionalExpression;
+exports.assertContinueStatement = assertContinueStatement;
+exports.assertDebuggerStatement = assertDebuggerStatement;
+exports.assertDecimalLiteral = assertDecimalLiteral;
+exports.assertDeclaration = assertDeclaration;
+exports.assertDeclareClass = assertDeclareClass;
+exports.assertDeclareExportAllDeclaration = assertDeclareExportAllDeclaration;
+exports.assertDeclareExportDeclaration = assertDeclareExportDeclaration;
+exports.assertDeclareFunction = assertDeclareFunction;
+exports.assertDeclareInterface = assertDeclareInterface;
+exports.assertDeclareModule = assertDeclareModule;
+exports.assertDeclareModuleExports = assertDeclareModuleExports;
+exports.assertDeclareOpaqueType = assertDeclareOpaqueType;
+exports.assertDeclareTypeAlias = assertDeclareTypeAlias;
+exports.assertDeclareVariable = assertDeclareVariable;
+exports.assertDeclaredPredicate = assertDeclaredPredicate;
+exports.assertDecorator = assertDecorator;
+exports.assertDirective = assertDirective;
+exports.assertDirectiveLiteral = assertDirectiveLiteral;
+exports.assertDoExpression = assertDoExpression;
+exports.assertDoWhileStatement = assertDoWhileStatement;
+exports.assertEmptyStatement = assertEmptyStatement;
+exports.assertEmptyTypeAnnotation = assertEmptyTypeAnnotation;
+exports.assertEnumBody = assertEnumBody;
+exports.assertEnumBooleanBody = assertEnumBooleanBody;
+exports.assertEnumBooleanMember = assertEnumBooleanMember;
+exports.assertEnumDeclaration = assertEnumDeclaration;
+exports.assertEnumDefaultedMember = assertEnumDefaultedMember;
+exports.assertEnumMember = assertEnumMember;
+exports.assertEnumNumberBody = assertEnumNumberBody;
+exports.assertEnumNumberMember = assertEnumNumberMember;
+exports.assertEnumStringBody = assertEnumStringBody;
+exports.assertEnumStringMember = assertEnumStringMember;
+exports.assertEnumSymbolBody = assertEnumSymbolBody;
+exports.assertExistsTypeAnnotation = assertExistsTypeAnnotation;
+exports.assertExportAllDeclaration = assertExportAllDeclaration;
+exports.assertExportDeclaration = assertExportDeclaration;
+exports.assertExportDefaultDeclaration = assertExportDefaultDeclaration;
+exports.assertExportDefaultSpecifier = assertExportDefaultSpecifier;
+exports.assertExportNamedDeclaration = assertExportNamedDeclaration;
+exports.assertExportNamespaceSpecifier = assertExportNamespaceSpecifier;
+exports.assertExportSpecifier = assertExportSpecifier;
+exports.assertExpression = assertExpression;
+exports.assertExpressionStatement = assertExpressionStatement;
+exports.assertExpressionWrapper = assertExpressionWrapper;
+exports.assertFile = assertFile;
+exports.assertFlow = assertFlow;
+exports.assertFlowBaseAnnotation = assertFlowBaseAnnotation;
+exports.assertFlowDeclaration = assertFlowDeclaration;
+exports.assertFlowPredicate = assertFlowPredicate;
+exports.assertFlowType = assertFlowType;
+exports.assertFor = assertFor;
+exports.assertForInStatement = assertForInStatement;
+exports.assertForOfStatement = assertForOfStatement;
+exports.assertForStatement = assertForStatement;
+exports.assertForXStatement = assertForXStatement;
+exports.assertFunction = assertFunction;
+exports.assertFunctionDeclaration = assertFunctionDeclaration;
+exports.assertFunctionExpression = assertFunctionExpression;
+exports.assertFunctionParent = assertFunctionParent;
+exports.assertFunctionTypeAnnotation = assertFunctionTypeAnnotation;
+exports.assertFunctionTypeParam = assertFunctionTypeParam;
+exports.assertGenericTypeAnnotation = assertGenericTypeAnnotation;
+exports.assertIdentifier = assertIdentifier;
+exports.assertIfStatement = assertIfStatement;
+exports.assertImmutable = assertImmutable;
+exports.assertImport = assertImport;
+exports.assertImportAttribute = assertImportAttribute;
+exports.assertImportDeclaration = assertImportDeclaration;
+exports.assertImportDefaultSpecifier = assertImportDefaultSpecifier;
+exports.assertImportNamespaceSpecifier = assertImportNamespaceSpecifier;
+exports.assertImportSpecifier = assertImportSpecifier;
+exports.assertIndexedAccessType = assertIndexedAccessType;
+exports.assertInferredPredicate = assertInferredPredicate;
+exports.assertInterfaceDeclaration = assertInterfaceDeclaration;
+exports.assertInterfaceExtends = assertInterfaceExtends;
+exports.assertInterfaceTypeAnnotation = assertInterfaceTypeAnnotation;
+exports.assertInterpreterDirective = assertInterpreterDirective;
+exports.assertIntersectionTypeAnnotation = assertIntersectionTypeAnnotation;
+exports.assertJSX = assertJSX;
+exports.assertJSXAttribute = assertJSXAttribute;
+exports.assertJSXClosingElement = assertJSXClosingElement;
+exports.assertJSXClosingFragment = assertJSXClosingFragment;
+exports.assertJSXElement = assertJSXElement;
+exports.assertJSXEmptyExpression = assertJSXEmptyExpression;
+exports.assertJSXExpressionContainer = assertJSXExpressionContainer;
+exports.assertJSXFragment = assertJSXFragment;
+exports.assertJSXIdentifier = assertJSXIdentifier;
+exports.assertJSXMemberExpression = assertJSXMemberExpression;
+exports.assertJSXNamespacedName = assertJSXNamespacedName;
+exports.assertJSXOpeningElement = assertJSXOpeningElement;
+exports.assertJSXOpeningFragment = assertJSXOpeningFragment;
+exports.assertJSXSpreadAttribute = assertJSXSpreadAttribute;
+exports.assertJSXSpreadChild = assertJSXSpreadChild;
+exports.assertJSXText = assertJSXText;
+exports.assertLVal = assertLVal;
+exports.assertLabeledStatement = assertLabeledStatement;
+exports.assertLiteral = assertLiteral;
+exports.assertLogicalExpression = assertLogicalExpression;
+exports.assertLoop = assertLoop;
+exports.assertMemberExpression = assertMemberExpression;
+exports.assertMetaProperty = assertMetaProperty;
+exports.assertMethod = assertMethod;
+exports.assertMiscellaneous = assertMiscellaneous;
+exports.assertMixedTypeAnnotation = assertMixedTypeAnnotation;
+exports.assertModuleDeclaration = assertModuleDeclaration;
+exports.assertModuleExpression = assertModuleExpression;
+exports.assertModuleSpecifier = assertModuleSpecifier;
+exports.assertNewExpression = assertNewExpression;
+exports.assertNoop = assertNoop;
+exports.assertNullLiteral = assertNullLiteral;
+exports.assertNullLiteralTypeAnnotation = assertNullLiteralTypeAnnotation;
+exports.assertNullableTypeAnnotation = assertNullableTypeAnnotation;
+exports.assertNumberLiteral = assertNumberLiteral;
+exports.assertNumberLiteralTypeAnnotation = assertNumberLiteralTypeAnnotation;
+exports.assertNumberTypeAnnotation = assertNumberTypeAnnotation;
+exports.assertNumericLiteral = assertNumericLiteral;
+exports.assertObjectExpression = assertObjectExpression;
+exports.assertObjectMember = assertObjectMember;
+exports.assertObjectMethod = assertObjectMethod;
+exports.assertObjectPattern = assertObjectPattern;
+exports.assertObjectProperty = assertObjectProperty;
+exports.assertObjectTypeAnnotation = assertObjectTypeAnnotation;
+exports.assertObjectTypeCallProperty = assertObjectTypeCallProperty;
+exports.assertObjectTypeIndexer = assertObjectTypeIndexer;
+exports.assertObjectTypeInternalSlot = assertObjectTypeInternalSlot;
+exports.assertObjectTypeProperty = assertObjectTypeProperty;
+exports.assertObjectTypeSpreadProperty = assertObjectTypeSpreadProperty;
+exports.assertOpaqueType = assertOpaqueType;
+exports.assertOptionalCallExpression = assertOptionalCallExpression;
+exports.assertOptionalIndexedAccessType = assertOptionalIndexedAccessType;
+exports.assertOptionalMemberExpression = assertOptionalMemberExpression;
+exports.assertParenthesizedExpression = assertParenthesizedExpression;
+exports.assertPattern = assertPattern;
+exports.assertPatternLike = assertPatternLike;
+exports.assertPipelineBareFunction = assertPipelineBareFunction;
+exports.assertPipelinePrimaryTopicReference = assertPipelinePrimaryTopicReference;
+exports.assertPipelineTopicExpression = assertPipelineTopicExpression;
+exports.assertPlaceholder = assertPlaceholder;
+exports.assertPrivate = assertPrivate;
+exports.assertPrivateName = assertPrivateName;
+exports.assertProgram = assertProgram;
+exports.assertProperty = assertProperty;
+exports.assertPureish = assertPureish;
+exports.assertQualifiedTypeIdentifier = assertQualifiedTypeIdentifier;
+exports.assertRecordExpression = assertRecordExpression;
+exports.assertRegExpLiteral = assertRegExpLiteral;
+exports.assertRegexLiteral = assertRegexLiteral;
+exports.assertRestElement = assertRestElement;
+exports.assertRestProperty = assertRestProperty;
+exports.assertReturnStatement = assertReturnStatement;
+exports.assertScopable = assertScopable;
+exports.assertSequenceExpression = assertSequenceExpression;
+exports.assertSpreadElement = assertSpreadElement;
+exports.assertSpreadProperty = assertSpreadProperty;
+exports.assertStandardized = assertStandardized;
+exports.assertStatement = assertStatement;
+exports.assertStaticBlock = assertStaticBlock;
+exports.assertStringLiteral = assertStringLiteral;
+exports.assertStringLiteralTypeAnnotation = assertStringLiteralTypeAnnotation;
+exports.assertStringTypeAnnotation = assertStringTypeAnnotation;
+exports.assertSuper = assertSuper;
+exports.assertSwitchCase = assertSwitchCase;
+exports.assertSwitchStatement = assertSwitchStatement;
+exports.assertSymbolTypeAnnotation = assertSymbolTypeAnnotation;
+exports.assertTSAnyKeyword = assertTSAnyKeyword;
+exports.assertTSArrayType = assertTSArrayType;
+exports.assertTSAsExpression = assertTSAsExpression;
+exports.assertTSBaseType = assertTSBaseType;
+exports.assertTSBigIntKeyword = assertTSBigIntKeyword;
+exports.assertTSBooleanKeyword = assertTSBooleanKeyword;
+exports.assertTSCallSignatureDeclaration = assertTSCallSignatureDeclaration;
+exports.assertTSConditionalType = assertTSConditionalType;
+exports.assertTSConstructSignatureDeclaration = assertTSConstructSignatureDeclaration;
+exports.assertTSConstructorType = assertTSConstructorType;
+exports.assertTSDeclareFunction = assertTSDeclareFunction;
+exports.assertTSDeclareMethod = assertTSDeclareMethod;
+exports.assertTSEntityName = assertTSEntityName;
+exports.assertTSEnumDeclaration = assertTSEnumDeclaration;
+exports.assertTSEnumMember = assertTSEnumMember;
+exports.assertTSExportAssignment = assertTSExportAssignment;
+exports.assertTSExpressionWithTypeArguments = assertTSExpressionWithTypeArguments;
+exports.assertTSExternalModuleReference = assertTSExternalModuleReference;
+exports.assertTSFunctionType = assertTSFunctionType;
+exports.assertTSImportEqualsDeclaration = assertTSImportEqualsDeclaration;
+exports.assertTSImportType = assertTSImportType;
+exports.assertTSIndexSignature = assertTSIndexSignature;
+exports.assertTSIndexedAccessType = assertTSIndexedAccessType;
+exports.assertTSInferType = assertTSInferType;
+exports.assertTSInterfaceBody = assertTSInterfaceBody;
+exports.assertTSInterfaceDeclaration = assertTSInterfaceDeclaration;
+exports.assertTSIntersectionType = assertTSIntersectionType;
+exports.assertTSIntrinsicKeyword = assertTSIntrinsicKeyword;
+exports.assertTSLiteralType = assertTSLiteralType;
+exports.assertTSMappedType = assertTSMappedType;
+exports.assertTSMethodSignature = assertTSMethodSignature;
+exports.assertTSModuleBlock = assertTSModuleBlock;
+exports.assertTSModuleDeclaration = assertTSModuleDeclaration;
+exports.assertTSNamedTupleMember = assertTSNamedTupleMember;
+exports.assertTSNamespaceExportDeclaration = assertTSNamespaceExportDeclaration;
+exports.assertTSNeverKeyword = assertTSNeverKeyword;
+exports.assertTSNonNullExpression = assertTSNonNullExpression;
+exports.assertTSNullKeyword = assertTSNullKeyword;
+exports.assertTSNumberKeyword = assertTSNumberKeyword;
+exports.assertTSObjectKeyword = assertTSObjectKeyword;
+exports.assertTSOptionalType = assertTSOptionalType;
+exports.assertTSParameterProperty = assertTSParameterProperty;
+exports.assertTSParenthesizedType = assertTSParenthesizedType;
+exports.assertTSPropertySignature = assertTSPropertySignature;
+exports.assertTSQualifiedName = assertTSQualifiedName;
+exports.assertTSRestType = assertTSRestType;
+exports.assertTSStringKeyword = assertTSStringKeyword;
+exports.assertTSSymbolKeyword = assertTSSymbolKeyword;
+exports.assertTSThisType = assertTSThisType;
+exports.assertTSTupleType = assertTSTupleType;
+exports.assertTSType = assertTSType;
+exports.assertTSTypeAliasDeclaration = assertTSTypeAliasDeclaration;
+exports.assertTSTypeAnnotation = assertTSTypeAnnotation;
+exports.assertTSTypeAssertion = assertTSTypeAssertion;
+exports.assertTSTypeElement = assertTSTypeElement;
+exports.assertTSTypeLiteral = assertTSTypeLiteral;
+exports.assertTSTypeOperator = assertTSTypeOperator;
+exports.assertTSTypeParameter = assertTSTypeParameter;
+exports.assertTSTypeParameterDeclaration = assertTSTypeParameterDeclaration;
+exports.assertTSTypeParameterInstantiation = assertTSTypeParameterInstantiation;
+exports.assertTSTypePredicate = assertTSTypePredicate;
+exports.assertTSTypeQuery = assertTSTypeQuery;
+exports.assertTSTypeReference = assertTSTypeReference;
+exports.assertTSUndefinedKeyword = assertTSUndefinedKeyword;
+exports.assertTSUnionType = assertTSUnionType;
+exports.assertTSUnknownKeyword = assertTSUnknownKeyword;
+exports.assertTSVoidKeyword = assertTSVoidKeyword;
+exports.assertTaggedTemplateExpression = assertTaggedTemplateExpression;
+exports.assertTemplateElement = assertTemplateElement;
+exports.assertTemplateLiteral = assertTemplateLiteral;
+exports.assertTerminatorless = assertTerminatorless;
+exports.assertThisExpression = assertThisExpression;
+exports.assertThisTypeAnnotation = assertThisTypeAnnotation;
+exports.assertThrowStatement = assertThrowStatement;
+exports.assertTopicReference = assertTopicReference;
+exports.assertTryStatement = assertTryStatement;
+exports.assertTupleExpression = assertTupleExpression;
+exports.assertTupleTypeAnnotation = assertTupleTypeAnnotation;
+exports.assertTypeAlias = assertTypeAlias;
+exports.assertTypeAnnotation = assertTypeAnnotation;
+exports.assertTypeCastExpression = assertTypeCastExpression;
+exports.assertTypeParameter = assertTypeParameter;
+exports.assertTypeParameterDeclaration = assertTypeParameterDeclaration;
+exports.assertTypeParameterInstantiation = assertTypeParameterInstantiation;
+exports.assertTypeScript = assertTypeScript;
+exports.assertTypeofTypeAnnotation = assertTypeofTypeAnnotation;
+exports.assertUnaryExpression = assertUnaryExpression;
+exports.assertUnaryLike = assertUnaryLike;
+exports.assertUnionTypeAnnotation = assertUnionTypeAnnotation;
+exports.assertUpdateExpression = assertUpdateExpression;
+exports.assertUserWhitespacable = assertUserWhitespacable;
+exports.assertV8IntrinsicIdentifier = assertV8IntrinsicIdentifier;
+exports.assertVariableDeclaration = assertVariableDeclaration;
+exports.assertVariableDeclarator = assertVariableDeclarator;
+exports.assertVariance = assertVariance;
+exports.assertVoidTypeAnnotation = assertVoidTypeAnnotation;
+exports.assertWhile = assertWhile;
+exports.assertWhileStatement = assertWhileStatement;
+exports.assertWithStatement = assertWithStatement;
+exports.assertYieldExpression = assertYieldExpression;
+
+var _is = require("../../validators/is");
+
+function assert(type, node, opts) {
+ if (!(0, _is.default)(type, node, opts)) {
+ throw new Error(`Expected type "${type}" with option ${JSON.stringify(opts)}, ` + `but instead got "${node.type}".`);
+ }
+}
+
+function assertArrayExpression(node, opts) {
+ assert("ArrayExpression", node, opts);
+}
+
+function assertAssignmentExpression(node, opts) {
+ assert("AssignmentExpression", node, opts);
+}
+
+function assertBinaryExpression(node, opts) {
+ assert("BinaryExpression", node, opts);
+}
+
+function assertInterpreterDirective(node, opts) {
+ assert("InterpreterDirective", node, opts);
+}
+
+function assertDirective(node, opts) {
+ assert("Directive", node, opts);
+}
+
+function assertDirectiveLiteral(node, opts) {
+ assert("DirectiveLiteral", node, opts);
+}
+
+function assertBlockStatement(node, opts) {
+ assert("BlockStatement", node, opts);
+}
+
+function assertBreakStatement(node, opts) {
+ assert("BreakStatement", node, opts);
+}
+
+function assertCallExpression(node, opts) {
+ assert("CallExpression", node, opts);
+}
+
+function assertCatchClause(node, opts) {
+ assert("CatchClause", node, opts);
+}
+
+function assertConditionalExpression(node, opts) {
+ assert("ConditionalExpression", node, opts);
+}
+
+function assertContinueStatement(node, opts) {
+ assert("ContinueStatement", node, opts);
+}
+
+function assertDebuggerStatement(node, opts) {
+ assert("DebuggerStatement", node, opts);
+}
+
+function assertDoWhileStatement(node, opts) {
+ assert("DoWhileStatement", node, opts);
+}
+
+function assertEmptyStatement(node, opts) {
+ assert("EmptyStatement", node, opts);
+}
+
+function assertExpressionStatement(node, opts) {
+ assert("ExpressionStatement", node, opts);
+}
+
+function assertFile(node, opts) {
+ assert("File", node, opts);
+}
+
+function assertForInStatement(node, opts) {
+ assert("ForInStatement", node, opts);
+}
+
+function assertForStatement(node, opts) {
+ assert("ForStatement", node, opts);
+}
+
+function assertFunctionDeclaration(node, opts) {
+ assert("FunctionDeclaration", node, opts);
+}
+
+function assertFunctionExpression(node, opts) {
+ assert("FunctionExpression", node, opts);
+}
+
+function assertIdentifier(node, opts) {
+ assert("Identifier", node, opts);
+}
+
+function assertIfStatement(node, opts) {
+ assert("IfStatement", node, opts);
+}
+
+function assertLabeledStatement(node, opts) {
+ assert("LabeledStatement", node, opts);
+}
+
+function assertStringLiteral(node, opts) {
+ assert("StringLiteral", node, opts);
+}
+
+function assertNumericLiteral(node, opts) {
+ assert("NumericLiteral", node, opts);
+}
+
+function assertNullLiteral(node, opts) {
+ assert("NullLiteral", node, opts);
+}
+
+function assertBooleanLiteral(node, opts) {
+ assert("BooleanLiteral", node, opts);
+}
+
+function assertRegExpLiteral(node, opts) {
+ assert("RegExpLiteral", node, opts);
+}
+
+function assertLogicalExpression(node, opts) {
+ assert("LogicalExpression", node, opts);
+}
+
+function assertMemberExpression(node, opts) {
+ assert("MemberExpression", node, opts);
+}
+
+function assertNewExpression(node, opts) {
+ assert("NewExpression", node, opts);
+}
+
+function assertProgram(node, opts) {
+ assert("Program", node, opts);
+}
+
+function assertObjectExpression(node, opts) {
+ assert("ObjectExpression", node, opts);
+}
+
+function assertObjectMethod(node, opts) {
+ assert("ObjectMethod", node, opts);
+}
+
+function assertObjectProperty(node, opts) {
+ assert("ObjectProperty", node, opts);
+}
+
+function assertRestElement(node, opts) {
+ assert("RestElement", node, opts);
+}
+
+function assertReturnStatement(node, opts) {
+ assert("ReturnStatement", node, opts);
+}
+
+function assertSequenceExpression(node, opts) {
+ assert("SequenceExpression", node, opts);
+}
+
+function assertParenthesizedExpression(node, opts) {
+ assert("ParenthesizedExpression", node, opts);
+}
+
+function assertSwitchCase(node, opts) {
+ assert("SwitchCase", node, opts);
+}
+
+function assertSwitchStatement(node, opts) {
+ assert("SwitchStatement", node, opts);
+}
+
+function assertThisExpression(node, opts) {
+ assert("ThisExpression", node, opts);
+}
+
+function assertThrowStatement(node, opts) {
+ assert("ThrowStatement", node, opts);
+}
+
+function assertTryStatement(node, opts) {
+ assert("TryStatement", node, opts);
+}
+
+function assertUnaryExpression(node, opts) {
+ assert("UnaryExpression", node, opts);
+}
+
+function assertUpdateExpression(node, opts) {
+ assert("UpdateExpression", node, opts);
+}
+
+function assertVariableDeclaration(node, opts) {
+ assert("VariableDeclaration", node, opts);
+}
+
+function assertVariableDeclarator(node, opts) {
+ assert("VariableDeclarator", node, opts);
+}
+
+function assertWhileStatement(node, opts) {
+ assert("WhileStatement", node, opts);
+}
+
+function assertWithStatement(node, opts) {
+ assert("WithStatement", node, opts);
+}
+
+function assertAssignmentPattern(node, opts) {
+ assert("AssignmentPattern", node, opts);
+}
+
+function assertArrayPattern(node, opts) {
+ assert("ArrayPattern", node, opts);
+}
+
+function assertArrowFunctionExpression(node, opts) {
+ assert("ArrowFunctionExpression", node, opts);
+}
+
+function assertClassBody(node, opts) {
+ assert("ClassBody", node, opts);
+}
+
+function assertClassExpression(node, opts) {
+ assert("ClassExpression", node, opts);
+}
+
+function assertClassDeclaration(node, opts) {
+ assert("ClassDeclaration", node, opts);
+}
+
+function assertExportAllDeclaration(node, opts) {
+ assert("ExportAllDeclaration", node, opts);
+}
+
+function assertExportDefaultDeclaration(node, opts) {
+ assert("ExportDefaultDeclaration", node, opts);
+}
+
+function assertExportNamedDeclaration(node, opts) {
+ assert("ExportNamedDeclaration", node, opts);
+}
+
+function assertExportSpecifier(node, opts) {
+ assert("ExportSpecifier", node, opts);
+}
+
+function assertForOfStatement(node, opts) {
+ assert("ForOfStatement", node, opts);
+}
+
+function assertImportDeclaration(node, opts) {
+ assert("ImportDeclaration", node, opts);
+}
+
+function assertImportDefaultSpecifier(node, opts) {
+ assert("ImportDefaultSpecifier", node, opts);
+}
+
+function assertImportNamespaceSpecifier(node, opts) {
+ assert("ImportNamespaceSpecifier", node, opts);
+}
+
+function assertImportSpecifier(node, opts) {
+ assert("ImportSpecifier", node, opts);
+}
+
+function assertMetaProperty(node, opts) {
+ assert("MetaProperty", node, opts);
+}
+
+function assertClassMethod(node, opts) {
+ assert("ClassMethod", node, opts);
+}
+
+function assertObjectPattern(node, opts) {
+ assert("ObjectPattern", node, opts);
+}
+
+function assertSpreadElement(node, opts) {
+ assert("SpreadElement", node, opts);
+}
+
+function assertSuper(node, opts) {
+ assert("Super", node, opts);
+}
+
+function assertTaggedTemplateExpression(node, opts) {
+ assert("TaggedTemplateExpression", node, opts);
+}
+
+function assertTemplateElement(node, opts) {
+ assert("TemplateElement", node, opts);
+}
+
+function assertTemplateLiteral(node, opts) {
+ assert("TemplateLiteral", node, opts);
+}
+
+function assertYieldExpression(node, opts) {
+ assert("YieldExpression", node, opts);
+}
+
+function assertAwaitExpression(node, opts) {
+ assert("AwaitExpression", node, opts);
+}
+
+function assertImport(node, opts) {
+ assert("Import", node, opts);
+}
+
+function assertBigIntLiteral(node, opts) {
+ assert("BigIntLiteral", node, opts);
+}
+
+function assertExportNamespaceSpecifier(node, opts) {
+ assert("ExportNamespaceSpecifier", node, opts);
+}
+
+function assertOptionalMemberExpression(node, opts) {
+ assert("OptionalMemberExpression", node, opts);
+}
+
+function assertOptionalCallExpression(node, opts) {
+ assert("OptionalCallExpression", node, opts);
+}
+
+function assertClassProperty(node, opts) {
+ assert("ClassProperty", node, opts);
+}
+
+function assertClassPrivateProperty(node, opts) {
+ assert("ClassPrivateProperty", node, opts);
+}
+
+function assertClassPrivateMethod(node, opts) {
+ assert("ClassPrivateMethod", node, opts);
+}
+
+function assertPrivateName(node, opts) {
+ assert("PrivateName", node, opts);
+}
+
+function assertStaticBlock(node, opts) {
+ assert("StaticBlock", node, opts);
+}
+
+function assertAnyTypeAnnotation(node, opts) {
+ assert("AnyTypeAnnotation", node, opts);
+}
+
+function assertArrayTypeAnnotation(node, opts) {
+ assert("ArrayTypeAnnotation", node, opts);
+}
+
+function assertBooleanTypeAnnotation(node, opts) {
+ assert("BooleanTypeAnnotation", node, opts);
+}
+
+function assertBooleanLiteralTypeAnnotation(node, opts) {
+ assert("BooleanLiteralTypeAnnotation", node, opts);
+}
+
+function assertNullLiteralTypeAnnotation(node, opts) {
+ assert("NullLiteralTypeAnnotation", node, opts);
+}
+
+function assertClassImplements(node, opts) {
+ assert("ClassImplements", node, opts);
+}
+
+function assertDeclareClass(node, opts) {
+ assert("DeclareClass", node, opts);
+}
+
+function assertDeclareFunction(node, opts) {
+ assert("DeclareFunction", node, opts);
+}
+
+function assertDeclareInterface(node, opts) {
+ assert("DeclareInterface", node, opts);
+}
+
+function assertDeclareModule(node, opts) {
+ assert("DeclareModule", node, opts);
+}
+
+function assertDeclareModuleExports(node, opts) {
+ assert("DeclareModuleExports", node, opts);
+}
+
+function assertDeclareTypeAlias(node, opts) {
+ assert("DeclareTypeAlias", node, opts);
+}
+
+function assertDeclareOpaqueType(node, opts) {
+ assert("DeclareOpaqueType", node, opts);
+}
+
+function assertDeclareVariable(node, opts) {
+ assert("DeclareVariable", node, opts);
+}
+
+function assertDeclareExportDeclaration(node, opts) {
+ assert("DeclareExportDeclaration", node, opts);
+}
+
+function assertDeclareExportAllDeclaration(node, opts) {
+ assert("DeclareExportAllDeclaration", node, opts);
+}
+
+function assertDeclaredPredicate(node, opts) {
+ assert("DeclaredPredicate", node, opts);
+}
+
+function assertExistsTypeAnnotation(node, opts) {
+ assert("ExistsTypeAnnotation", node, opts);
+}
+
+function assertFunctionTypeAnnotation(node, opts) {
+ assert("FunctionTypeAnnotation", node, opts);
+}
+
+function assertFunctionTypeParam(node, opts) {
+ assert("FunctionTypeParam", node, opts);
+}
+
+function assertGenericTypeAnnotation(node, opts) {
+ assert("GenericTypeAnnotation", node, opts);
+}
+
+function assertInferredPredicate(node, opts) {
+ assert("InferredPredicate", node, opts);
+}
+
+function assertInterfaceExtends(node, opts) {
+ assert("InterfaceExtends", node, opts);
+}
+
+function assertInterfaceDeclaration(node, opts) {
+ assert("InterfaceDeclaration", node, opts);
+}
+
+function assertInterfaceTypeAnnotation(node, opts) {
+ assert("InterfaceTypeAnnotation", node, opts);
+}
+
+function assertIntersectionTypeAnnotation(node, opts) {
+ assert("IntersectionTypeAnnotation", node, opts);
+}
+
+function assertMixedTypeAnnotation(node, opts) {
+ assert("MixedTypeAnnotation", node, opts);
+}
+
+function assertEmptyTypeAnnotation(node, opts) {
+ assert("EmptyTypeAnnotation", node, opts);
+}
+
+function assertNullableTypeAnnotation(node, opts) {
+ assert("NullableTypeAnnotation", node, opts);
+}
+
+function assertNumberLiteralTypeAnnotation(node, opts) {
+ assert("NumberLiteralTypeAnnotation", node, opts);
+}
+
+function assertNumberTypeAnnotation(node, opts) {
+ assert("NumberTypeAnnotation", node, opts);
+}
+
+function assertObjectTypeAnnotation(node, opts) {
+ assert("ObjectTypeAnnotation", node, opts);
+}
+
+function assertObjectTypeInternalSlot(node, opts) {
+ assert("ObjectTypeInternalSlot", node, opts);
+}
+
+function assertObjectTypeCallProperty(node, opts) {
+ assert("ObjectTypeCallProperty", node, opts);
+}
+
+function assertObjectTypeIndexer(node, opts) {
+ assert("ObjectTypeIndexer", node, opts);
+}
+
+function assertObjectTypeProperty(node, opts) {
+ assert("ObjectTypeProperty", node, opts);
+}
+
+function assertObjectTypeSpreadProperty(node, opts) {
+ assert("ObjectTypeSpreadProperty", node, opts);
+}
+
+function assertOpaqueType(node, opts) {
+ assert("OpaqueType", node, opts);
+}
+
+function assertQualifiedTypeIdentifier(node, opts) {
+ assert("QualifiedTypeIdentifier", node, opts);
+}
+
+function assertStringLiteralTypeAnnotation(node, opts) {
+ assert("StringLiteralTypeAnnotation", node, opts);
+}
+
+function assertStringTypeAnnotation(node, opts) {
+ assert("StringTypeAnnotation", node, opts);
+}
+
+function assertSymbolTypeAnnotation(node, opts) {
+ assert("SymbolTypeAnnotation", node, opts);
+}
+
+function assertThisTypeAnnotation(node, opts) {
+ assert("ThisTypeAnnotation", node, opts);
+}
+
+function assertTupleTypeAnnotation(node, opts) {
+ assert("TupleTypeAnnotation", node, opts);
+}
+
+function assertTypeofTypeAnnotation(node, opts) {
+ assert("TypeofTypeAnnotation", node, opts);
+}
+
+function assertTypeAlias(node, opts) {
+ assert("TypeAlias", node, opts);
+}
+
+function assertTypeAnnotation(node, opts) {
+ assert("TypeAnnotation", node, opts);
+}
+
+function assertTypeCastExpression(node, opts) {
+ assert("TypeCastExpression", node, opts);
+}
+
+function assertTypeParameter(node, opts) {
+ assert("TypeParameter", node, opts);
+}
+
+function assertTypeParameterDeclaration(node, opts) {
+ assert("TypeParameterDeclaration", node, opts);
+}
+
+function assertTypeParameterInstantiation(node, opts) {
+ assert("TypeParameterInstantiation", node, opts);
+}
+
+function assertUnionTypeAnnotation(node, opts) {
+ assert("UnionTypeAnnotation", node, opts);
+}
+
+function assertVariance(node, opts) {
+ assert("Variance", node, opts);
+}
+
+function assertVoidTypeAnnotation(node, opts) {
+ assert("VoidTypeAnnotation", node, opts);
+}
+
+function assertEnumDeclaration(node, opts) {
+ assert("EnumDeclaration", node, opts);
+}
+
+function assertEnumBooleanBody(node, opts) {
+ assert("EnumBooleanBody", node, opts);
+}
+
+function assertEnumNumberBody(node, opts) {
+ assert("EnumNumberBody", node, opts);
+}
+
+function assertEnumStringBody(node, opts) {
+ assert("EnumStringBody", node, opts);
+}
+
+function assertEnumSymbolBody(node, opts) {
+ assert("EnumSymbolBody", node, opts);
+}
+
+function assertEnumBooleanMember(node, opts) {
+ assert("EnumBooleanMember", node, opts);
+}
+
+function assertEnumNumberMember(node, opts) {
+ assert("EnumNumberMember", node, opts);
+}
+
+function assertEnumStringMember(node, opts) {
+ assert("EnumStringMember", node, opts);
+}
+
+function assertEnumDefaultedMember(node, opts) {
+ assert("EnumDefaultedMember", node, opts);
+}
+
+function assertIndexedAccessType(node, opts) {
+ assert("IndexedAccessType", node, opts);
+}
+
+function assertOptionalIndexedAccessType(node, opts) {
+ assert("OptionalIndexedAccessType", node, opts);
+}
+
+function assertJSXAttribute(node, opts) {
+ assert("JSXAttribute", node, opts);
+}
+
+function assertJSXClosingElement(node, opts) {
+ assert("JSXClosingElement", node, opts);
+}
+
+function assertJSXElement(node, opts) {
+ assert("JSXElement", node, opts);
+}
+
+function assertJSXEmptyExpression(node, opts) {
+ assert("JSXEmptyExpression", node, opts);
+}
+
+function assertJSXExpressionContainer(node, opts) {
+ assert("JSXExpressionContainer", node, opts);
+}
+
+function assertJSXSpreadChild(node, opts) {
+ assert("JSXSpreadChild", node, opts);
+}
+
+function assertJSXIdentifier(node, opts) {
+ assert("JSXIdentifier", node, opts);
+}
+
+function assertJSXMemberExpression(node, opts) {
+ assert("JSXMemberExpression", node, opts);
+}
+
+function assertJSXNamespacedName(node, opts) {
+ assert("JSXNamespacedName", node, opts);
+}
+
+function assertJSXOpeningElement(node, opts) {
+ assert("JSXOpeningElement", node, opts);
+}
+
+function assertJSXSpreadAttribute(node, opts) {
+ assert("JSXSpreadAttribute", node, opts);
+}
+
+function assertJSXText(node, opts) {
+ assert("JSXText", node, opts);
+}
+
+function assertJSXFragment(node, opts) {
+ assert("JSXFragment", node, opts);
+}
+
+function assertJSXOpeningFragment(node, opts) {
+ assert("JSXOpeningFragment", node, opts);
+}
+
+function assertJSXClosingFragment(node, opts) {
+ assert("JSXClosingFragment", node, opts);
+}
+
+function assertNoop(node, opts) {
+ assert("Noop", node, opts);
+}
+
+function assertPlaceholder(node, opts) {
+ assert("Placeholder", node, opts);
+}
+
+function assertV8IntrinsicIdentifier(node, opts) {
+ assert("V8IntrinsicIdentifier", node, opts);
+}
+
+function assertArgumentPlaceholder(node, opts) {
+ assert("ArgumentPlaceholder", node, opts);
+}
+
+function assertBindExpression(node, opts) {
+ assert("BindExpression", node, opts);
+}
+
+function assertImportAttribute(node, opts) {
+ assert("ImportAttribute", node, opts);
+}
+
+function assertDecorator(node, opts) {
+ assert("Decorator", node, opts);
+}
+
+function assertDoExpression(node, opts) {
+ assert("DoExpression", node, opts);
+}
+
+function assertExportDefaultSpecifier(node, opts) {
+ assert("ExportDefaultSpecifier", node, opts);
+}
+
+function assertRecordExpression(node, opts) {
+ assert("RecordExpression", node, opts);
+}
+
+function assertTupleExpression(node, opts) {
+ assert("TupleExpression", node, opts);
+}
+
+function assertDecimalLiteral(node, opts) {
+ assert("DecimalLiteral", node, opts);
+}
+
+function assertModuleExpression(node, opts) {
+ assert("ModuleExpression", node, opts);
+}
+
+function assertTopicReference(node, opts) {
+ assert("TopicReference", node, opts);
+}
+
+function assertPipelineTopicExpression(node, opts) {
+ assert("PipelineTopicExpression", node, opts);
+}
+
+function assertPipelineBareFunction(node, opts) {
+ assert("PipelineBareFunction", node, opts);
+}
+
+function assertPipelinePrimaryTopicReference(node, opts) {
+ assert("PipelinePrimaryTopicReference", node, opts);
+}
+
+function assertTSParameterProperty(node, opts) {
+ assert("TSParameterProperty", node, opts);
+}
+
+function assertTSDeclareFunction(node, opts) {
+ assert("TSDeclareFunction", node, opts);
+}
+
+function assertTSDeclareMethod(node, opts) {
+ assert("TSDeclareMethod", node, opts);
+}
+
+function assertTSQualifiedName(node, opts) {
+ assert("TSQualifiedName", node, opts);
+}
+
+function assertTSCallSignatureDeclaration(node, opts) {
+ assert("TSCallSignatureDeclaration", node, opts);
+}
+
+function assertTSConstructSignatureDeclaration(node, opts) {
+ assert("TSConstructSignatureDeclaration", node, opts);
+}
+
+function assertTSPropertySignature(node, opts) {
+ assert("TSPropertySignature", node, opts);
+}
+
+function assertTSMethodSignature(node, opts) {
+ assert("TSMethodSignature", node, opts);
+}
+
+function assertTSIndexSignature(node, opts) {
+ assert("TSIndexSignature", node, opts);
+}
+
+function assertTSAnyKeyword(node, opts) {
+ assert("TSAnyKeyword", node, opts);
+}
+
+function assertTSBooleanKeyword(node, opts) {
+ assert("TSBooleanKeyword", node, opts);
+}
+
+function assertTSBigIntKeyword(node, opts) {
+ assert("TSBigIntKeyword", node, opts);
+}
+
+function assertTSIntrinsicKeyword(node, opts) {
+ assert("TSIntrinsicKeyword", node, opts);
+}
+
+function assertTSNeverKeyword(node, opts) {
+ assert("TSNeverKeyword", node, opts);
+}
+
+function assertTSNullKeyword(node, opts) {
+ assert("TSNullKeyword", node, opts);
+}
+
+function assertTSNumberKeyword(node, opts) {
+ assert("TSNumberKeyword", node, opts);
+}
+
+function assertTSObjectKeyword(node, opts) {
+ assert("TSObjectKeyword", node, opts);
+}
+
+function assertTSStringKeyword(node, opts) {
+ assert("TSStringKeyword", node, opts);
+}
+
+function assertTSSymbolKeyword(node, opts) {
+ assert("TSSymbolKeyword", node, opts);
+}
+
+function assertTSUndefinedKeyword(node, opts) {
+ assert("TSUndefinedKeyword", node, opts);
+}
+
+function assertTSUnknownKeyword(node, opts) {
+ assert("TSUnknownKeyword", node, opts);
+}
+
+function assertTSVoidKeyword(node, opts) {
+ assert("TSVoidKeyword", node, opts);
+}
+
+function assertTSThisType(node, opts) {
+ assert("TSThisType", node, opts);
+}
+
+function assertTSFunctionType(node, opts) {
+ assert("TSFunctionType", node, opts);
+}
+
+function assertTSConstructorType(node, opts) {
+ assert("TSConstructorType", node, opts);
+}
+
+function assertTSTypeReference(node, opts) {
+ assert("TSTypeReference", node, opts);
+}
+
+function assertTSTypePredicate(node, opts) {
+ assert("TSTypePredicate", node, opts);
+}
+
+function assertTSTypeQuery(node, opts) {
+ assert("TSTypeQuery", node, opts);
+}
+
+function assertTSTypeLiteral(node, opts) {
+ assert("TSTypeLiteral", node, opts);
+}
+
+function assertTSArrayType(node, opts) {
+ assert("TSArrayType", node, opts);
+}
+
+function assertTSTupleType(node, opts) {
+ assert("TSTupleType", node, opts);
+}
+
+function assertTSOptionalType(node, opts) {
+ assert("TSOptionalType", node, opts);
+}
+
+function assertTSRestType(node, opts) {
+ assert("TSRestType", node, opts);
+}
+
+function assertTSNamedTupleMember(node, opts) {
+ assert("TSNamedTupleMember", node, opts);
+}
+
+function assertTSUnionType(node, opts) {
+ assert("TSUnionType", node, opts);
+}
+
+function assertTSIntersectionType(node, opts) {
+ assert("TSIntersectionType", node, opts);
+}
+
+function assertTSConditionalType(node, opts) {
+ assert("TSConditionalType", node, opts);
+}
+
+function assertTSInferType(node, opts) {
+ assert("TSInferType", node, opts);
+}
+
+function assertTSParenthesizedType(node, opts) {
+ assert("TSParenthesizedType", node, opts);
+}
+
+function assertTSTypeOperator(node, opts) {
+ assert("TSTypeOperator", node, opts);
+}
+
+function assertTSIndexedAccessType(node, opts) {
+ assert("TSIndexedAccessType", node, opts);
+}
+
+function assertTSMappedType(node, opts) {
+ assert("TSMappedType", node, opts);
+}
+
+function assertTSLiteralType(node, opts) {
+ assert("TSLiteralType", node, opts);
+}
+
+function assertTSExpressionWithTypeArguments(node, opts) {
+ assert("TSExpressionWithTypeArguments", node, opts);
+}
+
+function assertTSInterfaceDeclaration(node, opts) {
+ assert("TSInterfaceDeclaration", node, opts);
+}
+
+function assertTSInterfaceBody(node, opts) {
+ assert("TSInterfaceBody", node, opts);
+}
+
+function assertTSTypeAliasDeclaration(node, opts) {
+ assert("TSTypeAliasDeclaration", node, opts);
+}
+
+function assertTSAsExpression(node, opts) {
+ assert("TSAsExpression", node, opts);
+}
+
+function assertTSTypeAssertion(node, opts) {
+ assert("TSTypeAssertion", node, opts);
+}
+
+function assertTSEnumDeclaration(node, opts) {
+ assert("TSEnumDeclaration", node, opts);
+}
+
+function assertTSEnumMember(node, opts) {
+ assert("TSEnumMember", node, opts);
+}
+
+function assertTSModuleDeclaration(node, opts) {
+ assert("TSModuleDeclaration", node, opts);
+}
+
+function assertTSModuleBlock(node, opts) {
+ assert("TSModuleBlock", node, opts);
+}
+
+function assertTSImportType(node, opts) {
+ assert("TSImportType", node, opts);
+}
+
+function assertTSImportEqualsDeclaration(node, opts) {
+ assert("TSImportEqualsDeclaration", node, opts);
+}
+
+function assertTSExternalModuleReference(node, opts) {
+ assert("TSExternalModuleReference", node, opts);
+}
+
+function assertTSNonNullExpression(node, opts) {
+ assert("TSNonNullExpression", node, opts);
+}
+
+function assertTSExportAssignment(node, opts) {
+ assert("TSExportAssignment", node, opts);
+}
+
+function assertTSNamespaceExportDeclaration(node, opts) {
+ assert("TSNamespaceExportDeclaration", node, opts);
+}
+
+function assertTSTypeAnnotation(node, opts) {
+ assert("TSTypeAnnotation", node, opts);
+}
+
+function assertTSTypeParameterInstantiation(node, opts) {
+ assert("TSTypeParameterInstantiation", node, opts);
+}
+
+function assertTSTypeParameterDeclaration(node, opts) {
+ assert("TSTypeParameterDeclaration", node, opts);
+}
+
+function assertTSTypeParameter(node, opts) {
+ assert("TSTypeParameter", node, opts);
+}
+
+function assertStandardized(node, opts) {
+ assert("Standardized", node, opts);
+}
+
+function assertExpression(node, opts) {
+ assert("Expression", node, opts);
+}
+
+function assertBinary(node, opts) {
+ assert("Binary", node, opts);
+}
+
+function assertScopable(node, opts) {
+ assert("Scopable", node, opts);
+}
+
+function assertBlockParent(node, opts) {
+ assert("BlockParent", node, opts);
+}
+
+function assertBlock(node, opts) {
+ assert("Block", node, opts);
+}
+
+function assertStatement(node, opts) {
+ assert("Statement", node, opts);
+}
+
+function assertTerminatorless(node, opts) {
+ assert("Terminatorless", node, opts);
+}
+
+function assertCompletionStatement(node, opts) {
+ assert("CompletionStatement", node, opts);
+}
+
+function assertConditional(node, opts) {
+ assert("Conditional", node, opts);
+}
+
+function assertLoop(node, opts) {
+ assert("Loop", node, opts);
+}
+
+function assertWhile(node, opts) {
+ assert("While", node, opts);
+}
+
+function assertExpressionWrapper(node, opts) {
+ assert("ExpressionWrapper", node, opts);
+}
+
+function assertFor(node, opts) {
+ assert("For", node, opts);
+}
+
+function assertForXStatement(node, opts) {
+ assert("ForXStatement", node, opts);
+}
+
+function assertFunction(node, opts) {
+ assert("Function", node, opts);
+}
+
+function assertFunctionParent(node, opts) {
+ assert("FunctionParent", node, opts);
+}
+
+function assertPureish(node, opts) {
+ assert("Pureish", node, opts);
+}
+
+function assertDeclaration(node, opts) {
+ assert("Declaration", node, opts);
+}
+
+function assertPatternLike(node, opts) {
+ assert("PatternLike", node, opts);
+}
+
+function assertLVal(node, opts) {
+ assert("LVal", node, opts);
+}
+
+function assertTSEntityName(node, opts) {
+ assert("TSEntityName", node, opts);
+}
+
+function assertLiteral(node, opts) {
+ assert("Literal", node, opts);
+}
+
+function assertImmutable(node, opts) {
+ assert("Immutable", node, opts);
+}
+
+function assertUserWhitespacable(node, opts) {
+ assert("UserWhitespacable", node, opts);
+}
+
+function assertMethod(node, opts) {
+ assert("Method", node, opts);
+}
+
+function assertObjectMember(node, opts) {
+ assert("ObjectMember", node, opts);
+}
+
+function assertProperty(node, opts) {
+ assert("Property", node, opts);
+}
+
+function assertUnaryLike(node, opts) {
+ assert("UnaryLike", node, opts);
+}
+
+function assertPattern(node, opts) {
+ assert("Pattern", node, opts);
+}
+
+function assertClass(node, opts) {
+ assert("Class", node, opts);
+}
+
+function assertModuleDeclaration(node, opts) {
+ assert("ModuleDeclaration", node, opts);
+}
+
+function assertExportDeclaration(node, opts) {
+ assert("ExportDeclaration", node, opts);
+}
+
+function assertModuleSpecifier(node, opts) {
+ assert("ModuleSpecifier", node, opts);
+}
+
+function assertPrivate(node, opts) {
+ assert("Private", node, opts);
+}
+
+function assertFlow(node, opts) {
+ assert("Flow", node, opts);
+}
+
+function assertFlowType(node, opts) {
+ assert("FlowType", node, opts);
+}
+
+function assertFlowBaseAnnotation(node, opts) {
+ assert("FlowBaseAnnotation", node, opts);
+}
+
+function assertFlowDeclaration(node, opts) {
+ assert("FlowDeclaration", node, opts);
+}
+
+function assertFlowPredicate(node, opts) {
+ assert("FlowPredicate", node, opts);
+}
+
+function assertEnumBody(node, opts) {
+ assert("EnumBody", node, opts);
+}
+
+function assertEnumMember(node, opts) {
+ assert("EnumMember", node, opts);
+}
+
+function assertJSX(node, opts) {
+ assert("JSX", node, opts);
+}
+
+function assertMiscellaneous(node, opts) {
+ assert("Miscellaneous", node, opts);
+}
+
+function assertTypeScript(node, opts) {
+ assert("TypeScript", node, opts);
+}
+
+function assertTSTypeElement(node, opts) {
+ assert("TSTypeElement", node, opts);
+}
+
+function assertTSType(node, opts) {
+ assert("TSType", node, opts);
+}
+
+function assertTSBaseType(node, opts) {
+ assert("TSBaseType", node, opts);
+}
+
+function assertNumberLiteral(node, opts) {
+ console.trace("The node type NumberLiteral has been renamed to NumericLiteral");
+ assert("NumberLiteral", node, opts);
+}
+
+function assertRegexLiteral(node, opts) {
+ console.trace("The node type RegexLiteral has been renamed to RegExpLiteral");
+ assert("RegexLiteral", node, opts);
+}
+
+function assertRestProperty(node, opts) {
+ console.trace("The node type RestProperty has been renamed to RestElement");
+ assert("RestProperty", node, opts);
+}
+
+function assertSpreadProperty(node, opts) {
+ console.trace("The node type SpreadProperty has been renamed to SpreadElement");
+ assert("SpreadProperty", node, opts);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/ast-types/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/ast-types/generated/index.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/ast-types/generated/index.js
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js
new file mode 100644
index 0000000000..c28edb6250
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/builder.js
@@ -0,0 +1,43 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = builder;
+
+var _definitions = require("../definitions");
+
+var _validate = require("../validators/validate");
+
+function builder() {
+ const type = this;
+ const keys = _definitions.BUILDER_KEYS[type];
+ const countArgs = arguments.length;
+
+ if (countArgs > keys.length) {
+ throw new Error(`${type}: Too many arguments passed. Received ${countArgs} but can receive no more than ${keys.length}`);
+ }
+
+ const node = {
+ type
+ };
+
+ for (let i = 0; i < keys.length; ++i) {
+ const key = keys[i];
+ const field = _definitions.NODE_FIELDS[type][key];
+ let arg;
+ if (i < countArgs) arg = arguments[i];
+
+ if (arg === undefined) {
+ arg = Array.isArray(field.default) ? [] : field.default;
+ }
+
+ node[key] = arg;
+ }
+
+ for (const key in node) {
+ (0, _validate.default)(node, key, node[key]);
+ }
+
+ return node;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
new file mode 100644
index 0000000000..ddf20fdd3a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createFlowUnionType.js
@@ -0,0 +1,20 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createFlowUnionType;
+
+var _generated = require("../generated");
+
+var _removeTypeDuplicates = require("../../modifications/flow/removeTypeDuplicates");
+
+function createFlowUnionType(types) {
+ const flattened = (0, _removeTypeDuplicates.default)(types);
+
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return (0, _generated.unionTypeAnnotation)(flattened);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
new file mode 100644
index 0000000000..11dca05595
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/flow/createTypeAnnotationBasedOnTypeof.js
@@ -0,0 +1,41 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _generated = require("../generated");
+
+var _default = createTypeAnnotationBasedOnTypeof;
+exports.default = _default;
+
+function createTypeAnnotationBasedOnTypeof(type) {
+ switch (type) {
+ case "string":
+ return (0, _generated.stringTypeAnnotation)();
+
+ case "number":
+ return (0, _generated.numberTypeAnnotation)();
+
+ case "undefined":
+ return (0, _generated.voidTypeAnnotation)();
+
+ case "boolean":
+ return (0, _generated.booleanTypeAnnotation)();
+
+ case "function":
+ return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Function"));
+
+ case "object":
+ return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Object"));
+
+ case "symbol":
+ return (0, _generated.genericTypeAnnotation)((0, _generated.identifier)("Symbol"));
+
+ case "bigint":
+ return (0, _generated.anyTypeAnnotation)();
+ }
+
+ throw new Error("Invalid typeof value: " + type);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js
new file mode 100644
index 0000000000..05706b0bc7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/index.js
@@ -0,0 +1,1261 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.anyTypeAnnotation = anyTypeAnnotation;
+exports.argumentPlaceholder = argumentPlaceholder;
+exports.arrayExpression = arrayExpression;
+exports.arrayPattern = arrayPattern;
+exports.arrayTypeAnnotation = arrayTypeAnnotation;
+exports.arrowFunctionExpression = arrowFunctionExpression;
+exports.assignmentExpression = assignmentExpression;
+exports.assignmentPattern = assignmentPattern;
+exports.awaitExpression = awaitExpression;
+exports.bigIntLiteral = bigIntLiteral;
+exports.binaryExpression = binaryExpression;
+exports.bindExpression = bindExpression;
+exports.blockStatement = blockStatement;
+exports.booleanLiteral = booleanLiteral;
+exports.booleanLiteralTypeAnnotation = booleanLiteralTypeAnnotation;
+exports.booleanTypeAnnotation = booleanTypeAnnotation;
+exports.breakStatement = breakStatement;
+exports.callExpression = callExpression;
+exports.catchClause = catchClause;
+exports.classBody = classBody;
+exports.classDeclaration = classDeclaration;
+exports.classExpression = classExpression;
+exports.classImplements = classImplements;
+exports.classMethod = classMethod;
+exports.classPrivateMethod = classPrivateMethod;
+exports.classPrivateProperty = classPrivateProperty;
+exports.classProperty = classProperty;
+exports.conditionalExpression = conditionalExpression;
+exports.continueStatement = continueStatement;
+exports.debuggerStatement = debuggerStatement;
+exports.decimalLiteral = decimalLiteral;
+exports.declareClass = declareClass;
+exports.declareExportAllDeclaration = declareExportAllDeclaration;
+exports.declareExportDeclaration = declareExportDeclaration;
+exports.declareFunction = declareFunction;
+exports.declareInterface = declareInterface;
+exports.declareModule = declareModule;
+exports.declareModuleExports = declareModuleExports;
+exports.declareOpaqueType = declareOpaqueType;
+exports.declareTypeAlias = declareTypeAlias;
+exports.declareVariable = declareVariable;
+exports.declaredPredicate = declaredPredicate;
+exports.decorator = decorator;
+exports.directive = directive;
+exports.directiveLiteral = directiveLiteral;
+exports.doExpression = doExpression;
+exports.doWhileStatement = doWhileStatement;
+exports.emptyStatement = emptyStatement;
+exports.emptyTypeAnnotation = emptyTypeAnnotation;
+exports.enumBooleanBody = enumBooleanBody;
+exports.enumBooleanMember = enumBooleanMember;
+exports.enumDeclaration = enumDeclaration;
+exports.enumDefaultedMember = enumDefaultedMember;
+exports.enumNumberBody = enumNumberBody;
+exports.enumNumberMember = enumNumberMember;
+exports.enumStringBody = enumStringBody;
+exports.enumStringMember = enumStringMember;
+exports.enumSymbolBody = enumSymbolBody;
+exports.existsTypeAnnotation = existsTypeAnnotation;
+exports.exportAllDeclaration = exportAllDeclaration;
+exports.exportDefaultDeclaration = exportDefaultDeclaration;
+exports.exportDefaultSpecifier = exportDefaultSpecifier;
+exports.exportNamedDeclaration = exportNamedDeclaration;
+exports.exportNamespaceSpecifier = exportNamespaceSpecifier;
+exports.exportSpecifier = exportSpecifier;
+exports.expressionStatement = expressionStatement;
+exports.file = file;
+exports.forInStatement = forInStatement;
+exports.forOfStatement = forOfStatement;
+exports.forStatement = forStatement;
+exports.functionDeclaration = functionDeclaration;
+exports.functionExpression = functionExpression;
+exports.functionTypeAnnotation = functionTypeAnnotation;
+exports.functionTypeParam = functionTypeParam;
+exports.genericTypeAnnotation = genericTypeAnnotation;
+exports.identifier = identifier;
+exports.ifStatement = ifStatement;
+exports.import = _import;
+exports.importAttribute = importAttribute;
+exports.importDeclaration = importDeclaration;
+exports.importDefaultSpecifier = importDefaultSpecifier;
+exports.importNamespaceSpecifier = importNamespaceSpecifier;
+exports.importSpecifier = importSpecifier;
+exports.indexedAccessType = indexedAccessType;
+exports.inferredPredicate = inferredPredicate;
+exports.interfaceDeclaration = interfaceDeclaration;
+exports.interfaceExtends = interfaceExtends;
+exports.interfaceTypeAnnotation = interfaceTypeAnnotation;
+exports.interpreterDirective = interpreterDirective;
+exports.intersectionTypeAnnotation = intersectionTypeAnnotation;
+exports.jSXAttribute = exports.jsxAttribute = jsxAttribute;
+exports.jSXClosingElement = exports.jsxClosingElement = jsxClosingElement;
+exports.jSXClosingFragment = exports.jsxClosingFragment = jsxClosingFragment;
+exports.jSXElement = exports.jsxElement = jsxElement;
+exports.jSXEmptyExpression = exports.jsxEmptyExpression = jsxEmptyExpression;
+exports.jSXExpressionContainer = exports.jsxExpressionContainer = jsxExpressionContainer;
+exports.jSXFragment = exports.jsxFragment = jsxFragment;
+exports.jSXIdentifier = exports.jsxIdentifier = jsxIdentifier;
+exports.jSXMemberExpression = exports.jsxMemberExpression = jsxMemberExpression;
+exports.jSXNamespacedName = exports.jsxNamespacedName = jsxNamespacedName;
+exports.jSXOpeningElement = exports.jsxOpeningElement = jsxOpeningElement;
+exports.jSXOpeningFragment = exports.jsxOpeningFragment = jsxOpeningFragment;
+exports.jSXSpreadAttribute = exports.jsxSpreadAttribute = jsxSpreadAttribute;
+exports.jSXSpreadChild = exports.jsxSpreadChild = jsxSpreadChild;
+exports.jSXText = exports.jsxText = jsxText;
+exports.labeledStatement = labeledStatement;
+exports.logicalExpression = logicalExpression;
+exports.memberExpression = memberExpression;
+exports.metaProperty = metaProperty;
+exports.mixedTypeAnnotation = mixedTypeAnnotation;
+exports.moduleExpression = moduleExpression;
+exports.newExpression = newExpression;
+exports.noop = noop;
+exports.nullLiteral = nullLiteral;
+exports.nullLiteralTypeAnnotation = nullLiteralTypeAnnotation;
+exports.nullableTypeAnnotation = nullableTypeAnnotation;
+exports.numberLiteral = NumberLiteral;
+exports.numberLiteralTypeAnnotation = numberLiteralTypeAnnotation;
+exports.numberTypeAnnotation = numberTypeAnnotation;
+exports.numericLiteral = numericLiteral;
+exports.objectExpression = objectExpression;
+exports.objectMethod = objectMethod;
+exports.objectPattern = objectPattern;
+exports.objectProperty = objectProperty;
+exports.objectTypeAnnotation = objectTypeAnnotation;
+exports.objectTypeCallProperty = objectTypeCallProperty;
+exports.objectTypeIndexer = objectTypeIndexer;
+exports.objectTypeInternalSlot = objectTypeInternalSlot;
+exports.objectTypeProperty = objectTypeProperty;
+exports.objectTypeSpreadProperty = objectTypeSpreadProperty;
+exports.opaqueType = opaqueType;
+exports.optionalCallExpression = optionalCallExpression;
+exports.optionalIndexedAccessType = optionalIndexedAccessType;
+exports.optionalMemberExpression = optionalMemberExpression;
+exports.parenthesizedExpression = parenthesizedExpression;
+exports.pipelineBareFunction = pipelineBareFunction;
+exports.pipelinePrimaryTopicReference = pipelinePrimaryTopicReference;
+exports.pipelineTopicExpression = pipelineTopicExpression;
+exports.placeholder = placeholder;
+exports.privateName = privateName;
+exports.program = program;
+exports.qualifiedTypeIdentifier = qualifiedTypeIdentifier;
+exports.recordExpression = recordExpression;
+exports.regExpLiteral = regExpLiteral;
+exports.regexLiteral = RegexLiteral;
+exports.restElement = restElement;
+exports.restProperty = RestProperty;
+exports.returnStatement = returnStatement;
+exports.sequenceExpression = sequenceExpression;
+exports.spreadElement = spreadElement;
+exports.spreadProperty = SpreadProperty;
+exports.staticBlock = staticBlock;
+exports.stringLiteral = stringLiteral;
+exports.stringLiteralTypeAnnotation = stringLiteralTypeAnnotation;
+exports.stringTypeAnnotation = stringTypeAnnotation;
+exports.super = _super;
+exports.switchCase = switchCase;
+exports.switchStatement = switchStatement;
+exports.symbolTypeAnnotation = symbolTypeAnnotation;
+exports.taggedTemplateExpression = taggedTemplateExpression;
+exports.templateElement = templateElement;
+exports.templateLiteral = templateLiteral;
+exports.thisExpression = thisExpression;
+exports.thisTypeAnnotation = thisTypeAnnotation;
+exports.throwStatement = throwStatement;
+exports.topicReference = topicReference;
+exports.tryStatement = tryStatement;
+exports.tSAnyKeyword = exports.tsAnyKeyword = tsAnyKeyword;
+exports.tSArrayType = exports.tsArrayType = tsArrayType;
+exports.tSAsExpression = exports.tsAsExpression = tsAsExpression;
+exports.tSBigIntKeyword = exports.tsBigIntKeyword = tsBigIntKeyword;
+exports.tSBooleanKeyword = exports.tsBooleanKeyword = tsBooleanKeyword;
+exports.tSCallSignatureDeclaration = exports.tsCallSignatureDeclaration = tsCallSignatureDeclaration;
+exports.tSConditionalType = exports.tsConditionalType = tsConditionalType;
+exports.tSConstructSignatureDeclaration = exports.tsConstructSignatureDeclaration = tsConstructSignatureDeclaration;
+exports.tSConstructorType = exports.tsConstructorType = tsConstructorType;
+exports.tSDeclareFunction = exports.tsDeclareFunction = tsDeclareFunction;
+exports.tSDeclareMethod = exports.tsDeclareMethod = tsDeclareMethod;
+exports.tSEnumDeclaration = exports.tsEnumDeclaration = tsEnumDeclaration;
+exports.tSEnumMember = exports.tsEnumMember = tsEnumMember;
+exports.tSExportAssignment = exports.tsExportAssignment = tsExportAssignment;
+exports.tSExpressionWithTypeArguments = exports.tsExpressionWithTypeArguments = tsExpressionWithTypeArguments;
+exports.tSExternalModuleReference = exports.tsExternalModuleReference = tsExternalModuleReference;
+exports.tSFunctionType = exports.tsFunctionType = tsFunctionType;
+exports.tSImportEqualsDeclaration = exports.tsImportEqualsDeclaration = tsImportEqualsDeclaration;
+exports.tSImportType = exports.tsImportType = tsImportType;
+exports.tSIndexSignature = exports.tsIndexSignature = tsIndexSignature;
+exports.tSIndexedAccessType = exports.tsIndexedAccessType = tsIndexedAccessType;
+exports.tSInferType = exports.tsInferType = tsInferType;
+exports.tSInterfaceBody = exports.tsInterfaceBody = tsInterfaceBody;
+exports.tSInterfaceDeclaration = exports.tsInterfaceDeclaration = tsInterfaceDeclaration;
+exports.tSIntersectionType = exports.tsIntersectionType = tsIntersectionType;
+exports.tSIntrinsicKeyword = exports.tsIntrinsicKeyword = tsIntrinsicKeyword;
+exports.tSLiteralType = exports.tsLiteralType = tsLiteralType;
+exports.tSMappedType = exports.tsMappedType = tsMappedType;
+exports.tSMethodSignature = exports.tsMethodSignature = tsMethodSignature;
+exports.tSModuleBlock = exports.tsModuleBlock = tsModuleBlock;
+exports.tSModuleDeclaration = exports.tsModuleDeclaration = tsModuleDeclaration;
+exports.tSNamedTupleMember = exports.tsNamedTupleMember = tsNamedTupleMember;
+exports.tSNamespaceExportDeclaration = exports.tsNamespaceExportDeclaration = tsNamespaceExportDeclaration;
+exports.tSNeverKeyword = exports.tsNeverKeyword = tsNeverKeyword;
+exports.tSNonNullExpression = exports.tsNonNullExpression = tsNonNullExpression;
+exports.tSNullKeyword = exports.tsNullKeyword = tsNullKeyword;
+exports.tSNumberKeyword = exports.tsNumberKeyword = tsNumberKeyword;
+exports.tSObjectKeyword = exports.tsObjectKeyword = tsObjectKeyword;
+exports.tSOptionalType = exports.tsOptionalType = tsOptionalType;
+exports.tSParameterProperty = exports.tsParameterProperty = tsParameterProperty;
+exports.tSParenthesizedType = exports.tsParenthesizedType = tsParenthesizedType;
+exports.tSPropertySignature = exports.tsPropertySignature = tsPropertySignature;
+exports.tSQualifiedName = exports.tsQualifiedName = tsQualifiedName;
+exports.tSRestType = exports.tsRestType = tsRestType;
+exports.tSStringKeyword = exports.tsStringKeyword = tsStringKeyword;
+exports.tSSymbolKeyword = exports.tsSymbolKeyword = tsSymbolKeyword;
+exports.tSThisType = exports.tsThisType = tsThisType;
+exports.tSTupleType = exports.tsTupleType = tsTupleType;
+exports.tSTypeAliasDeclaration = exports.tsTypeAliasDeclaration = tsTypeAliasDeclaration;
+exports.tSTypeAnnotation = exports.tsTypeAnnotation = tsTypeAnnotation;
+exports.tSTypeAssertion = exports.tsTypeAssertion = tsTypeAssertion;
+exports.tSTypeLiteral = exports.tsTypeLiteral = tsTypeLiteral;
+exports.tSTypeOperator = exports.tsTypeOperator = tsTypeOperator;
+exports.tSTypeParameter = exports.tsTypeParameter = tsTypeParameter;
+exports.tSTypeParameterDeclaration = exports.tsTypeParameterDeclaration = tsTypeParameterDeclaration;
+exports.tSTypeParameterInstantiation = exports.tsTypeParameterInstantiation = tsTypeParameterInstantiation;
+exports.tSTypePredicate = exports.tsTypePredicate = tsTypePredicate;
+exports.tSTypeQuery = exports.tsTypeQuery = tsTypeQuery;
+exports.tSTypeReference = exports.tsTypeReference = tsTypeReference;
+exports.tSUndefinedKeyword = exports.tsUndefinedKeyword = tsUndefinedKeyword;
+exports.tSUnionType = exports.tsUnionType = tsUnionType;
+exports.tSUnknownKeyword = exports.tsUnknownKeyword = tsUnknownKeyword;
+exports.tSVoidKeyword = exports.tsVoidKeyword = tsVoidKeyword;
+exports.tupleExpression = tupleExpression;
+exports.tupleTypeAnnotation = tupleTypeAnnotation;
+exports.typeAlias = typeAlias;
+exports.typeAnnotation = typeAnnotation;
+exports.typeCastExpression = typeCastExpression;
+exports.typeParameter = typeParameter;
+exports.typeParameterDeclaration = typeParameterDeclaration;
+exports.typeParameterInstantiation = typeParameterInstantiation;
+exports.typeofTypeAnnotation = typeofTypeAnnotation;
+exports.unaryExpression = unaryExpression;
+exports.unionTypeAnnotation = unionTypeAnnotation;
+exports.updateExpression = updateExpression;
+exports.v8IntrinsicIdentifier = v8IntrinsicIdentifier;
+exports.variableDeclaration = variableDeclaration;
+exports.variableDeclarator = variableDeclarator;
+exports.variance = variance;
+exports.voidTypeAnnotation = voidTypeAnnotation;
+exports.whileStatement = whileStatement;
+exports.withStatement = withStatement;
+exports.yieldExpression = yieldExpression;
+
+var _builder = require("../builder");
+
+function arrayExpression(elements) {
+ return _builder.default.apply("ArrayExpression", arguments);
+}
+
+function assignmentExpression(operator, left, right) {
+ return _builder.default.apply("AssignmentExpression", arguments);
+}
+
+function binaryExpression(operator, left, right) {
+ return _builder.default.apply("BinaryExpression", arguments);
+}
+
+function interpreterDirective(value) {
+ return _builder.default.apply("InterpreterDirective", arguments);
+}
+
+function directive(value) {
+ return _builder.default.apply("Directive", arguments);
+}
+
+function directiveLiteral(value) {
+ return _builder.default.apply("DirectiveLiteral", arguments);
+}
+
+function blockStatement(body, directives) {
+ return _builder.default.apply("BlockStatement", arguments);
+}
+
+function breakStatement(label) {
+ return _builder.default.apply("BreakStatement", arguments);
+}
+
+function callExpression(callee, _arguments) {
+ return _builder.default.apply("CallExpression", arguments);
+}
+
+function catchClause(param, body) {
+ return _builder.default.apply("CatchClause", arguments);
+}
+
+function conditionalExpression(test, consequent, alternate) {
+ return _builder.default.apply("ConditionalExpression", arguments);
+}
+
+function continueStatement(label) {
+ return _builder.default.apply("ContinueStatement", arguments);
+}
+
+function debuggerStatement() {
+ return _builder.default.apply("DebuggerStatement", arguments);
+}
+
+function doWhileStatement(test, body) {
+ return _builder.default.apply("DoWhileStatement", arguments);
+}
+
+function emptyStatement() {
+ return _builder.default.apply("EmptyStatement", arguments);
+}
+
+function expressionStatement(expression) {
+ return _builder.default.apply("ExpressionStatement", arguments);
+}
+
+function file(program, comments, tokens) {
+ return _builder.default.apply("File", arguments);
+}
+
+function forInStatement(left, right, body) {
+ return _builder.default.apply("ForInStatement", arguments);
+}
+
+function forStatement(init, test, update, body) {
+ return _builder.default.apply("ForStatement", arguments);
+}
+
+function functionDeclaration(id, params, body, generator, async) {
+ return _builder.default.apply("FunctionDeclaration", arguments);
+}
+
+function functionExpression(id, params, body, generator, async) {
+ return _builder.default.apply("FunctionExpression", arguments);
+}
+
+function identifier(name) {
+ return _builder.default.apply("Identifier", arguments);
+}
+
+function ifStatement(test, consequent, alternate) {
+ return _builder.default.apply("IfStatement", arguments);
+}
+
+function labeledStatement(label, body) {
+ return _builder.default.apply("LabeledStatement", arguments);
+}
+
+function stringLiteral(value) {
+ return _builder.default.apply("StringLiteral", arguments);
+}
+
+function numericLiteral(value) {
+ return _builder.default.apply("NumericLiteral", arguments);
+}
+
+function nullLiteral() {
+ return _builder.default.apply("NullLiteral", arguments);
+}
+
+function booleanLiteral(value) {
+ return _builder.default.apply("BooleanLiteral", arguments);
+}
+
+function regExpLiteral(pattern, flags) {
+ return _builder.default.apply("RegExpLiteral", arguments);
+}
+
+function logicalExpression(operator, left, right) {
+ return _builder.default.apply("LogicalExpression", arguments);
+}
+
+function memberExpression(object, property, computed, optional) {
+ return _builder.default.apply("MemberExpression", arguments);
+}
+
+function newExpression(callee, _arguments) {
+ return _builder.default.apply("NewExpression", arguments);
+}
+
+function program(body, directives, sourceType, interpreter) {
+ return _builder.default.apply("Program", arguments);
+}
+
+function objectExpression(properties) {
+ return _builder.default.apply("ObjectExpression", arguments);
+}
+
+function objectMethod(kind, key, params, body, computed, generator, async) {
+ return _builder.default.apply("ObjectMethod", arguments);
+}
+
+function objectProperty(key, value, computed, shorthand, decorators) {
+ return _builder.default.apply("ObjectProperty", arguments);
+}
+
+function restElement(argument) {
+ return _builder.default.apply("RestElement", arguments);
+}
+
+function returnStatement(argument) {
+ return _builder.default.apply("ReturnStatement", arguments);
+}
+
+function sequenceExpression(expressions) {
+ return _builder.default.apply("SequenceExpression", arguments);
+}
+
+function parenthesizedExpression(expression) {
+ return _builder.default.apply("ParenthesizedExpression", arguments);
+}
+
+function switchCase(test, consequent) {
+ return _builder.default.apply("SwitchCase", arguments);
+}
+
+function switchStatement(discriminant, cases) {
+ return _builder.default.apply("SwitchStatement", arguments);
+}
+
+function thisExpression() {
+ return _builder.default.apply("ThisExpression", arguments);
+}
+
+function throwStatement(argument) {
+ return _builder.default.apply("ThrowStatement", arguments);
+}
+
+function tryStatement(block, handler, finalizer) {
+ return _builder.default.apply("TryStatement", arguments);
+}
+
+function unaryExpression(operator, argument, prefix) {
+ return _builder.default.apply("UnaryExpression", arguments);
+}
+
+function updateExpression(operator, argument, prefix) {
+ return _builder.default.apply("UpdateExpression", arguments);
+}
+
+function variableDeclaration(kind, declarations) {
+ return _builder.default.apply("VariableDeclaration", arguments);
+}
+
+function variableDeclarator(id, init) {
+ return _builder.default.apply("VariableDeclarator", arguments);
+}
+
+function whileStatement(test, body) {
+ return _builder.default.apply("WhileStatement", arguments);
+}
+
+function withStatement(object, body) {
+ return _builder.default.apply("WithStatement", arguments);
+}
+
+function assignmentPattern(left, right) {
+ return _builder.default.apply("AssignmentPattern", arguments);
+}
+
+function arrayPattern(elements) {
+ return _builder.default.apply("ArrayPattern", arguments);
+}
+
+function arrowFunctionExpression(params, body, async) {
+ return _builder.default.apply("ArrowFunctionExpression", arguments);
+}
+
+function classBody(body) {
+ return _builder.default.apply("ClassBody", arguments);
+}
+
+function classExpression(id, superClass, body, decorators) {
+ return _builder.default.apply("ClassExpression", arguments);
+}
+
+function classDeclaration(id, superClass, body, decorators) {
+ return _builder.default.apply("ClassDeclaration", arguments);
+}
+
+function exportAllDeclaration(source) {
+ return _builder.default.apply("ExportAllDeclaration", arguments);
+}
+
+function exportDefaultDeclaration(declaration) {
+ return _builder.default.apply("ExportDefaultDeclaration", arguments);
+}
+
+function exportNamedDeclaration(declaration, specifiers, source) {
+ return _builder.default.apply("ExportNamedDeclaration", arguments);
+}
+
+function exportSpecifier(local, exported) {
+ return _builder.default.apply("ExportSpecifier", arguments);
+}
+
+function forOfStatement(left, right, body, _await) {
+ return _builder.default.apply("ForOfStatement", arguments);
+}
+
+function importDeclaration(specifiers, source) {
+ return _builder.default.apply("ImportDeclaration", arguments);
+}
+
+function importDefaultSpecifier(local) {
+ return _builder.default.apply("ImportDefaultSpecifier", arguments);
+}
+
+function importNamespaceSpecifier(local) {
+ return _builder.default.apply("ImportNamespaceSpecifier", arguments);
+}
+
+function importSpecifier(local, imported) {
+ return _builder.default.apply("ImportSpecifier", arguments);
+}
+
+function metaProperty(meta, property) {
+ return _builder.default.apply("MetaProperty", arguments);
+}
+
+function classMethod(kind, key, params, body, computed, _static, generator, async) {
+ return _builder.default.apply("ClassMethod", arguments);
+}
+
+function objectPattern(properties) {
+ return _builder.default.apply("ObjectPattern", arguments);
+}
+
+function spreadElement(argument) {
+ return _builder.default.apply("SpreadElement", arguments);
+}
+
+function _super() {
+ return _builder.default.apply("Super", arguments);
+}
+
+function taggedTemplateExpression(tag, quasi) {
+ return _builder.default.apply("TaggedTemplateExpression", arguments);
+}
+
+function templateElement(value, tail) {
+ return _builder.default.apply("TemplateElement", arguments);
+}
+
+function templateLiteral(quasis, expressions) {
+ return _builder.default.apply("TemplateLiteral", arguments);
+}
+
+function yieldExpression(argument, delegate) {
+ return _builder.default.apply("YieldExpression", arguments);
+}
+
+function awaitExpression(argument) {
+ return _builder.default.apply("AwaitExpression", arguments);
+}
+
+function _import() {
+ return _builder.default.apply("Import", arguments);
+}
+
+function bigIntLiteral(value) {
+ return _builder.default.apply("BigIntLiteral", arguments);
+}
+
+function exportNamespaceSpecifier(exported) {
+ return _builder.default.apply("ExportNamespaceSpecifier", arguments);
+}
+
+function optionalMemberExpression(object, property, computed, optional) {
+ return _builder.default.apply("OptionalMemberExpression", arguments);
+}
+
+function optionalCallExpression(callee, _arguments, optional) {
+ return _builder.default.apply("OptionalCallExpression", arguments);
+}
+
+function classProperty(key, value, typeAnnotation, decorators, computed, _static) {
+ return _builder.default.apply("ClassProperty", arguments);
+}
+
+function classPrivateProperty(key, value, decorators, _static) {
+ return _builder.default.apply("ClassPrivateProperty", arguments);
+}
+
+function classPrivateMethod(kind, key, params, body, _static) {
+ return _builder.default.apply("ClassPrivateMethod", arguments);
+}
+
+function privateName(id) {
+ return _builder.default.apply("PrivateName", arguments);
+}
+
+function staticBlock(body) {
+ return _builder.default.apply("StaticBlock", arguments);
+}
+
+function anyTypeAnnotation() {
+ return _builder.default.apply("AnyTypeAnnotation", arguments);
+}
+
+function arrayTypeAnnotation(elementType) {
+ return _builder.default.apply("ArrayTypeAnnotation", arguments);
+}
+
+function booleanTypeAnnotation() {
+ return _builder.default.apply("BooleanTypeAnnotation", arguments);
+}
+
+function booleanLiteralTypeAnnotation(value) {
+ return _builder.default.apply("BooleanLiteralTypeAnnotation", arguments);
+}
+
+function nullLiteralTypeAnnotation() {
+ return _builder.default.apply("NullLiteralTypeAnnotation", arguments);
+}
+
+function classImplements(id, typeParameters) {
+ return _builder.default.apply("ClassImplements", arguments);
+}
+
+function declareClass(id, typeParameters, _extends, body) {
+ return _builder.default.apply("DeclareClass", arguments);
+}
+
+function declareFunction(id) {
+ return _builder.default.apply("DeclareFunction", arguments);
+}
+
+function declareInterface(id, typeParameters, _extends, body) {
+ return _builder.default.apply("DeclareInterface", arguments);
+}
+
+function declareModule(id, body, kind) {
+ return _builder.default.apply("DeclareModule", arguments);
+}
+
+function declareModuleExports(typeAnnotation) {
+ return _builder.default.apply("DeclareModuleExports", arguments);
+}
+
+function declareTypeAlias(id, typeParameters, right) {
+ return _builder.default.apply("DeclareTypeAlias", arguments);
+}
+
+function declareOpaqueType(id, typeParameters, supertype) {
+ return _builder.default.apply("DeclareOpaqueType", arguments);
+}
+
+function declareVariable(id) {
+ return _builder.default.apply("DeclareVariable", arguments);
+}
+
+function declareExportDeclaration(declaration, specifiers, source) {
+ return _builder.default.apply("DeclareExportDeclaration", arguments);
+}
+
+function declareExportAllDeclaration(source) {
+ return _builder.default.apply("DeclareExportAllDeclaration", arguments);
+}
+
+function declaredPredicate(value) {
+ return _builder.default.apply("DeclaredPredicate", arguments);
+}
+
+function existsTypeAnnotation() {
+ return _builder.default.apply("ExistsTypeAnnotation", arguments);
+}
+
+function functionTypeAnnotation(typeParameters, params, rest, returnType) {
+ return _builder.default.apply("FunctionTypeAnnotation", arguments);
+}
+
+function functionTypeParam(name, typeAnnotation) {
+ return _builder.default.apply("FunctionTypeParam", arguments);
+}
+
+function genericTypeAnnotation(id, typeParameters) {
+ return _builder.default.apply("GenericTypeAnnotation", arguments);
+}
+
+function inferredPredicate() {
+ return _builder.default.apply("InferredPredicate", arguments);
+}
+
+function interfaceExtends(id, typeParameters) {
+ return _builder.default.apply("InterfaceExtends", arguments);
+}
+
+function interfaceDeclaration(id, typeParameters, _extends, body) {
+ return _builder.default.apply("InterfaceDeclaration", arguments);
+}
+
+function interfaceTypeAnnotation(_extends, body) {
+ return _builder.default.apply("InterfaceTypeAnnotation", arguments);
+}
+
+function intersectionTypeAnnotation(types) {
+ return _builder.default.apply("IntersectionTypeAnnotation", arguments);
+}
+
+function mixedTypeAnnotation() {
+ return _builder.default.apply("MixedTypeAnnotation", arguments);
+}
+
+function emptyTypeAnnotation() {
+ return _builder.default.apply("EmptyTypeAnnotation", arguments);
+}
+
+function nullableTypeAnnotation(typeAnnotation) {
+ return _builder.default.apply("NullableTypeAnnotation", arguments);
+}
+
+function numberLiteralTypeAnnotation(value) {
+ return _builder.default.apply("NumberLiteralTypeAnnotation", arguments);
+}
+
+function numberTypeAnnotation() {
+ return _builder.default.apply("NumberTypeAnnotation", arguments);
+}
+
+function objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) {
+ return _builder.default.apply("ObjectTypeAnnotation", arguments);
+}
+
+function objectTypeInternalSlot(id, value, optional, _static, method) {
+ return _builder.default.apply("ObjectTypeInternalSlot", arguments);
+}
+
+function objectTypeCallProperty(value) {
+ return _builder.default.apply("ObjectTypeCallProperty", arguments);
+}
+
+function objectTypeIndexer(id, key, value, variance) {
+ return _builder.default.apply("ObjectTypeIndexer", arguments);
+}
+
+function objectTypeProperty(key, value, variance) {
+ return _builder.default.apply("ObjectTypeProperty", arguments);
+}
+
+function objectTypeSpreadProperty(argument) {
+ return _builder.default.apply("ObjectTypeSpreadProperty", arguments);
+}
+
+function opaqueType(id, typeParameters, supertype, impltype) {
+ return _builder.default.apply("OpaqueType", arguments);
+}
+
+function qualifiedTypeIdentifier(id, qualification) {
+ return _builder.default.apply("QualifiedTypeIdentifier", arguments);
+}
+
+function stringLiteralTypeAnnotation(value) {
+ return _builder.default.apply("StringLiteralTypeAnnotation", arguments);
+}
+
+function stringTypeAnnotation() {
+ return _builder.default.apply("StringTypeAnnotation", arguments);
+}
+
+function symbolTypeAnnotation() {
+ return _builder.default.apply("SymbolTypeAnnotation", arguments);
+}
+
+function thisTypeAnnotation() {
+ return _builder.default.apply("ThisTypeAnnotation", arguments);
+}
+
+function tupleTypeAnnotation(types) {
+ return _builder.default.apply("TupleTypeAnnotation", arguments);
+}
+
+function typeofTypeAnnotation(argument) {
+ return _builder.default.apply("TypeofTypeAnnotation", arguments);
+}
+
+function typeAlias(id, typeParameters, right) {
+ return _builder.default.apply("TypeAlias", arguments);
+}
+
+function typeAnnotation(typeAnnotation) {
+ return _builder.default.apply("TypeAnnotation", arguments);
+}
+
+function typeCastExpression(expression, typeAnnotation) {
+ return _builder.default.apply("TypeCastExpression", arguments);
+}
+
+function typeParameter(bound, _default, variance) {
+ return _builder.default.apply("TypeParameter", arguments);
+}
+
+function typeParameterDeclaration(params) {
+ return _builder.default.apply("TypeParameterDeclaration", arguments);
+}
+
+function typeParameterInstantiation(params) {
+ return _builder.default.apply("TypeParameterInstantiation", arguments);
+}
+
+function unionTypeAnnotation(types) {
+ return _builder.default.apply("UnionTypeAnnotation", arguments);
+}
+
+function variance(kind) {
+ return _builder.default.apply("Variance", arguments);
+}
+
+function voidTypeAnnotation() {
+ return _builder.default.apply("VoidTypeAnnotation", arguments);
+}
+
+function enumDeclaration(id, body) {
+ return _builder.default.apply("EnumDeclaration", arguments);
+}
+
+function enumBooleanBody(members) {
+ return _builder.default.apply("EnumBooleanBody", arguments);
+}
+
+function enumNumberBody(members) {
+ return _builder.default.apply("EnumNumberBody", arguments);
+}
+
+function enumStringBody(members) {
+ return _builder.default.apply("EnumStringBody", arguments);
+}
+
+function enumSymbolBody(members) {
+ return _builder.default.apply("EnumSymbolBody", arguments);
+}
+
+function enumBooleanMember(id) {
+ return _builder.default.apply("EnumBooleanMember", arguments);
+}
+
+function enumNumberMember(id, init) {
+ return _builder.default.apply("EnumNumberMember", arguments);
+}
+
+function enumStringMember(id, init) {
+ return _builder.default.apply("EnumStringMember", arguments);
+}
+
+function enumDefaultedMember(id) {
+ return _builder.default.apply("EnumDefaultedMember", arguments);
+}
+
+function indexedAccessType(objectType, indexType) {
+ return _builder.default.apply("IndexedAccessType", arguments);
+}
+
+function optionalIndexedAccessType(objectType, indexType) {
+ return _builder.default.apply("OptionalIndexedAccessType", arguments);
+}
+
+function jsxAttribute(name, value) {
+ return _builder.default.apply("JSXAttribute", arguments);
+}
+
+function jsxClosingElement(name) {
+ return _builder.default.apply("JSXClosingElement", arguments);
+}
+
+function jsxElement(openingElement, closingElement, children, selfClosing) {
+ return _builder.default.apply("JSXElement", arguments);
+}
+
+function jsxEmptyExpression() {
+ return _builder.default.apply("JSXEmptyExpression", arguments);
+}
+
+function jsxExpressionContainer(expression) {
+ return _builder.default.apply("JSXExpressionContainer", arguments);
+}
+
+function jsxSpreadChild(expression) {
+ return _builder.default.apply("JSXSpreadChild", arguments);
+}
+
+function jsxIdentifier(name) {
+ return _builder.default.apply("JSXIdentifier", arguments);
+}
+
+function jsxMemberExpression(object, property) {
+ return _builder.default.apply("JSXMemberExpression", arguments);
+}
+
+function jsxNamespacedName(namespace, name) {
+ return _builder.default.apply("JSXNamespacedName", arguments);
+}
+
+function jsxOpeningElement(name, attributes, selfClosing) {
+ return _builder.default.apply("JSXOpeningElement", arguments);
+}
+
+function jsxSpreadAttribute(argument) {
+ return _builder.default.apply("JSXSpreadAttribute", arguments);
+}
+
+function jsxText(value) {
+ return _builder.default.apply("JSXText", arguments);
+}
+
+function jsxFragment(openingFragment, closingFragment, children) {
+ return _builder.default.apply("JSXFragment", arguments);
+}
+
+function jsxOpeningFragment() {
+ return _builder.default.apply("JSXOpeningFragment", arguments);
+}
+
+function jsxClosingFragment() {
+ return _builder.default.apply("JSXClosingFragment", arguments);
+}
+
+function noop() {
+ return _builder.default.apply("Noop", arguments);
+}
+
+function placeholder(expectedNode, name) {
+ return _builder.default.apply("Placeholder", arguments);
+}
+
+function v8IntrinsicIdentifier(name) {
+ return _builder.default.apply("V8IntrinsicIdentifier", arguments);
+}
+
+function argumentPlaceholder() {
+ return _builder.default.apply("ArgumentPlaceholder", arguments);
+}
+
+function bindExpression(object, callee) {
+ return _builder.default.apply("BindExpression", arguments);
+}
+
+function importAttribute(key, value) {
+ return _builder.default.apply("ImportAttribute", arguments);
+}
+
+function decorator(expression) {
+ return _builder.default.apply("Decorator", arguments);
+}
+
+function doExpression(body, async) {
+ return _builder.default.apply("DoExpression", arguments);
+}
+
+function exportDefaultSpecifier(exported) {
+ return _builder.default.apply("ExportDefaultSpecifier", arguments);
+}
+
+function recordExpression(properties) {
+ return _builder.default.apply("RecordExpression", arguments);
+}
+
+function tupleExpression(elements) {
+ return _builder.default.apply("TupleExpression", arguments);
+}
+
+function decimalLiteral(value) {
+ return _builder.default.apply("DecimalLiteral", arguments);
+}
+
+function moduleExpression(body) {
+ return _builder.default.apply("ModuleExpression", arguments);
+}
+
+function topicReference() {
+ return _builder.default.apply("TopicReference", arguments);
+}
+
+function pipelineTopicExpression(expression) {
+ return _builder.default.apply("PipelineTopicExpression", arguments);
+}
+
+function pipelineBareFunction(callee) {
+ return _builder.default.apply("PipelineBareFunction", arguments);
+}
+
+function pipelinePrimaryTopicReference() {
+ return _builder.default.apply("PipelinePrimaryTopicReference", arguments);
+}
+
+function tsParameterProperty(parameter) {
+ return _builder.default.apply("TSParameterProperty", arguments);
+}
+
+function tsDeclareFunction(id, typeParameters, params, returnType) {
+ return _builder.default.apply("TSDeclareFunction", arguments);
+}
+
+function tsDeclareMethod(decorators, key, typeParameters, params, returnType) {
+ return _builder.default.apply("TSDeclareMethod", arguments);
+}
+
+function tsQualifiedName(left, right) {
+ return _builder.default.apply("TSQualifiedName", arguments);
+}
+
+function tsCallSignatureDeclaration(typeParameters, parameters, typeAnnotation) {
+ return _builder.default.apply("TSCallSignatureDeclaration", arguments);
+}
+
+function tsConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation) {
+ return _builder.default.apply("TSConstructSignatureDeclaration", arguments);
+}
+
+function tsPropertySignature(key, typeAnnotation, initializer) {
+ return _builder.default.apply("TSPropertySignature", arguments);
+}
+
+function tsMethodSignature(key, typeParameters, parameters, typeAnnotation) {
+ return _builder.default.apply("TSMethodSignature", arguments);
+}
+
+function tsIndexSignature(parameters, typeAnnotation) {
+ return _builder.default.apply("TSIndexSignature", arguments);
+}
+
+function tsAnyKeyword() {
+ return _builder.default.apply("TSAnyKeyword", arguments);
+}
+
+function tsBooleanKeyword() {
+ return _builder.default.apply("TSBooleanKeyword", arguments);
+}
+
+function tsBigIntKeyword() {
+ return _builder.default.apply("TSBigIntKeyword", arguments);
+}
+
+function tsIntrinsicKeyword() {
+ return _builder.default.apply("TSIntrinsicKeyword", arguments);
+}
+
+function tsNeverKeyword() {
+ return _builder.default.apply("TSNeverKeyword", arguments);
+}
+
+function tsNullKeyword() {
+ return _builder.default.apply("TSNullKeyword", arguments);
+}
+
+function tsNumberKeyword() {
+ return _builder.default.apply("TSNumberKeyword", arguments);
+}
+
+function tsObjectKeyword() {
+ return _builder.default.apply("TSObjectKeyword", arguments);
+}
+
+function tsStringKeyword() {
+ return _builder.default.apply("TSStringKeyword", arguments);
+}
+
+function tsSymbolKeyword() {
+ return _builder.default.apply("TSSymbolKeyword", arguments);
+}
+
+function tsUndefinedKeyword() {
+ return _builder.default.apply("TSUndefinedKeyword", arguments);
+}
+
+function tsUnknownKeyword() {
+ return _builder.default.apply("TSUnknownKeyword", arguments);
+}
+
+function tsVoidKeyword() {
+ return _builder.default.apply("TSVoidKeyword", arguments);
+}
+
+function tsThisType() {
+ return _builder.default.apply("TSThisType", arguments);
+}
+
+function tsFunctionType(typeParameters, parameters, typeAnnotation) {
+ return _builder.default.apply("TSFunctionType", arguments);
+}
+
+function tsConstructorType(typeParameters, parameters, typeAnnotation) {
+ return _builder.default.apply("TSConstructorType", arguments);
+}
+
+function tsTypeReference(typeName, typeParameters) {
+ return _builder.default.apply("TSTypeReference", arguments);
+}
+
+function tsTypePredicate(parameterName, typeAnnotation, asserts) {
+ return _builder.default.apply("TSTypePredicate", arguments);
+}
+
+function tsTypeQuery(exprName) {
+ return _builder.default.apply("TSTypeQuery", arguments);
+}
+
+function tsTypeLiteral(members) {
+ return _builder.default.apply("TSTypeLiteral", arguments);
+}
+
+function tsArrayType(elementType) {
+ return _builder.default.apply("TSArrayType", arguments);
+}
+
+function tsTupleType(elementTypes) {
+ return _builder.default.apply("TSTupleType", arguments);
+}
+
+function tsOptionalType(typeAnnotation) {
+ return _builder.default.apply("TSOptionalType", arguments);
+}
+
+function tsRestType(typeAnnotation) {
+ return _builder.default.apply("TSRestType", arguments);
+}
+
+function tsNamedTupleMember(label, elementType, optional) {
+ return _builder.default.apply("TSNamedTupleMember", arguments);
+}
+
+function tsUnionType(types) {
+ return _builder.default.apply("TSUnionType", arguments);
+}
+
+function tsIntersectionType(types) {
+ return _builder.default.apply("TSIntersectionType", arguments);
+}
+
+function tsConditionalType(checkType, extendsType, trueType, falseType) {
+ return _builder.default.apply("TSConditionalType", arguments);
+}
+
+function tsInferType(typeParameter) {
+ return _builder.default.apply("TSInferType", arguments);
+}
+
+function tsParenthesizedType(typeAnnotation) {
+ return _builder.default.apply("TSParenthesizedType", arguments);
+}
+
+function tsTypeOperator(typeAnnotation) {
+ return _builder.default.apply("TSTypeOperator", arguments);
+}
+
+function tsIndexedAccessType(objectType, indexType) {
+ return _builder.default.apply("TSIndexedAccessType", arguments);
+}
+
+function tsMappedType(typeParameter, typeAnnotation, nameType) {
+ return _builder.default.apply("TSMappedType", arguments);
+}
+
+function tsLiteralType(literal) {
+ return _builder.default.apply("TSLiteralType", arguments);
+}
+
+function tsExpressionWithTypeArguments(expression, typeParameters) {
+ return _builder.default.apply("TSExpressionWithTypeArguments", arguments);
+}
+
+function tsInterfaceDeclaration(id, typeParameters, _extends, body) {
+ return _builder.default.apply("TSInterfaceDeclaration", arguments);
+}
+
+function tsInterfaceBody(body) {
+ return _builder.default.apply("TSInterfaceBody", arguments);
+}
+
+function tsTypeAliasDeclaration(id, typeParameters, typeAnnotation) {
+ return _builder.default.apply("TSTypeAliasDeclaration", arguments);
+}
+
+function tsAsExpression(expression, typeAnnotation) {
+ return _builder.default.apply("TSAsExpression", arguments);
+}
+
+function tsTypeAssertion(typeAnnotation, expression) {
+ return _builder.default.apply("TSTypeAssertion", arguments);
+}
+
+function tsEnumDeclaration(id, members) {
+ return _builder.default.apply("TSEnumDeclaration", arguments);
+}
+
+function tsEnumMember(id, initializer) {
+ return _builder.default.apply("TSEnumMember", arguments);
+}
+
+function tsModuleDeclaration(id, body) {
+ return _builder.default.apply("TSModuleDeclaration", arguments);
+}
+
+function tsModuleBlock(body) {
+ return _builder.default.apply("TSModuleBlock", arguments);
+}
+
+function tsImportType(argument, qualifier, typeParameters) {
+ return _builder.default.apply("TSImportType", arguments);
+}
+
+function tsImportEqualsDeclaration(id, moduleReference) {
+ return _builder.default.apply("TSImportEqualsDeclaration", arguments);
+}
+
+function tsExternalModuleReference(expression) {
+ return _builder.default.apply("TSExternalModuleReference", arguments);
+}
+
+function tsNonNullExpression(expression) {
+ return _builder.default.apply("TSNonNullExpression", arguments);
+}
+
+function tsExportAssignment(expression) {
+ return _builder.default.apply("TSExportAssignment", arguments);
+}
+
+function tsNamespaceExportDeclaration(id) {
+ return _builder.default.apply("TSNamespaceExportDeclaration", arguments);
+}
+
+function tsTypeAnnotation(typeAnnotation) {
+ return _builder.default.apply("TSTypeAnnotation", arguments);
+}
+
+function tsTypeParameterInstantiation(params) {
+ return _builder.default.apply("TSTypeParameterInstantiation", arguments);
+}
+
+function tsTypeParameterDeclaration(params) {
+ return _builder.default.apply("TSTypeParameterDeclaration", arguments);
+}
+
+function tsTypeParameter(constraint, _default, name) {
+ return _builder.default.apply("TSTypeParameter", arguments);
+}
+
+function NumberLiteral(value) {
+ console.trace("The node type NumberLiteral has been renamed to NumericLiteral");
+ return _builder.default.apply("NumberLiteral", arguments);
+}
+
+function RegexLiteral(pattern, flags) {
+ console.trace("The node type RegexLiteral has been renamed to RegExpLiteral");
+ return _builder.default.apply("RegexLiteral", arguments);
+}
+
+function RestProperty(argument) {
+ console.trace("The node type RestProperty has been renamed to RestElement");
+ return _builder.default.apply("RestProperty", arguments);
+}
+
+function SpreadProperty(argument) {
+ console.trace("The node type SpreadProperty has been renamed to SpreadElement");
+ return _builder.default.apply("SpreadProperty", arguments);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js
new file mode 100644
index 0000000000..522097e75c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/generated/uppercase.js
@@ -0,0 +1,1507 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "AnyTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.anyTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "ArgumentPlaceholder", {
+ enumerable: true,
+ get: function () {
+ return _index.argumentPlaceholder;
+ }
+});
+Object.defineProperty(exports, "ArrayExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.arrayExpression;
+ }
+});
+Object.defineProperty(exports, "ArrayPattern", {
+ enumerable: true,
+ get: function () {
+ return _index.arrayPattern;
+ }
+});
+Object.defineProperty(exports, "ArrayTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.arrayTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "ArrowFunctionExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.arrowFunctionExpression;
+ }
+});
+Object.defineProperty(exports, "AssignmentExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.assignmentExpression;
+ }
+});
+Object.defineProperty(exports, "AssignmentPattern", {
+ enumerable: true,
+ get: function () {
+ return _index.assignmentPattern;
+ }
+});
+Object.defineProperty(exports, "AwaitExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.awaitExpression;
+ }
+});
+Object.defineProperty(exports, "BigIntLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.bigIntLiteral;
+ }
+});
+Object.defineProperty(exports, "BinaryExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.binaryExpression;
+ }
+});
+Object.defineProperty(exports, "BindExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.bindExpression;
+ }
+});
+Object.defineProperty(exports, "BlockStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.blockStatement;
+ }
+});
+Object.defineProperty(exports, "BooleanLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.booleanLiteral;
+ }
+});
+Object.defineProperty(exports, "BooleanLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.booleanLiteralTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "BooleanTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.booleanTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "BreakStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.breakStatement;
+ }
+});
+Object.defineProperty(exports, "CallExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.callExpression;
+ }
+});
+Object.defineProperty(exports, "CatchClause", {
+ enumerable: true,
+ get: function () {
+ return _index.catchClause;
+ }
+});
+Object.defineProperty(exports, "ClassBody", {
+ enumerable: true,
+ get: function () {
+ return _index.classBody;
+ }
+});
+Object.defineProperty(exports, "ClassDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.classDeclaration;
+ }
+});
+Object.defineProperty(exports, "ClassExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.classExpression;
+ }
+});
+Object.defineProperty(exports, "ClassImplements", {
+ enumerable: true,
+ get: function () {
+ return _index.classImplements;
+ }
+});
+Object.defineProperty(exports, "ClassMethod", {
+ enumerable: true,
+ get: function () {
+ return _index.classMethod;
+ }
+});
+Object.defineProperty(exports, "ClassPrivateMethod", {
+ enumerable: true,
+ get: function () {
+ return _index.classPrivateMethod;
+ }
+});
+Object.defineProperty(exports, "ClassPrivateProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.classPrivateProperty;
+ }
+});
+Object.defineProperty(exports, "ClassProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.classProperty;
+ }
+});
+Object.defineProperty(exports, "ConditionalExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.conditionalExpression;
+ }
+});
+Object.defineProperty(exports, "ContinueStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.continueStatement;
+ }
+});
+Object.defineProperty(exports, "DebuggerStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.debuggerStatement;
+ }
+});
+Object.defineProperty(exports, "DecimalLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.decimalLiteral;
+ }
+});
+Object.defineProperty(exports, "DeclareClass", {
+ enumerable: true,
+ get: function () {
+ return _index.declareClass;
+ }
+});
+Object.defineProperty(exports, "DeclareExportAllDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.declareExportAllDeclaration;
+ }
+});
+Object.defineProperty(exports, "DeclareExportDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.declareExportDeclaration;
+ }
+});
+Object.defineProperty(exports, "DeclareFunction", {
+ enumerable: true,
+ get: function () {
+ return _index.declareFunction;
+ }
+});
+Object.defineProperty(exports, "DeclareInterface", {
+ enumerable: true,
+ get: function () {
+ return _index.declareInterface;
+ }
+});
+Object.defineProperty(exports, "DeclareModule", {
+ enumerable: true,
+ get: function () {
+ return _index.declareModule;
+ }
+});
+Object.defineProperty(exports, "DeclareModuleExports", {
+ enumerable: true,
+ get: function () {
+ return _index.declareModuleExports;
+ }
+});
+Object.defineProperty(exports, "DeclareOpaqueType", {
+ enumerable: true,
+ get: function () {
+ return _index.declareOpaqueType;
+ }
+});
+Object.defineProperty(exports, "DeclareTypeAlias", {
+ enumerable: true,
+ get: function () {
+ return _index.declareTypeAlias;
+ }
+});
+Object.defineProperty(exports, "DeclareVariable", {
+ enumerable: true,
+ get: function () {
+ return _index.declareVariable;
+ }
+});
+Object.defineProperty(exports, "DeclaredPredicate", {
+ enumerable: true,
+ get: function () {
+ return _index.declaredPredicate;
+ }
+});
+Object.defineProperty(exports, "Decorator", {
+ enumerable: true,
+ get: function () {
+ return _index.decorator;
+ }
+});
+Object.defineProperty(exports, "Directive", {
+ enumerable: true,
+ get: function () {
+ return _index.directive;
+ }
+});
+Object.defineProperty(exports, "DirectiveLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.directiveLiteral;
+ }
+});
+Object.defineProperty(exports, "DoExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.doExpression;
+ }
+});
+Object.defineProperty(exports, "DoWhileStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.doWhileStatement;
+ }
+});
+Object.defineProperty(exports, "EmptyStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.emptyStatement;
+ }
+});
+Object.defineProperty(exports, "EmptyTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.emptyTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "EnumBooleanBody", {
+ enumerable: true,
+ get: function () {
+ return _index.enumBooleanBody;
+ }
+});
+Object.defineProperty(exports, "EnumBooleanMember", {
+ enumerable: true,
+ get: function () {
+ return _index.enumBooleanMember;
+ }
+});
+Object.defineProperty(exports, "EnumDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.enumDeclaration;
+ }
+});
+Object.defineProperty(exports, "EnumDefaultedMember", {
+ enumerable: true,
+ get: function () {
+ return _index.enumDefaultedMember;
+ }
+});
+Object.defineProperty(exports, "EnumNumberBody", {
+ enumerable: true,
+ get: function () {
+ return _index.enumNumberBody;
+ }
+});
+Object.defineProperty(exports, "EnumNumberMember", {
+ enumerable: true,
+ get: function () {
+ return _index.enumNumberMember;
+ }
+});
+Object.defineProperty(exports, "EnumStringBody", {
+ enumerable: true,
+ get: function () {
+ return _index.enumStringBody;
+ }
+});
+Object.defineProperty(exports, "EnumStringMember", {
+ enumerable: true,
+ get: function () {
+ return _index.enumStringMember;
+ }
+});
+Object.defineProperty(exports, "EnumSymbolBody", {
+ enumerable: true,
+ get: function () {
+ return _index.enumSymbolBody;
+ }
+});
+Object.defineProperty(exports, "ExistsTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.existsTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "ExportAllDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.exportAllDeclaration;
+ }
+});
+Object.defineProperty(exports, "ExportDefaultDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.exportDefaultDeclaration;
+ }
+});
+Object.defineProperty(exports, "ExportDefaultSpecifier", {
+ enumerable: true,
+ get: function () {
+ return _index.exportDefaultSpecifier;
+ }
+});
+Object.defineProperty(exports, "ExportNamedDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.exportNamedDeclaration;
+ }
+});
+Object.defineProperty(exports, "ExportNamespaceSpecifier", {
+ enumerable: true,
+ get: function () {
+ return _index.exportNamespaceSpecifier;
+ }
+});
+Object.defineProperty(exports, "ExportSpecifier", {
+ enumerable: true,
+ get: function () {
+ return _index.exportSpecifier;
+ }
+});
+Object.defineProperty(exports, "ExpressionStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.expressionStatement;
+ }
+});
+Object.defineProperty(exports, "File", {
+ enumerable: true,
+ get: function () {
+ return _index.file;
+ }
+});
+Object.defineProperty(exports, "ForInStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.forInStatement;
+ }
+});
+Object.defineProperty(exports, "ForOfStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.forOfStatement;
+ }
+});
+Object.defineProperty(exports, "ForStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.forStatement;
+ }
+});
+Object.defineProperty(exports, "FunctionDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.functionDeclaration;
+ }
+});
+Object.defineProperty(exports, "FunctionExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.functionExpression;
+ }
+});
+Object.defineProperty(exports, "FunctionTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.functionTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "FunctionTypeParam", {
+ enumerable: true,
+ get: function () {
+ return _index.functionTypeParam;
+ }
+});
+Object.defineProperty(exports, "GenericTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.genericTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "Identifier", {
+ enumerable: true,
+ get: function () {
+ return _index.identifier;
+ }
+});
+Object.defineProperty(exports, "IfStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.ifStatement;
+ }
+});
+Object.defineProperty(exports, "Import", {
+ enumerable: true,
+ get: function () {
+ return _index.import;
+ }
+});
+Object.defineProperty(exports, "ImportAttribute", {
+ enumerable: true,
+ get: function () {
+ return _index.importAttribute;
+ }
+});
+Object.defineProperty(exports, "ImportDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.importDeclaration;
+ }
+});
+Object.defineProperty(exports, "ImportDefaultSpecifier", {
+ enumerable: true,
+ get: function () {
+ return _index.importDefaultSpecifier;
+ }
+});
+Object.defineProperty(exports, "ImportNamespaceSpecifier", {
+ enumerable: true,
+ get: function () {
+ return _index.importNamespaceSpecifier;
+ }
+});
+Object.defineProperty(exports, "ImportSpecifier", {
+ enumerable: true,
+ get: function () {
+ return _index.importSpecifier;
+ }
+});
+Object.defineProperty(exports, "IndexedAccessType", {
+ enumerable: true,
+ get: function () {
+ return _index.indexedAccessType;
+ }
+});
+Object.defineProperty(exports, "InferredPredicate", {
+ enumerable: true,
+ get: function () {
+ return _index.inferredPredicate;
+ }
+});
+Object.defineProperty(exports, "InterfaceDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.interfaceDeclaration;
+ }
+});
+Object.defineProperty(exports, "InterfaceExtends", {
+ enumerable: true,
+ get: function () {
+ return _index.interfaceExtends;
+ }
+});
+Object.defineProperty(exports, "InterfaceTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.interfaceTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "InterpreterDirective", {
+ enumerable: true,
+ get: function () {
+ return _index.interpreterDirective;
+ }
+});
+Object.defineProperty(exports, "IntersectionTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.intersectionTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "JSXAttribute", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxAttribute;
+ }
+});
+Object.defineProperty(exports, "JSXClosingElement", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxClosingElement;
+ }
+});
+Object.defineProperty(exports, "JSXClosingFragment", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxClosingFragment;
+ }
+});
+Object.defineProperty(exports, "JSXElement", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxElement;
+ }
+});
+Object.defineProperty(exports, "JSXEmptyExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxEmptyExpression;
+ }
+});
+Object.defineProperty(exports, "JSXExpressionContainer", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxExpressionContainer;
+ }
+});
+Object.defineProperty(exports, "JSXFragment", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxFragment;
+ }
+});
+Object.defineProperty(exports, "JSXIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxIdentifier;
+ }
+});
+Object.defineProperty(exports, "JSXMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxMemberExpression;
+ }
+});
+Object.defineProperty(exports, "JSXNamespacedName", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxNamespacedName;
+ }
+});
+Object.defineProperty(exports, "JSXOpeningElement", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxOpeningElement;
+ }
+});
+Object.defineProperty(exports, "JSXOpeningFragment", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxOpeningFragment;
+ }
+});
+Object.defineProperty(exports, "JSXSpreadAttribute", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxSpreadAttribute;
+ }
+});
+Object.defineProperty(exports, "JSXSpreadChild", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxSpreadChild;
+ }
+});
+Object.defineProperty(exports, "JSXText", {
+ enumerable: true,
+ get: function () {
+ return _index.jsxText;
+ }
+});
+Object.defineProperty(exports, "LabeledStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.labeledStatement;
+ }
+});
+Object.defineProperty(exports, "LogicalExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.logicalExpression;
+ }
+});
+Object.defineProperty(exports, "MemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.memberExpression;
+ }
+});
+Object.defineProperty(exports, "MetaProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.metaProperty;
+ }
+});
+Object.defineProperty(exports, "MixedTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.mixedTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "ModuleExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.moduleExpression;
+ }
+});
+Object.defineProperty(exports, "NewExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.newExpression;
+ }
+});
+Object.defineProperty(exports, "Noop", {
+ enumerable: true,
+ get: function () {
+ return _index.noop;
+ }
+});
+Object.defineProperty(exports, "NullLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.nullLiteral;
+ }
+});
+Object.defineProperty(exports, "NullLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.nullLiteralTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "NullableTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.nullableTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "NumberLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.numberLiteral;
+ }
+});
+Object.defineProperty(exports, "NumberLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.numberLiteralTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "NumberTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.numberTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "NumericLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.numericLiteral;
+ }
+});
+Object.defineProperty(exports, "ObjectExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.objectExpression;
+ }
+});
+Object.defineProperty(exports, "ObjectMethod", {
+ enumerable: true,
+ get: function () {
+ return _index.objectMethod;
+ }
+});
+Object.defineProperty(exports, "ObjectPattern", {
+ enumerable: true,
+ get: function () {
+ return _index.objectPattern;
+ }
+});
+Object.defineProperty(exports, "ObjectProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.objectProperty;
+ }
+});
+Object.defineProperty(exports, "ObjectTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.objectTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "ObjectTypeCallProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.objectTypeCallProperty;
+ }
+});
+Object.defineProperty(exports, "ObjectTypeIndexer", {
+ enumerable: true,
+ get: function () {
+ return _index.objectTypeIndexer;
+ }
+});
+Object.defineProperty(exports, "ObjectTypeInternalSlot", {
+ enumerable: true,
+ get: function () {
+ return _index.objectTypeInternalSlot;
+ }
+});
+Object.defineProperty(exports, "ObjectTypeProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.objectTypeProperty;
+ }
+});
+Object.defineProperty(exports, "ObjectTypeSpreadProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.objectTypeSpreadProperty;
+ }
+});
+Object.defineProperty(exports, "OpaqueType", {
+ enumerable: true,
+ get: function () {
+ return _index.opaqueType;
+ }
+});
+Object.defineProperty(exports, "OptionalCallExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.optionalCallExpression;
+ }
+});
+Object.defineProperty(exports, "OptionalIndexedAccessType", {
+ enumerable: true,
+ get: function () {
+ return _index.optionalIndexedAccessType;
+ }
+});
+Object.defineProperty(exports, "OptionalMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.optionalMemberExpression;
+ }
+});
+Object.defineProperty(exports, "ParenthesizedExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.parenthesizedExpression;
+ }
+});
+Object.defineProperty(exports, "PipelineBareFunction", {
+ enumerable: true,
+ get: function () {
+ return _index.pipelineBareFunction;
+ }
+});
+Object.defineProperty(exports, "PipelinePrimaryTopicReference", {
+ enumerable: true,
+ get: function () {
+ return _index.pipelinePrimaryTopicReference;
+ }
+});
+Object.defineProperty(exports, "PipelineTopicExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.pipelineTopicExpression;
+ }
+});
+Object.defineProperty(exports, "Placeholder", {
+ enumerable: true,
+ get: function () {
+ return _index.placeholder;
+ }
+});
+Object.defineProperty(exports, "PrivateName", {
+ enumerable: true,
+ get: function () {
+ return _index.privateName;
+ }
+});
+Object.defineProperty(exports, "Program", {
+ enumerable: true,
+ get: function () {
+ return _index.program;
+ }
+});
+Object.defineProperty(exports, "QualifiedTypeIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _index.qualifiedTypeIdentifier;
+ }
+});
+Object.defineProperty(exports, "RecordExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.recordExpression;
+ }
+});
+Object.defineProperty(exports, "RegExpLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.regExpLiteral;
+ }
+});
+Object.defineProperty(exports, "RegexLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.regexLiteral;
+ }
+});
+Object.defineProperty(exports, "RestElement", {
+ enumerable: true,
+ get: function () {
+ return _index.restElement;
+ }
+});
+Object.defineProperty(exports, "RestProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.restProperty;
+ }
+});
+Object.defineProperty(exports, "ReturnStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.returnStatement;
+ }
+});
+Object.defineProperty(exports, "SequenceExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.sequenceExpression;
+ }
+});
+Object.defineProperty(exports, "SpreadElement", {
+ enumerable: true,
+ get: function () {
+ return _index.spreadElement;
+ }
+});
+Object.defineProperty(exports, "SpreadProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.spreadProperty;
+ }
+});
+Object.defineProperty(exports, "StaticBlock", {
+ enumerable: true,
+ get: function () {
+ return _index.staticBlock;
+ }
+});
+Object.defineProperty(exports, "StringLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.stringLiteral;
+ }
+});
+Object.defineProperty(exports, "StringLiteralTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.stringLiteralTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "StringTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.stringTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "Super", {
+ enumerable: true,
+ get: function () {
+ return _index.super;
+ }
+});
+Object.defineProperty(exports, "SwitchCase", {
+ enumerable: true,
+ get: function () {
+ return _index.switchCase;
+ }
+});
+Object.defineProperty(exports, "SwitchStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.switchStatement;
+ }
+});
+Object.defineProperty(exports, "SymbolTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.symbolTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "TSAnyKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsAnyKeyword;
+ }
+});
+Object.defineProperty(exports, "TSArrayType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsArrayType;
+ }
+});
+Object.defineProperty(exports, "TSAsExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.tsAsExpression;
+ }
+});
+Object.defineProperty(exports, "TSBigIntKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsBigIntKeyword;
+ }
+});
+Object.defineProperty(exports, "TSBooleanKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsBooleanKeyword;
+ }
+});
+Object.defineProperty(exports, "TSCallSignatureDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsCallSignatureDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSConditionalType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsConditionalType;
+ }
+});
+Object.defineProperty(exports, "TSConstructSignatureDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsConstructSignatureDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSConstructorType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsConstructorType;
+ }
+});
+Object.defineProperty(exports, "TSDeclareFunction", {
+ enumerable: true,
+ get: function () {
+ return _index.tsDeclareFunction;
+ }
+});
+Object.defineProperty(exports, "TSDeclareMethod", {
+ enumerable: true,
+ get: function () {
+ return _index.tsDeclareMethod;
+ }
+});
+Object.defineProperty(exports, "TSEnumDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsEnumDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSEnumMember", {
+ enumerable: true,
+ get: function () {
+ return _index.tsEnumMember;
+ }
+});
+Object.defineProperty(exports, "TSExportAssignment", {
+ enumerable: true,
+ get: function () {
+ return _index.tsExportAssignment;
+ }
+});
+Object.defineProperty(exports, "TSExpressionWithTypeArguments", {
+ enumerable: true,
+ get: function () {
+ return _index.tsExpressionWithTypeArguments;
+ }
+});
+Object.defineProperty(exports, "TSExternalModuleReference", {
+ enumerable: true,
+ get: function () {
+ return _index.tsExternalModuleReference;
+ }
+});
+Object.defineProperty(exports, "TSFunctionType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsFunctionType;
+ }
+});
+Object.defineProperty(exports, "TSImportEqualsDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsImportEqualsDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSImportType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsImportType;
+ }
+});
+Object.defineProperty(exports, "TSIndexSignature", {
+ enumerable: true,
+ get: function () {
+ return _index.tsIndexSignature;
+ }
+});
+Object.defineProperty(exports, "TSIndexedAccessType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsIndexedAccessType;
+ }
+});
+Object.defineProperty(exports, "TSInferType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsInferType;
+ }
+});
+Object.defineProperty(exports, "TSInterfaceBody", {
+ enumerable: true,
+ get: function () {
+ return _index.tsInterfaceBody;
+ }
+});
+Object.defineProperty(exports, "TSInterfaceDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsInterfaceDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSIntersectionType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsIntersectionType;
+ }
+});
+Object.defineProperty(exports, "TSIntrinsicKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsIntrinsicKeyword;
+ }
+});
+Object.defineProperty(exports, "TSLiteralType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsLiteralType;
+ }
+});
+Object.defineProperty(exports, "TSMappedType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsMappedType;
+ }
+});
+Object.defineProperty(exports, "TSMethodSignature", {
+ enumerable: true,
+ get: function () {
+ return _index.tsMethodSignature;
+ }
+});
+Object.defineProperty(exports, "TSModuleBlock", {
+ enumerable: true,
+ get: function () {
+ return _index.tsModuleBlock;
+ }
+});
+Object.defineProperty(exports, "TSModuleDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsModuleDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSNamedTupleMember", {
+ enumerable: true,
+ get: function () {
+ return _index.tsNamedTupleMember;
+ }
+});
+Object.defineProperty(exports, "TSNamespaceExportDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsNamespaceExportDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSNeverKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsNeverKeyword;
+ }
+});
+Object.defineProperty(exports, "TSNonNullExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.tsNonNullExpression;
+ }
+});
+Object.defineProperty(exports, "TSNullKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsNullKeyword;
+ }
+});
+Object.defineProperty(exports, "TSNumberKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsNumberKeyword;
+ }
+});
+Object.defineProperty(exports, "TSObjectKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsObjectKeyword;
+ }
+});
+Object.defineProperty(exports, "TSOptionalType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsOptionalType;
+ }
+});
+Object.defineProperty(exports, "TSParameterProperty", {
+ enumerable: true,
+ get: function () {
+ return _index.tsParameterProperty;
+ }
+});
+Object.defineProperty(exports, "TSParenthesizedType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsParenthesizedType;
+ }
+});
+Object.defineProperty(exports, "TSPropertySignature", {
+ enumerable: true,
+ get: function () {
+ return _index.tsPropertySignature;
+ }
+});
+Object.defineProperty(exports, "TSQualifiedName", {
+ enumerable: true,
+ get: function () {
+ return _index.tsQualifiedName;
+ }
+});
+Object.defineProperty(exports, "TSRestType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsRestType;
+ }
+});
+Object.defineProperty(exports, "TSStringKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsStringKeyword;
+ }
+});
+Object.defineProperty(exports, "TSSymbolKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsSymbolKeyword;
+ }
+});
+Object.defineProperty(exports, "TSThisType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsThisType;
+ }
+});
+Object.defineProperty(exports, "TSTupleType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTupleType;
+ }
+});
+Object.defineProperty(exports, "TSTypeAliasDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeAliasDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "TSTypeAssertion", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeAssertion;
+ }
+});
+Object.defineProperty(exports, "TSTypeLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeLiteral;
+ }
+});
+Object.defineProperty(exports, "TSTypeOperator", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeOperator;
+ }
+});
+Object.defineProperty(exports, "TSTypeParameter", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeParameter;
+ }
+});
+Object.defineProperty(exports, "TSTypeParameterDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeParameterDeclaration;
+ }
+});
+Object.defineProperty(exports, "TSTypeParameterInstantiation", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeParameterInstantiation;
+ }
+});
+Object.defineProperty(exports, "TSTypePredicate", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypePredicate;
+ }
+});
+Object.defineProperty(exports, "TSTypeQuery", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeQuery;
+ }
+});
+Object.defineProperty(exports, "TSTypeReference", {
+ enumerable: true,
+ get: function () {
+ return _index.tsTypeReference;
+ }
+});
+Object.defineProperty(exports, "TSUndefinedKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsUndefinedKeyword;
+ }
+});
+Object.defineProperty(exports, "TSUnionType", {
+ enumerable: true,
+ get: function () {
+ return _index.tsUnionType;
+ }
+});
+Object.defineProperty(exports, "TSUnknownKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsUnknownKeyword;
+ }
+});
+Object.defineProperty(exports, "TSVoidKeyword", {
+ enumerable: true,
+ get: function () {
+ return _index.tsVoidKeyword;
+ }
+});
+Object.defineProperty(exports, "TaggedTemplateExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.taggedTemplateExpression;
+ }
+});
+Object.defineProperty(exports, "TemplateElement", {
+ enumerable: true,
+ get: function () {
+ return _index.templateElement;
+ }
+});
+Object.defineProperty(exports, "TemplateLiteral", {
+ enumerable: true,
+ get: function () {
+ return _index.templateLiteral;
+ }
+});
+Object.defineProperty(exports, "ThisExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.thisExpression;
+ }
+});
+Object.defineProperty(exports, "ThisTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.thisTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "ThrowStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.throwStatement;
+ }
+});
+Object.defineProperty(exports, "TopicReference", {
+ enumerable: true,
+ get: function () {
+ return _index.topicReference;
+ }
+});
+Object.defineProperty(exports, "TryStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.tryStatement;
+ }
+});
+Object.defineProperty(exports, "TupleExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.tupleExpression;
+ }
+});
+Object.defineProperty(exports, "TupleTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.tupleTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "TypeAlias", {
+ enumerable: true,
+ get: function () {
+ return _index.typeAlias;
+ }
+});
+Object.defineProperty(exports, "TypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.typeAnnotation;
+ }
+});
+Object.defineProperty(exports, "TypeCastExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.typeCastExpression;
+ }
+});
+Object.defineProperty(exports, "TypeParameter", {
+ enumerable: true,
+ get: function () {
+ return _index.typeParameter;
+ }
+});
+Object.defineProperty(exports, "TypeParameterDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.typeParameterDeclaration;
+ }
+});
+Object.defineProperty(exports, "TypeParameterInstantiation", {
+ enumerable: true,
+ get: function () {
+ return _index.typeParameterInstantiation;
+ }
+});
+Object.defineProperty(exports, "TypeofTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.typeofTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "UnaryExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.unaryExpression;
+ }
+});
+Object.defineProperty(exports, "UnionTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.unionTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "UpdateExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.updateExpression;
+ }
+});
+Object.defineProperty(exports, "V8IntrinsicIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _index.v8IntrinsicIdentifier;
+ }
+});
+Object.defineProperty(exports, "VariableDeclaration", {
+ enumerable: true,
+ get: function () {
+ return _index.variableDeclaration;
+ }
+});
+Object.defineProperty(exports, "VariableDeclarator", {
+ enumerable: true,
+ get: function () {
+ return _index.variableDeclarator;
+ }
+});
+Object.defineProperty(exports, "Variance", {
+ enumerable: true,
+ get: function () {
+ return _index.variance;
+ }
+});
+Object.defineProperty(exports, "VoidTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _index.voidTypeAnnotation;
+ }
+});
+Object.defineProperty(exports, "WhileStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.whileStatement;
+ }
+});
+Object.defineProperty(exports, "WithStatement", {
+ enumerable: true,
+ get: function () {
+ return _index.withStatement;
+ }
+});
+Object.defineProperty(exports, "YieldExpression", {
+ enumerable: true,
+ get: function () {
+ return _index.yieldExpression;
+ }
+});
+
+var _index = require("./index"); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/react/buildChildren.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/react/buildChildren.js
new file mode 100644
index 0000000000..20a194b6b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/react/buildChildren.js
@@ -0,0 +1,29 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = buildChildren;
+
+var _generated = require("../../validators/generated");
+
+var _cleanJSXElementLiteralChild = require("../../utils/react/cleanJSXElementLiteralChild");
+
+function buildChildren(node) {
+ const elements = [];
+
+ for (let i = 0; i < node.children.length; i++) {
+ let child = node.children[i];
+
+ if ((0, _generated.isJSXText)(child)) {
+ (0, _cleanJSXElementLiteralChild.default)(child, elements);
+ continue;
+ }
+
+ if ((0, _generated.isJSXExpressionContainer)(child)) child = child.expression;
+ if ((0, _generated.isJSXEmptyExpression)(child)) continue;
+ elements.push(child);
+ }
+
+ return elements;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js
new file mode 100644
index 0000000000..9b53be29d3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/builders/typescript/createTSUnionType.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = createTSUnionType;
+
+var _generated = require("../generated");
+
+var _removeTypeDuplicates = require("../../modifications/typescript/removeTypeDuplicates");
+
+function createTSUnionType(typeAnnotations) {
+ const types = typeAnnotations.map(type => type.typeAnnotation);
+ const flattened = (0, _removeTypeDuplicates.default)(types);
+
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return (0, _generated.tsUnionType)(flattened);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/clone.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/clone.js
new file mode 100644
index 0000000000..e262c632d8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/clone.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = clone;
+
+var _cloneNode = require("./cloneNode");
+
+function clone(node) {
+ return (0, _cloneNode.default)(node, false);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeep.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeep.js
new file mode 100644
index 0000000000..9067e7b73d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeep.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneDeep;
+
+var _cloneNode = require("./cloneNode");
+
+function cloneDeep(node) {
+ return (0, _cloneNode.default)(node);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js
new file mode 100644
index 0000000000..a8c53dd4b1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneDeepWithoutLoc.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneDeepWithoutLoc;
+
+var _cloneNode = require("./cloneNode");
+
+function cloneDeepWithoutLoc(node) {
+ return (0, _cloneNode.default)(node, true, true);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js
new file mode 100644
index 0000000000..5980f2d1ba
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneNode.js
@@ -0,0 +1,114 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneNode;
+
+var _definitions = require("../definitions");
+
+var _generated = require("../validators/generated");
+
+const has = Function.call.bind(Object.prototype.hasOwnProperty);
+
+function cloneIfNode(obj, deep, withoutLoc) {
+ if (obj && typeof obj.type === "string") {
+ return cloneNode(obj, deep, withoutLoc);
+ }
+
+ return obj;
+}
+
+function cloneIfNodeOrArray(obj, deep, withoutLoc) {
+ if (Array.isArray(obj)) {
+ return obj.map(node => cloneIfNode(node, deep, withoutLoc));
+ }
+
+ return cloneIfNode(obj, deep, withoutLoc);
+}
+
+function cloneNode(node, deep = true, withoutLoc = false) {
+ if (!node) return node;
+ const {
+ type
+ } = node;
+ const newNode = {
+ type: node.type
+ };
+
+ if ((0, _generated.isIdentifier)(node)) {
+ newNode.name = node.name;
+
+ if (has(node, "optional") && typeof node.optional === "boolean") {
+ newNode.optional = node.optional;
+ }
+
+ if (has(node, "typeAnnotation")) {
+ newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc) : node.typeAnnotation;
+ }
+ } else if (!has(_definitions.NODE_FIELDS, type)) {
+ throw new Error(`Unknown node type: "${type}"`);
+ } else {
+ for (const field of Object.keys(_definitions.NODE_FIELDS[type])) {
+ if (has(node, field)) {
+ if (deep) {
+ newNode[field] = (0, _generated.isFile)(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc) : cloneIfNodeOrArray(node[field], true, withoutLoc);
+ } else {
+ newNode[field] = node[field];
+ }
+ }
+ }
+ }
+
+ if (has(node, "loc")) {
+ if (withoutLoc) {
+ newNode.loc = null;
+ } else {
+ newNode.loc = node.loc;
+ }
+ }
+
+ if (has(node, "leadingComments")) {
+ newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc);
+ }
+
+ if (has(node, "innerComments")) {
+ newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc);
+ }
+
+ if (has(node, "trailingComments")) {
+ newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc);
+ }
+
+ if (has(node, "extra")) {
+ newNode.extra = Object.assign({}, node.extra);
+ }
+
+ return newNode;
+}
+
+function maybeCloneComments(comments, deep, withoutLoc) {
+ if (!comments || !deep) {
+ return comments;
+ }
+
+ return comments.map(({
+ type,
+ value,
+ loc
+ }) => {
+ if (withoutLoc) {
+ return {
+ type,
+ value,
+ loc: null
+ };
+ }
+
+ return {
+ type,
+ value,
+ loc
+ };
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
new file mode 100644
index 0000000000..d0420b1c0d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/clone/cloneWithoutLoc.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cloneWithoutLoc;
+
+var _cloneNode = require("./cloneNode");
+
+function cloneWithoutLoc(node) {
+ return (0, _cloneNode.default)(node, false, true);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComment.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComment.js
new file mode 100644
index 0000000000..de19ab74e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComment.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = addComment;
+
+var _addComments = require("./addComments");
+
+function addComment(node, type, content, line) {
+ return (0, _addComments.default)(node, type, [{
+ type: line ? "CommentLine" : "CommentBlock",
+ value: content
+ }]);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComments.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComments.js
new file mode 100644
index 0000000000..26c456fc30
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/addComments.js
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = addComments;
+
+function addComments(node, type, comments) {
+ if (!comments || !node) return node;
+ const key = `${type}Comments`;
+
+ if (node[key]) {
+ if (type === "leading") {
+ node[key] = comments.concat(node[key]);
+ } else {
+ node[key].push(...comments);
+ }
+ } else {
+ node[key] = comments;
+ }
+
+ return node;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritInnerComments.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritInnerComments.js
new file mode 100644
index 0000000000..4b5dc9cac2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritInnerComments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritInnerComments;
+
+var _inherit = require("../utils/inherit");
+
+function inheritInnerComments(child, parent) {
+ (0, _inherit.default)("innerComments", child, parent);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritLeadingComments.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
new file mode 100644
index 0000000000..6aa2b25029
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritLeadingComments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritLeadingComments;
+
+var _inherit = require("../utils/inherit");
+
+function inheritLeadingComments(child, parent) {
+ (0, _inherit.default)("leadingComments", child, parent);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritTrailingComments.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
new file mode 100644
index 0000000000..934ef0b9ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritTrailingComments.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritTrailingComments;
+
+var _inherit = require("../utils/inherit");
+
+function inheritTrailingComments(child, parent) {
+ (0, _inherit.default)("trailingComments", child, parent);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritsComments.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritsComments.js
new file mode 100644
index 0000000000..49476cffd9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/inheritsComments.js
@@ -0,0 +1,19 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inheritsComments;
+
+var _inheritTrailingComments = require("./inheritTrailingComments");
+
+var _inheritLeadingComments = require("./inheritLeadingComments");
+
+var _inheritInnerComments = require("./inheritInnerComments");
+
+function inheritsComments(child, parent) {
+ (0, _inheritTrailingComments.default)(child, parent);
+ (0, _inheritLeadingComments.default)(child, parent);
+ (0, _inheritInnerComments.default)(child, parent);
+ return child;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/removeComments.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/removeComments.js
new file mode 100644
index 0000000000..fe34f1a890
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/comments/removeComments.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeComments;
+
+var _constants = require("../constants");
+
+function removeComments(node) {
+ _constants.COMMENT_KEYS.forEach(key => {
+ node[key] = null;
+ });
+
+ return node;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/generated/index.js
new file mode 100644
index 0000000000..ffa2f0d9b4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/generated/index.js
@@ -0,0 +1,105 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.WHILE_TYPES = exports.USERWHITESPACABLE_TYPES = exports.UNARYLIKE_TYPES = exports.TYPESCRIPT_TYPES = exports.TSTYPE_TYPES = exports.TSTYPEELEMENT_TYPES = exports.TSENTITYNAME_TYPES = exports.TSBASETYPE_TYPES = exports.TERMINATORLESS_TYPES = exports.STATEMENT_TYPES = exports.STANDARDIZED_TYPES = exports.SCOPABLE_TYPES = exports.PUREISH_TYPES = exports.PROPERTY_TYPES = exports.PRIVATE_TYPES = exports.PATTERN_TYPES = exports.PATTERNLIKE_TYPES = exports.OBJECTMEMBER_TYPES = exports.MODULESPECIFIER_TYPES = exports.MODULEDECLARATION_TYPES = exports.MISCELLANEOUS_TYPES = exports.METHOD_TYPES = exports.LVAL_TYPES = exports.LOOP_TYPES = exports.LITERAL_TYPES = exports.JSX_TYPES = exports.IMMUTABLE_TYPES = exports.FUNCTION_TYPES = exports.FUNCTIONPARENT_TYPES = exports.FOR_TYPES = exports.FORXSTATEMENT_TYPES = exports.FLOW_TYPES = exports.FLOWTYPE_TYPES = exports.FLOWPREDICATE_TYPES = exports.FLOWDECLARATION_TYPES = exports.FLOWBASEANNOTATION_TYPES = exports.EXPRESSION_TYPES = exports.EXPRESSIONWRAPPER_TYPES = exports.EXPORTDECLARATION_TYPES = exports.ENUMMEMBER_TYPES = exports.ENUMBODY_TYPES = exports.DECLARATION_TYPES = exports.CONDITIONAL_TYPES = exports.COMPLETIONSTATEMENT_TYPES = exports.CLASS_TYPES = exports.BLOCK_TYPES = exports.BLOCKPARENT_TYPES = exports.BINARY_TYPES = void 0;
+
+var _definitions = require("../../definitions");
+
+const STANDARDIZED_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Standardized"];
+exports.STANDARDIZED_TYPES = STANDARDIZED_TYPES;
+const EXPRESSION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Expression"];
+exports.EXPRESSION_TYPES = EXPRESSION_TYPES;
+const BINARY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Binary"];
+exports.BINARY_TYPES = BINARY_TYPES;
+const SCOPABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Scopable"];
+exports.SCOPABLE_TYPES = SCOPABLE_TYPES;
+const BLOCKPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["BlockParent"];
+exports.BLOCKPARENT_TYPES = BLOCKPARENT_TYPES;
+const BLOCK_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Block"];
+exports.BLOCK_TYPES = BLOCK_TYPES;
+const STATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Statement"];
+exports.STATEMENT_TYPES = STATEMENT_TYPES;
+const TERMINATORLESS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Terminatorless"];
+exports.TERMINATORLESS_TYPES = TERMINATORLESS_TYPES;
+const COMPLETIONSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["CompletionStatement"];
+exports.COMPLETIONSTATEMENT_TYPES = COMPLETIONSTATEMENT_TYPES;
+const CONDITIONAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Conditional"];
+exports.CONDITIONAL_TYPES = CONDITIONAL_TYPES;
+const LOOP_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Loop"];
+exports.LOOP_TYPES = LOOP_TYPES;
+const WHILE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["While"];
+exports.WHILE_TYPES = WHILE_TYPES;
+const EXPRESSIONWRAPPER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExpressionWrapper"];
+exports.EXPRESSIONWRAPPER_TYPES = EXPRESSIONWRAPPER_TYPES;
+const FOR_TYPES = _definitions.FLIPPED_ALIAS_KEYS["For"];
+exports.FOR_TYPES = FOR_TYPES;
+const FORXSTATEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ForXStatement"];
+exports.FORXSTATEMENT_TYPES = FORXSTATEMENT_TYPES;
+const FUNCTION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Function"];
+exports.FUNCTION_TYPES = FUNCTION_TYPES;
+const FUNCTIONPARENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FunctionParent"];
+exports.FUNCTIONPARENT_TYPES = FUNCTIONPARENT_TYPES;
+const PUREISH_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pureish"];
+exports.PUREISH_TYPES = PUREISH_TYPES;
+const DECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Declaration"];
+exports.DECLARATION_TYPES = DECLARATION_TYPES;
+const PATTERNLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["PatternLike"];
+exports.PATTERNLIKE_TYPES = PATTERNLIKE_TYPES;
+const LVAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["LVal"];
+exports.LVAL_TYPES = LVAL_TYPES;
+const TSENTITYNAME_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSEntityName"];
+exports.TSENTITYNAME_TYPES = TSENTITYNAME_TYPES;
+const LITERAL_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Literal"];
+exports.LITERAL_TYPES = LITERAL_TYPES;
+const IMMUTABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Immutable"];
+exports.IMMUTABLE_TYPES = IMMUTABLE_TYPES;
+const USERWHITESPACABLE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UserWhitespacable"];
+exports.USERWHITESPACABLE_TYPES = USERWHITESPACABLE_TYPES;
+const METHOD_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Method"];
+exports.METHOD_TYPES = METHOD_TYPES;
+const OBJECTMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ObjectMember"];
+exports.OBJECTMEMBER_TYPES = OBJECTMEMBER_TYPES;
+const PROPERTY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Property"];
+exports.PROPERTY_TYPES = PROPERTY_TYPES;
+const UNARYLIKE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["UnaryLike"];
+exports.UNARYLIKE_TYPES = UNARYLIKE_TYPES;
+const PATTERN_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Pattern"];
+exports.PATTERN_TYPES = PATTERN_TYPES;
+const CLASS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Class"];
+exports.CLASS_TYPES = CLASS_TYPES;
+const MODULEDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleDeclaration"];
+exports.MODULEDECLARATION_TYPES = MODULEDECLARATION_TYPES;
+const EXPORTDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ExportDeclaration"];
+exports.EXPORTDECLARATION_TYPES = EXPORTDECLARATION_TYPES;
+const MODULESPECIFIER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["ModuleSpecifier"];
+exports.MODULESPECIFIER_TYPES = MODULESPECIFIER_TYPES;
+const PRIVATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Private"];
+exports.PRIVATE_TYPES = PRIVATE_TYPES;
+const FLOW_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Flow"];
+exports.FLOW_TYPES = FLOW_TYPES;
+const FLOWTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowType"];
+exports.FLOWTYPE_TYPES = FLOWTYPE_TYPES;
+const FLOWBASEANNOTATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowBaseAnnotation"];
+exports.FLOWBASEANNOTATION_TYPES = FLOWBASEANNOTATION_TYPES;
+const FLOWDECLARATION_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowDeclaration"];
+exports.FLOWDECLARATION_TYPES = FLOWDECLARATION_TYPES;
+const FLOWPREDICATE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["FlowPredicate"];
+exports.FLOWPREDICATE_TYPES = FLOWPREDICATE_TYPES;
+const ENUMBODY_TYPES = _definitions.FLIPPED_ALIAS_KEYS["EnumBody"];
+exports.ENUMBODY_TYPES = ENUMBODY_TYPES;
+const ENUMMEMBER_TYPES = _definitions.FLIPPED_ALIAS_KEYS["EnumMember"];
+exports.ENUMMEMBER_TYPES = ENUMMEMBER_TYPES;
+const JSX_TYPES = _definitions.FLIPPED_ALIAS_KEYS["JSX"];
+exports.JSX_TYPES = JSX_TYPES;
+const MISCELLANEOUS_TYPES = _definitions.FLIPPED_ALIAS_KEYS["Miscellaneous"];
+exports.MISCELLANEOUS_TYPES = MISCELLANEOUS_TYPES;
+const TYPESCRIPT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TypeScript"];
+exports.TYPESCRIPT_TYPES = TYPESCRIPT_TYPES;
+const TSTYPEELEMENT_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSTypeElement"];
+exports.TSTYPEELEMENT_TYPES = TSTYPEELEMENT_TYPES;
+const TSTYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSType"];
+exports.TSTYPE_TYPES = TSTYPE_TYPES;
+const TSBASETYPE_TYPES = _definitions.FLIPPED_ALIAS_KEYS["TSBaseType"];
+exports.TSBASETYPE_TYPES = TSBASETYPE_TYPES; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js
new file mode 100644
index 0000000000..3caa438799
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/constants/index.js
@@ -0,0 +1,49 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.UPDATE_OPERATORS = exports.UNARY_OPERATORS = exports.STRING_UNARY_OPERATORS = exports.STATEMENT_OR_BLOCK_KEYS = exports.NUMBER_UNARY_OPERATORS = exports.NUMBER_BINARY_OPERATORS = exports.NOT_LOCAL_BINDING = exports.LOGICAL_OPERATORS = exports.INHERIT_KEYS = exports.FOR_INIT_KEYS = exports.FLATTENABLE_KEYS = exports.EQUALITY_BINARY_OPERATORS = exports.COMPARISON_BINARY_OPERATORS = exports.COMMENT_KEYS = exports.BOOLEAN_UNARY_OPERATORS = exports.BOOLEAN_NUMBER_BINARY_OPERATORS = exports.BOOLEAN_BINARY_OPERATORS = exports.BLOCK_SCOPED_SYMBOL = exports.BINARY_OPERATORS = exports.ASSIGNMENT_OPERATORS = void 0;
+const STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
+exports.STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS;
+const FLATTENABLE_KEYS = ["body", "expressions"];
+exports.FLATTENABLE_KEYS = FLATTENABLE_KEYS;
+const FOR_INIT_KEYS = ["left", "init"];
+exports.FOR_INIT_KEYS = FOR_INIT_KEYS;
+const COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
+exports.COMMENT_KEYS = COMMENT_KEYS;
+const LOGICAL_OPERATORS = ["||", "&&", "??"];
+exports.LOGICAL_OPERATORS = LOGICAL_OPERATORS;
+const UPDATE_OPERATORS = ["++", "--"];
+exports.UPDATE_OPERATORS = UPDATE_OPERATORS;
+const BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
+exports.BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS;
+const EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
+exports.EQUALITY_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS;
+const COMPARISON_BINARY_OPERATORS = [...EQUALITY_BINARY_OPERATORS, "in", "instanceof"];
+exports.COMPARISON_BINARY_OPERATORS = COMPARISON_BINARY_OPERATORS;
+const BOOLEAN_BINARY_OPERATORS = [...COMPARISON_BINARY_OPERATORS, ...BOOLEAN_NUMBER_BINARY_OPERATORS];
+exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS;
+const NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
+exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS;
+const BINARY_OPERATORS = ["+", ...NUMBER_BINARY_OPERATORS, ...BOOLEAN_BINARY_OPERATORS];
+exports.BINARY_OPERATORS = BINARY_OPERATORS;
+const ASSIGNMENT_OPERATORS = ["=", "+=", ...NUMBER_BINARY_OPERATORS.map(op => op + "="), ...LOGICAL_OPERATORS.map(op => op + "=")];
+exports.ASSIGNMENT_OPERATORS = ASSIGNMENT_OPERATORS;
+const BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
+exports.BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS;
+const NUMBER_UNARY_OPERATORS = ["+", "-", "~"];
+exports.NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS;
+const STRING_UNARY_OPERATORS = ["typeof"];
+exports.STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS;
+const UNARY_OPERATORS = ["void", "throw", ...BOOLEAN_UNARY_OPERATORS, ...NUMBER_UNARY_OPERATORS, ...STRING_UNARY_OPERATORS];
+exports.UNARY_OPERATORS = UNARY_OPERATORS;
+const INHERIT_KEYS = {
+ optional: ["typeAnnotation", "typeParameters", "returnType"],
+ force: ["start", "loc", "end"]
+};
+exports.INHERIT_KEYS = INHERIT_KEYS;
+const BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
+exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL;
+const NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
+exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/Scope.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/Scope.js
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/Scope.js
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js
new file mode 100644
index 0000000000..56fdf1fdb4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/ensureBlock.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = ensureBlock;
+
+var _toBlock = require("./toBlock");
+
+function ensureBlock(node, key = "body") {
+ return node[key] = (0, _toBlock.default)(node[key], node);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
new file mode 100644
index 0000000000..379e5ffe09
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/gatherSequenceExpressions.js
@@ -0,0 +1,75 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = gatherSequenceExpressions;
+
+var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers");
+
+var _generated = require("../validators/generated");
+
+var _generated2 = require("../builders/generated");
+
+var _cloneNode = require("../clone/cloneNode");
+
+function gatherSequenceExpressions(nodes, scope, declars) {
+ const exprs = [];
+ let ensureLastUndefined = true;
+
+ for (const node of nodes) {
+ if (!(0, _generated.isEmptyStatement)(node)) {
+ ensureLastUndefined = false;
+ }
+
+ if ((0, _generated.isExpression)(node)) {
+ exprs.push(node);
+ } else if ((0, _generated.isExpressionStatement)(node)) {
+ exprs.push(node.expression);
+ } else if ((0, _generated.isVariableDeclaration)(node)) {
+ if (node.kind !== "var") return;
+
+ for (const declar of node.declarations) {
+ const bindings = (0, _getBindingIdentifiers.default)(declar);
+
+ for (const key of Object.keys(bindings)) {
+ declars.push({
+ kind: node.kind,
+ id: (0, _cloneNode.default)(bindings[key])
+ });
+ }
+
+ if (declar.init) {
+ exprs.push((0, _generated2.assignmentExpression)("=", declar.id, declar.init));
+ }
+ }
+
+ ensureLastUndefined = true;
+ } else if ((0, _generated.isIfStatement)(node)) {
+ const consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode();
+ const alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode();
+ if (!consequent || !alternate) return;
+ exprs.push((0, _generated2.conditionalExpression)(node.test, consequent, alternate));
+ } else if ((0, _generated.isBlockStatement)(node)) {
+ const body = gatherSequenceExpressions(node.body, scope, declars);
+ if (!body) return;
+ exprs.push(body);
+ } else if ((0, _generated.isEmptyStatement)(node)) {
+ if (nodes.indexOf(node) === 0) {
+ ensureLastUndefined = true;
+ }
+ } else {
+ return;
+ }
+ }
+
+ if (ensureLastUndefined) {
+ exprs.push(scope.buildUndefinedNode());
+ }
+
+ if (exprs.length === 1) {
+ return exprs[0];
+ } else {
+ return (0, _generated2.sequenceExpression)(exprs);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
new file mode 100644
index 0000000000..6bbce6e557
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBindingIdentifierName.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toBindingIdentifierName;
+
+var _toIdentifier = require("./toIdentifier");
+
+function toBindingIdentifierName(name) {
+ name = (0, _toIdentifier.default)(name);
+ if (name === "eval" || name === "arguments") name = "_" + name;
+ return name;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBlock.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBlock.js
new file mode 100644
index 0000000000..19886833fa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toBlock.js
@@ -0,0 +1,34 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toBlock;
+
+var _generated = require("../validators/generated");
+
+var _generated2 = require("../builders/generated");
+
+function toBlock(node, parent) {
+ if ((0, _generated.isBlockStatement)(node)) {
+ return node;
+ }
+
+ let blockNodes = [];
+
+ if ((0, _generated.isEmptyStatement)(node)) {
+ blockNodes = [];
+ } else {
+ if (!(0, _generated.isStatement)(node)) {
+ if ((0, _generated.isFunction)(parent)) {
+ node = (0, _generated2.returnStatement)(node);
+ } else {
+ node = (0, _generated2.expressionStatement)(node);
+ }
+ }
+
+ blockNodes = [node];
+ }
+
+ return (0, _generated2.blockStatement)(blockNodes);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toComputedKey.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toComputedKey.js
new file mode 100644
index 0000000000..31e6770f6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toComputedKey.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toComputedKey;
+
+var _generated = require("../validators/generated");
+
+var _generated2 = require("../builders/generated");
+
+function toComputedKey(node, key = node.key || node.property) {
+ if (!node.computed && (0, _generated.isIdentifier)(key)) key = (0, _generated2.stringLiteral)(key.name);
+ return key;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toExpression.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toExpression.js
new file mode 100644
index 0000000000..2d944f0e98
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toExpression.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _generated = require("../validators/generated");
+
+var _default = toExpression;
+exports.default = _default;
+
+function toExpression(node) {
+ if ((0, _generated.isExpressionStatement)(node)) {
+ node = node.expression;
+ }
+
+ if ((0, _generated.isExpression)(node)) {
+ return node;
+ }
+
+ if ((0, _generated.isClass)(node)) {
+ node.type = "ClassExpression";
+ } else if ((0, _generated.isFunction)(node)) {
+ node.type = "FunctionExpression";
+ }
+
+ if (!(0, _generated.isExpression)(node)) {
+ throw new Error(`cannot turn ${node.type} to an expression`);
+ }
+
+ return node;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toIdentifier.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toIdentifier.js
new file mode 100644
index 0000000000..2fd4028d2d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toIdentifier.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toIdentifier;
+
+var _isValidIdentifier = require("../validators/isValidIdentifier");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+function toIdentifier(input) {
+ input = input + "";
+ let name = "";
+
+ for (const c of input) {
+ name += (0, _helperValidatorIdentifier.isIdentifierChar)(c.codePointAt(0)) ? c : "-";
+ }
+
+ name = name.replace(/^[-0-9]+/, "");
+ name = name.replace(/[-\s]+(.)?/g, function (match, c) {
+ return c ? c.toUpperCase() : "";
+ });
+
+ if (!(0, _isValidIdentifier.default)(name)) {
+ name = `_${name}`;
+ }
+
+ return name || "_";
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toKeyAlias.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toKeyAlias.js
new file mode 100644
index 0000000000..49ef4b8ad6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toKeyAlias.js
@@ -0,0 +1,46 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toKeyAlias;
+
+var _generated = require("../validators/generated");
+
+var _cloneNode = require("../clone/cloneNode");
+
+var _removePropertiesDeep = require("../modifications/removePropertiesDeep");
+
+function toKeyAlias(node, key = node.key) {
+ let alias;
+
+ if (node.kind === "method") {
+ return toKeyAlias.increment() + "";
+ } else if ((0, _generated.isIdentifier)(key)) {
+ alias = key.name;
+ } else if ((0, _generated.isStringLiteral)(key)) {
+ alias = JSON.stringify(key.value);
+ } else {
+ alias = JSON.stringify((0, _removePropertiesDeep.default)((0, _cloneNode.default)(key)));
+ }
+
+ if (node.computed) {
+ alias = `[${alias}]`;
+ }
+
+ if (node.static) {
+ alias = `static:${alias}`;
+ }
+
+ return alias;
+}
+
+toKeyAlias.uid = 0;
+
+toKeyAlias.increment = function () {
+ if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
+ return toKeyAlias.uid = 0;
+ } else {
+ return toKeyAlias.uid++;
+ }
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toSequenceExpression.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toSequenceExpression.js
new file mode 100644
index 0000000000..c3d3133ecf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toSequenceExpression.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = toSequenceExpression;
+
+var _gatherSequenceExpressions = require("./gatherSequenceExpressions");
+
+function toSequenceExpression(nodes, scope) {
+ if (!(nodes != null && nodes.length)) return;
+ const declars = [];
+ const result = (0, _gatherSequenceExpressions.default)(nodes, scope, declars);
+ if (!result) return;
+
+ for (const declar of declars) {
+ scope.push(declar);
+ }
+
+ return result;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toStatement.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toStatement.js
new file mode 100644
index 0000000000..da020a61a0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/toStatement.js
@@ -0,0 +1,47 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _generated = require("../validators/generated");
+
+var _generated2 = require("../builders/generated");
+
+var _default = toStatement;
+exports.default = _default;
+
+function toStatement(node, ignore) {
+ if ((0, _generated.isStatement)(node)) {
+ return node;
+ }
+
+ let mustHaveId = false;
+ let newType;
+
+ if ((0, _generated.isClass)(node)) {
+ mustHaveId = true;
+ newType = "ClassDeclaration";
+ } else if ((0, _generated.isFunction)(node)) {
+ mustHaveId = true;
+ newType = "FunctionDeclaration";
+ } else if ((0, _generated.isAssignmentExpression)(node)) {
+ return (0, _generated2.expressionStatement)(node);
+ }
+
+ if (mustHaveId && !node.id) {
+ newType = false;
+ }
+
+ if (!newType) {
+ if (ignore) {
+ return false;
+ } else {
+ throw new Error(`cannot turn ${node.type} to a statement`);
+ }
+ }
+
+ node.type = newType;
+ return node;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/valueToNode.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/valueToNode.js
new file mode 100644
index 0000000000..b3e531b355
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/converters/valueToNode.js
@@ -0,0 +1,99 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _isValidIdentifier = require("../validators/isValidIdentifier");
+
+var _generated = require("../builders/generated");
+
+var _default = valueToNode;
+exports.default = _default;
+const objectToString = Function.call.bind(Object.prototype.toString);
+
+function isRegExp(value) {
+ return objectToString(value) === "[object RegExp]";
+}
+
+function isPlainObject(value) {
+ if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") {
+ return false;
+ }
+
+ const proto = Object.getPrototypeOf(value);
+ return proto === null || Object.getPrototypeOf(proto) === null;
+}
+
+function valueToNode(value) {
+ if (value === undefined) {
+ return (0, _generated.identifier)("undefined");
+ }
+
+ if (value === true || value === false) {
+ return (0, _generated.booleanLiteral)(value);
+ }
+
+ if (value === null) {
+ return (0, _generated.nullLiteral)();
+ }
+
+ if (typeof value === "string") {
+ return (0, _generated.stringLiteral)(value);
+ }
+
+ if (typeof value === "number") {
+ let result;
+
+ if (Number.isFinite(value)) {
+ result = (0, _generated.numericLiteral)(Math.abs(value));
+ } else {
+ let numerator;
+
+ if (Number.isNaN(value)) {
+ numerator = (0, _generated.numericLiteral)(0);
+ } else {
+ numerator = (0, _generated.numericLiteral)(1);
+ }
+
+ result = (0, _generated.binaryExpression)("/", numerator, (0, _generated.numericLiteral)(0));
+ }
+
+ if (value < 0 || Object.is(value, -0)) {
+ result = (0, _generated.unaryExpression)("-", result);
+ }
+
+ return result;
+ }
+
+ if (isRegExp(value)) {
+ const pattern = value.source;
+ const flags = value.toString().match(/\/([a-z]+|)$/)[1];
+ return (0, _generated.regExpLiteral)(pattern, flags);
+ }
+
+ if (Array.isArray(value)) {
+ return (0, _generated.arrayExpression)(value.map(valueToNode));
+ }
+
+ if (isPlainObject(value)) {
+ const props = [];
+
+ for (const key of Object.keys(value)) {
+ let nodeKey;
+
+ if ((0, _isValidIdentifier.default)(key)) {
+ nodeKey = (0, _generated.identifier)(key);
+ } else {
+ nodeKey = (0, _generated.stringLiteral)(key);
+ }
+
+ props.push((0, _generated.objectProperty)(nodeKey, valueToNode(value[key])));
+ }
+
+ return (0, _generated.objectExpression)(props);
+ }
+
+ throw new Error("don't know how to turn this value into a node");
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js
new file mode 100644
index 0000000000..6d2c081535
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/core.js
@@ -0,0 +1,1604 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.patternLikeCommon = exports.functionTypeAnnotationCommon = exports.functionDeclarationCommon = exports.functionCommon = exports.classMethodOrPropertyCommon = exports.classMethodOrDeclareMethodCommon = void 0;
+
+var _is = require("../validators/is");
+
+var _isValidIdentifier = require("../validators/isValidIdentifier");
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+var _constants = require("../constants");
+
+var _utils = require("./utils");
+
+const defineType = (0, _utils.defineAliasedType)("Standardized");
+defineType("ArrayExpression", {
+ fields: {
+ elements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "Expression", "SpreadElement"))),
+ default: !process.env.BABEL_TYPES_8_BREAKING ? [] : undefined
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+defineType("AssignmentExpression", {
+ fields: {
+ operator: {
+ validate: function () {
+ if (!process.env.BABEL_TYPES_8_BREAKING) {
+ return (0, _utils.assertValueType)("string");
+ }
+
+ const identifier = (0, _utils.assertOneOf)(..._constants.ASSIGNMENT_OPERATORS);
+ const pattern = (0, _utils.assertOneOf)("=");
+ return function (node, key, val) {
+ const validator = (0, _is.default)("Pattern", node.left) ? pattern : identifier;
+ validator(node, key, val);
+ };
+ }()
+ },
+ left: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Expression"]
+});
+defineType("BinaryExpression", {
+ builder: ["operator", "left", "right"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._constants.BINARY_OPERATORS)
+ },
+ left: {
+ validate: function () {
+ const expression = (0, _utils.assertNodeType)("Expression");
+ const inOp = (0, _utils.assertNodeType)("Expression", "PrivateName");
+
+ const validator = function (node, key, val) {
+ const validator = node.operator === "in" ? inOp : expression;
+ validator(node, key, val);
+ };
+
+ validator.oneOfNodeTypes = ["Expression", "PrivateName"];
+ return validator;
+ }()
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"]
+});
+defineType("InterpreterDirective", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("Directive", {
+ visitor: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertNodeType)("DirectiveLiteral")
+ }
+ }
+});
+defineType("DirectiveLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("BlockStatement", {
+ builder: ["body", "directives"],
+ visitor: ["directives", "body"],
+ fields: {
+ directives: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))),
+ default: []
+ },
+ body: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement")))
+ }
+ },
+ aliases: ["Scopable", "BlockParent", "Block", "Statement"]
+});
+defineType("BreakStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+defineType("CallExpression", {
+ visitor: ["callee", "arguments", "typeParameters", "typeArguments"],
+ builder: ["callee", "arguments"],
+ aliases: ["Expression"],
+ fields: Object.assign({
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression", "V8IntrinsicIdentifier")
+ },
+ arguments: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder")))
+ }
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ optional: {
+ validate: (0, _utils.assertOneOf)(true, false),
+ optional: true
+ }
+ } : {}, {
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ })
+});
+defineType("CatchClause", {
+ visitor: ["param", "body"],
+ fields: {
+ param: {
+ validate: (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ },
+ aliases: ["Scopable", "BlockParent"]
+});
+defineType("ConditionalExpression", {
+ visitor: ["test", "consequent", "alternate"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ consequent: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ alternate: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression", "Conditional"]
+});
+defineType("ContinueStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+defineType("DebuggerStatement", {
+ aliases: ["Statement"]
+});
+defineType("DoWhileStatement", {
+ visitor: ["test", "body"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ },
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
+});
+defineType("EmptyStatement", {
+ aliases: ["Statement"]
+});
+defineType("ExpressionStatement", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Statement", "ExpressionWrapper"]
+});
+defineType("File", {
+ builder: ["program", "comments", "tokens"],
+ visitor: ["program"],
+ fields: {
+ program: {
+ validate: (0, _utils.assertNodeType)("Program")
+ },
+ comments: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? Object.assign(() => {}, {
+ each: {
+ oneOfNodeTypes: ["CommentBlock", "CommentLine"]
+ }
+ }) : (0, _utils.assertEach)((0, _utils.assertNodeType)("CommentBlock", "CommentLine")),
+ optional: true
+ },
+ tokens: {
+ validate: (0, _utils.assertEach)(Object.assign(() => {}, {
+ type: "any"
+ })),
+ optional: true
+ }
+ }
+});
+defineType("ForInStatement", {
+ visitor: ["left", "right", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("VariableDeclaration", "LVal") : (0, _utils.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("ForStatement", {
+ visitor: ["init", "test", "update", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
+ fields: {
+ init: {
+ validate: (0, _utils.assertNodeType)("VariableDeclaration", "Expression"),
+ optional: true
+ },
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ update: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+const functionCommon = {
+ params: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement")))
+ },
+ generator: {
+ default: false
+ },
+ async: {
+ default: false
+ }
+};
+exports.functionCommon = functionCommon;
+const functionTypeAnnotationCommon = {
+ returnType: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ }
+};
+exports.functionTypeAnnotationCommon = functionTypeAnnotationCommon;
+const functionDeclarationCommon = Object.assign({}, functionCommon, {
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ }
+});
+exports.functionDeclarationCommon = functionDeclarationCommon;
+defineType("FunctionDeclaration", {
+ builder: ["id", "params", "body", "generator", "async"],
+ visitor: ["id", "params", "body", "returnType", "typeParameters"],
+ fields: Object.assign({}, functionDeclarationCommon, functionTypeAnnotationCommon, {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }),
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"],
+ validate: function () {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return () => {};
+ const identifier = (0, _utils.assertNodeType)("Identifier");
+ return function (parent, key, node) {
+ if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
+ identifier(node, "id", node.id);
+ }
+ };
+ }()
+});
+defineType("FunctionExpression", {
+ inherits: "FunctionDeclaration",
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+});
+const patternLikeCommon = {
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator")))
+ }
+};
+exports.patternLikeCommon = patternLikeCommon;
+defineType("Identifier", {
+ builder: ["name"],
+ visitor: ["typeAnnotation", "decorators"],
+ aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"],
+ fields: Object.assign({}, patternLikeCommon, {
+ name: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (!(0, _isValidIdentifier.default)(val, false)) {
+ throw new TypeError(`"${val}" is not a valid identifier name`);
+ }
+ }, {
+ type: "string"
+ }))
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ }),
+
+ validate(parent, key, node) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+ const match = /\.(\w+)$/.exec(key);
+ if (!match) return;
+ const [, parentKey] = match;
+ const nonComp = {
+ computed: false
+ };
+
+ if (parentKey === "property") {
+ if ((0, _is.default)("MemberExpression", parent, nonComp)) return;
+ if ((0, _is.default)("OptionalMemberExpression", parent, nonComp)) return;
+ } else if (parentKey === "key") {
+ if ((0, _is.default)("Property", parent, nonComp)) return;
+ if ((0, _is.default)("Method", parent, nonComp)) return;
+ } else if (parentKey === "exported") {
+ if ((0, _is.default)("ExportSpecifier", parent)) return;
+ } else if (parentKey === "imported") {
+ if ((0, _is.default)("ImportSpecifier", parent, {
+ imported: node
+ })) return;
+ } else if (parentKey === "meta") {
+ if ((0, _is.default)("MetaProperty", parent, {
+ meta: node
+ })) return;
+ }
+
+ if (((0, _helperValidatorIdentifier.isKeyword)(node.name) || (0, _helperValidatorIdentifier.isReservedWord)(node.name, false)) && node.name !== "this") {
+ throw new TypeError(`"${node.name}" is not a valid identifier`);
+ }
+ }
+
+});
+defineType("IfStatement", {
+ visitor: ["test", "consequent", "alternate"],
+ aliases: ["Statement", "Conditional"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ consequent: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ },
+ alternate: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("LabeledStatement", {
+ visitor: ["label", "body"],
+ aliases: ["Statement"],
+ fields: {
+ label: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("StringLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("NumericLiteral", {
+ builder: ["value"],
+ deprecatedAlias: "NumberLiteral",
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("number")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("NullLiteral", {
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("BooleanLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("boolean")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("RegExpLiteral", {
+ builder: ["pattern", "flags"],
+ deprecatedAlias: "RegexLiteral",
+ aliases: ["Expression", "Pureish", "Literal"],
+ fields: {
+ pattern: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ flags: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), Object.assign(function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+ const invalid = /[^gimsuy]/.exec(val);
+
+ if (invalid) {
+ throw new TypeError(`"${invalid[0]}" is not a valid RegExp flag`);
+ }
+ }, {
+ type: "string"
+ })),
+ default: ""
+ }
+ }
+});
+defineType("LogicalExpression", {
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"],
+ fields: {
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._constants.LOGICAL_OPERATORS)
+ },
+ left: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("MemberExpression", {
+ builder: ["object", "property", "computed", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])],
+ visitor: ["object", "property"],
+ aliases: ["Expression", "LVal"],
+ fields: Object.assign({
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ property: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "PrivateName");
+ const computed = (0, _utils.assertNodeType)("Expression");
+
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"];
+ return validator;
+ }()
+ },
+ computed: {
+ default: false
+ }
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ optional: {
+ validate: (0, _utils.assertOneOf)(true, false),
+ optional: true
+ }
+ } : {})
+});
+defineType("NewExpression", {
+ inherits: "CallExpression"
+});
+defineType("Program", {
+ visitor: ["directives", "body"],
+ builder: ["body", "directives", "sourceType", "interpreter"],
+ fields: {
+ sourceFile: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ sourceType: {
+ validate: (0, _utils.assertOneOf)("script", "module"),
+ default: "script"
+ },
+ interpreter: {
+ validate: (0, _utils.assertNodeType)("InterpreterDirective"),
+ default: null,
+ optional: true
+ },
+ directives: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Directive"))),
+ default: []
+ },
+ body: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement")))
+ }
+ },
+ aliases: ["Scopable", "BlockParent", "Block"]
+});
+defineType("ObjectExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectMethod", "ObjectProperty", "SpreadElement")))
+ }
+ }
+});
+defineType("ObjectMethod", {
+ builder: ["kind", "key", "params", "body", "computed", "generator", "async"],
+ fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, {
+ kind: Object.assign({
+ validate: (0, _utils.assertOneOf)("method", "get", "set")
+ }, !process.env.BABEL_TYPES_8_BREAKING ? {
+ default: "method"
+ } : {}),
+ computed: {
+ default: false
+ },
+ key: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"];
+ return validator;
+ }()
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }),
+ visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
+ aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
+});
+defineType("ObjectProperty", {
+ builder: ["key", "value", "computed", "shorthand", ...(!process.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])],
+ fields: {
+ computed: {
+ default: false
+ },
+ key: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+
+ validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral"];
+ return validator;
+ }()
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression", "PatternLike")
+ },
+ shorthand: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (val && node.computed) {
+ throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
+ }
+ }, {
+ type: "boolean"
+ }), function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (val && !(0, _is.default)("Identifier", node.key)) {
+ throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
+ }
+ }),
+ default: false
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ }
+ },
+ visitor: ["key", "value", "decorators"],
+ aliases: ["UserWhitespacable", "Property", "ObjectMember"],
+ validate: function () {
+ const pattern = (0, _utils.assertNodeType)("Identifier", "Pattern");
+ const expression = (0, _utils.assertNodeType)("Expression");
+ return function (parent, key, node) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+ const validator = (0, _is.default)("ObjectPattern", parent) ? pattern : expression;
+ validator(node, "value", node.value);
+ };
+ }()
+});
+defineType("RestElement", {
+ visitor: ["argument", "typeAnnotation"],
+ builder: ["argument"],
+ aliases: ["LVal", "PatternLike"],
+ deprecatedAlias: "RestProperty",
+ fields: Object.assign({}, patternLikeCommon, {
+ argument: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("LVal") : (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression")
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ }),
+
+ validate(parent, key) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+ const match = /(\w+)\[(\d+)\]/.exec(key);
+ if (!match) throw new Error("Internal Babel error: malformed key.");
+ const [, listKey, index] = match;
+
+ if (parent[listKey].length > index + 1) {
+ throw new TypeError(`RestElement must be last element of ${listKey}`);
+ }
+ }
+
+});
+defineType("ReturnStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ }
+ }
+});
+defineType("SequenceExpression", {
+ visitor: ["expressions"],
+ fields: {
+ expressions: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression")))
+ }
+ },
+ aliases: ["Expression"]
+});
+defineType("ParenthesizedExpression", {
+ visitor: ["expression"],
+ aliases: ["Expression", "ExpressionWrapper"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("SwitchCase", {
+ visitor: ["test", "consequent"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ consequent: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement")))
+ }
+ }
+});
+defineType("SwitchStatement", {
+ visitor: ["discriminant", "cases"],
+ aliases: ["Statement", "BlockParent", "Scopable"],
+ fields: {
+ discriminant: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ cases: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("SwitchCase")))
+ }
+ }
+});
+defineType("ThisExpression", {
+ aliases: ["Expression"]
+});
+defineType("ThrowStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("TryStatement", {
+ visitor: ["block", "handler", "finalizer"],
+ aliases: ["Statement"],
+ fields: {
+ block: {
+ validate: (0, _utils.chain)((0, _utils.assertNodeType)("BlockStatement"), Object.assign(function (node) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (!node.handler && !node.finalizer) {
+ throw new TypeError("TryStatement expects either a handler or finalizer, or both");
+ }
+ }, {
+ oneOfNodeTypes: ["BlockStatement"]
+ }))
+ },
+ handler: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("CatchClause")
+ },
+ finalizer: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ }
+});
+defineType("UnaryExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ default: true
+ },
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._constants.UNARY_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["UnaryLike", "Expression"]
+});
+defineType("UpdateExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ default: false
+ },
+ argument: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertNodeType)("Expression") : (0, _utils.assertNodeType)("Identifier", "MemberExpression")
+ },
+ operator: {
+ validate: (0, _utils.assertOneOf)(..._constants.UPDATE_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["Expression"]
+});
+defineType("VariableDeclaration", {
+ builder: ["kind", "declarations"],
+ visitor: ["declarations"],
+ aliases: ["Statement", "Declaration"],
+ fields: {
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ kind: {
+ validate: (0, _utils.assertOneOf)("var", "let", "const")
+ },
+ declarations: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("VariableDeclarator")))
+ }
+ },
+
+ validate(parent, key, node) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+ if (!(0, _is.default)("ForXStatement", parent, {
+ left: node
+ })) return;
+
+ if (node.declarations.length !== 1) {
+ throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`);
+ }
+ }
+
+});
+defineType("VariableDeclarator", {
+ visitor: ["id", "init"],
+ fields: {
+ id: {
+ validate: function () {
+ if (!process.env.BABEL_TYPES_8_BREAKING) {
+ return (0, _utils.assertNodeType)("LVal");
+ }
+
+ const normal = (0, _utils.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern");
+ const without = (0, _utils.assertNodeType)("Identifier");
+ return function (node, key, val) {
+ const validator = node.init ? normal : without;
+ validator(node, key, val);
+ };
+ }()
+ },
+ definite: {
+ optional: true,
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ init: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("WhileStatement", {
+ visitor: ["test", "body"],
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
+ fields: {
+ test: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("WithStatement", {
+ visitor: ["object", "body"],
+ aliases: ["Statement"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ }
+ }
+});
+defineType("AssignmentPattern", {
+ visitor: ["left", "right", "decorators"],
+ builder: ["left", "right"],
+ aliases: ["Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon, {
+ left: {
+ validate: (0, _utils.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression")
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ }
+ })
+});
+defineType("ArrayPattern", {
+ visitor: ["elements", "typeAnnotation"],
+ builder: ["elements"],
+ aliases: ["Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon, {
+ elements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeOrValueType)("null", "PatternLike")))
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ })
+});
+defineType("ArrowFunctionExpression", {
+ builder: ["params", "body", "async"],
+ visitor: ["params", "body", "returnType", "typeParameters"],
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: Object.assign({}, functionCommon, functionTypeAnnotationCommon, {
+ expression: {
+ validate: (0, _utils.assertValueType)("boolean")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement", "Expression")
+ }
+ })
+});
+defineType("ClassBody", {
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "TSDeclareMethod", "TSIndexSignature")))
+ }
+ }
+});
+defineType("ClassExpression", {
+ builder: ["id", "superClass", "body", "decorators"],
+ visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"],
+ aliases: ["Scopable", "Class", "Expression"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ superTypeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ },
+ implements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ },
+ mixins: {
+ validate: (0, _utils.assertNodeType)("InterfaceExtends"),
+ optional: true
+ }
+ }
+});
+defineType("ClassDeclaration", {
+ inherits: "ClassExpression",
+ aliases: ["Scopable", "Class", "Statement", "Declaration"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ superTypeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ },
+ implements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSExpressionWithTypeArguments", "ClassImplements"))),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ },
+ mixins: {
+ validate: (0, _utils.assertNodeType)("InterfaceExtends"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ abstract: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ },
+ validate: function () {
+ const identifier = (0, _utils.assertNodeType)("Identifier");
+ return function (parent, key, node) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (!(0, _is.default)("ExportDefaultDeclaration", parent)) {
+ identifier(node, "id", node.id);
+ }
+ };
+ }()
+});
+defineType("ExportAllDeclaration", {
+ visitor: ["source"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value")),
+ assertions: {
+ optional: true,
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute")))
+ }
+ }
+});
+defineType("ExportDefaultDeclaration", {
+ visitor: ["declaration"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ declaration: {
+ validate: (0, _utils.assertNodeType)("FunctionDeclaration", "TSDeclareFunction", "ClassDeclaration", "Expression")
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("value"))
+ }
+});
+defineType("ExportNamedDeclaration", {
+ visitor: ["declaration", "specifiers", "source"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ declaration: {
+ optional: true,
+ validate: (0, _utils.chain)((0, _utils.assertNodeType)("Declaration"), Object.assign(function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (val && node.specifiers.length) {
+ throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
+ }
+ }, {
+ oneOfNodeTypes: ["Declaration"]
+ }), function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (val && node.source) {
+ throw new TypeError("Cannot export a declaration from a source");
+ }
+ })
+ },
+ assertions: {
+ optional: true,
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute")))
+ },
+ specifiers: {
+ default: [],
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)(function () {
+ const sourced = (0, _utils.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier");
+ const sourceless = (0, _utils.assertNodeType)("ExportSpecifier");
+ if (!process.env.BABEL_TYPES_8_BREAKING) return sourced;
+ return function (node, key, val) {
+ const validator = node.source ? sourced : sourceless;
+ validator(node, key, val);
+ };
+ }()))
+ },
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral"),
+ optional: true
+ },
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ }
+});
+defineType("ExportSpecifier", {
+ visitor: ["local", "exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ exportKind: {
+ validate: (0, _utils.assertOneOf)("type", "value"),
+ optional: true
+ }
+ }
+});
+defineType("ForOfStatement", {
+ visitor: ["left", "right", "body"],
+ builder: ["left", "right", "body", "await"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: function () {
+ if (!process.env.BABEL_TYPES_8_BREAKING) {
+ return (0, _utils.assertNodeType)("VariableDeclaration", "LVal");
+ }
+
+ const declaration = (0, _utils.assertNodeType)("VariableDeclaration");
+ const lval = (0, _utils.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern");
+ return function (node, key, val) {
+ if ((0, _is.default)("VariableDeclaration", val)) {
+ declaration(node, key, val);
+ } else {
+ lval(node, key, val);
+ }
+ };
+ }()
+ },
+ right: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("Statement")
+ },
+ await: {
+ default: false
+ }
+ }
+});
+defineType("ImportDeclaration", {
+ visitor: ["specifiers", "source"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration"],
+ fields: {
+ assertions: {
+ optional: true,
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportAttribute")))
+ },
+ specifiers: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier")))
+ },
+ source: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ },
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
+ optional: true
+ }
+ }
+});
+defineType("ImportDefaultSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("ImportNamespaceSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("ImportSpecifier", {
+ visitor: ["local", "imported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ imported: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "typeof", "value"),
+ optional: true
+ }
+ }
+});
+defineType("MetaProperty", {
+ visitor: ["meta", "property"],
+ aliases: ["Expression"],
+ fields: {
+ meta: {
+ validate: (0, _utils.chain)((0, _utils.assertNodeType)("Identifier"), Object.assign(function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+ let property;
+
+ switch (val.name) {
+ case "function":
+ property = "sent";
+ break;
+
+ case "new":
+ property = "target";
+ break;
+
+ case "import":
+ property = "meta";
+ break;
+ }
+
+ if (!(0, _is.default)("Identifier", node.property, {
+ name: property
+ })) {
+ throw new TypeError("Unrecognised MetaProperty");
+ }
+ }, {
+ oneOfNodeTypes: ["Identifier"]
+ }))
+ },
+ property: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+const classMethodOrPropertyCommon = {
+ abstract: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ accessibility: {
+ validate: (0, _utils.assertOneOf)("public", "private", "protected"),
+ optional: true
+ },
+ static: {
+ default: false
+ },
+ override: {
+ default: false
+ },
+ computed: {
+ default: false
+ },
+ optional: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ key: {
+ validate: (0, _utils.chain)(function () {
+ const normal = (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral");
+ const computed = (0, _utils.assertNodeType)("Expression");
+ return function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+ }(), (0, _utils.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "Expression"))
+ }
+};
+exports.classMethodOrPropertyCommon = classMethodOrPropertyCommon;
+const classMethodOrDeclareMethodCommon = Object.assign({}, functionCommon, classMethodOrPropertyCommon, {
+ params: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Identifier", "Pattern", "RestElement", "TSParameterProperty")))
+ },
+ kind: {
+ validate: (0, _utils.assertOneOf)("get", "set", "method", "constructor"),
+ default: "method"
+ },
+ access: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("string"), (0, _utils.assertOneOf)("public", "private", "protected")),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ }
+});
+exports.classMethodOrDeclareMethodCommon = classMethodOrDeclareMethodCommon;
+defineType("ClassMethod", {
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"],
+ builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"],
+ visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
+ fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+});
+defineType("ObjectPattern", {
+ visitor: ["properties", "typeAnnotation", "decorators"],
+ builder: ["properties"],
+ aliases: ["Pattern", "PatternLike", "LVal"],
+ fields: Object.assign({}, patternLikeCommon, {
+ properties: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("RestElement", "ObjectProperty")))
+ }
+ })
+});
+defineType("SpreadElement", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ deprecatedAlias: "SpreadProperty",
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("Super", {
+ aliases: ["Expression"]
+});
+defineType("TaggedTemplateExpression", {
+ visitor: ["tag", "quasi", "typeParameters"],
+ builder: ["tag", "quasi"],
+ aliases: ["Expression"],
+ fields: {
+ tag: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ quasi: {
+ validate: (0, _utils.assertNodeType)("TemplateLiteral")
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ }
+ }
+});
+defineType("TemplateElement", {
+ builder: ["value", "tail"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertShape)({
+ raw: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ cooked: {
+ validate: (0, _utils.assertValueType)("string"),
+ optional: true
+ }
+ })
+ },
+ tail: {
+ default: false
+ }
+ }
+});
+defineType("TemplateLiteral", {
+ visitor: ["quasis", "expressions"],
+ aliases: ["Expression", "Literal"],
+ fields: {
+ quasis: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TemplateElement")))
+ },
+ expressions: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "TSType")), function (node, key, val) {
+ if (node.quasis.length !== val.length + 1) {
+ throw new TypeError(`Number of ${node.type} quasis should be exactly one more than the number of expressions.\nExpected ${val.length + 1} quasis but got ${node.quasis.length}`);
+ }
+ })
+ }
+ }
+});
+defineType("YieldExpression", {
+ builder: ["argument", "delegate"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ delegate: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("boolean"), Object.assign(function (node, key, val) {
+ if (!process.env.BABEL_TYPES_8_BREAKING) return;
+
+ if (val && !node.argument) {
+ throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
+ }
+ }, {
+ type: "boolean"
+ })),
+ default: false
+ },
+ argument: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("AwaitExpression", {
+ builder: ["argument"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("Import", {
+ aliases: ["Expression"]
+});
+defineType("BigIntLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+defineType("ExportNamespaceSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("OptionalMemberExpression", {
+ builder: ["object", "property", "computed", "optional"],
+ visitor: ["object", "property"],
+ aliases: ["Expression"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ property: {
+ validate: function () {
+ const normal = (0, _utils.assertNodeType)("Identifier");
+ const computed = (0, _utils.assertNodeType)("Expression");
+
+ const validator = function (node, key, val) {
+ const validator = node.computed ? computed : normal;
+ validator(node, key, val);
+ };
+
+ validator.oneOfNodeTypes = ["Expression", "Identifier"];
+ return validator;
+ }()
+ },
+ computed: {
+ default: false
+ },
+ optional: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
+ }
+ }
+});
+defineType("OptionalCallExpression", {
+ visitor: ["callee", "arguments", "typeParameters", "typeArguments"],
+ builder: ["callee", "arguments", "optional"],
+ aliases: ["Expression"],
+ fields: {
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ arguments: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder")))
+ },
+ optional: {
+ validate: !process.env.BABEL_TYPES_8_BREAKING ? (0, _utils.assertValueType)("boolean") : (0, _utils.chain)((0, _utils.assertValueType)("boolean"), (0, _utils.assertOptionalChainStart)())
+ },
+ typeArguments: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterInstantiation"),
+ optional: true
+ }
+ }
+});
+defineType("ClassProperty", {
+ visitor: ["key", "value", "typeAnnotation", "decorators"],
+ builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
+ aliases: ["Property"],
+ fields: Object.assign({}, classMethodOrPropertyCommon, {
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ declare: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ })
+});
+defineType("ClassPrivateProperty", {
+ visitor: ["key", "value", "decorators", "typeAnnotation"],
+ builder: ["key", "value", "decorators", "static"],
+ aliases: ["Property", "Private"],
+ fields: {
+ key: {
+ validate: (0, _utils.assertNodeType)("PrivateName")
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("Expression"),
+ optional: true
+ },
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ definite: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ variance: {
+ validate: (0, _utils.assertNodeType)("Variance"),
+ optional: true
+ }
+ }
+});
+defineType("ClassPrivateMethod", {
+ builder: ["kind", "key", "params", "body", "static"],
+ visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
+ fields: Object.assign({}, classMethodOrDeclareMethodCommon, functionTypeAnnotationCommon, {
+ key: {
+ validate: (0, _utils.assertNodeType)("PrivateName")
+ },
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ }
+ })
+});
+defineType("PrivateName", {
+ visitor: ["id"],
+ aliases: ["Private"],
+ fields: {
+ id: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+defineType("StaticBlock", {
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Statement")))
+ }
+ },
+ aliases: ["Scopable", "BlockParent", "FunctionParent"]
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/experimental.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/experimental.js
new file mode 100644
index 0000000000..be97c0d791
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/experimental.js
@@ -0,0 +1,133 @@
+"use strict";
+
+var _utils = require("./utils");
+
+(0, _utils.default)("ArgumentPlaceholder", {});
+(0, _utils.default)("BindExpression", {
+ visitor: ["object", "callee"],
+ aliases: ["Expression"],
+ fields: !process.env.BABEL_TYPES_8_BREAKING ? {
+ object: {
+ validate: Object.assign(() => {}, {
+ oneOfNodeTypes: ["Expression"]
+ })
+ },
+ callee: {
+ validate: Object.assign(() => {}, {
+ oneOfNodeTypes: ["Expression"]
+ })
+ }
+ } : {
+ object: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ },
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+(0, _utils.default)("ImportAttribute", {
+ visitor: ["key", "value"],
+ fields: {
+ key: {
+ validate: (0, _utils.assertNodeType)("Identifier", "StringLiteral")
+ },
+ value: {
+ validate: (0, _utils.assertNodeType)("StringLiteral")
+ }
+ }
+});
+(0, _utils.default)("Decorator", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+(0, _utils.default)("DoExpression", {
+ visitor: ["body"],
+ builder: ["body", "async"],
+ aliases: ["Expression"],
+ fields: {
+ body: {
+ validate: (0, _utils.assertNodeType)("BlockStatement")
+ },
+ async: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ }
+ }
+});
+(0, _utils.default)("ExportDefaultSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ }
+ }
+});
+(0, _utils.default)("RecordExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("ObjectProperty", "SpreadElement")))
+ }
+ }
+});
+(0, _utils.default)("TupleExpression", {
+ fields: {
+ elements: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Expression", "SpreadElement"))),
+ default: []
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+(0, _utils.default)("DecimalLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+(0, _utils.default)("ModuleExpression", {
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: (0, _utils.assertNodeType)("Program")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("TopicReference", {
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelineTopicExpression", {
+ builder: ["expression"],
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelineBareFunction", {
+ builder: ["callee"],
+ visitor: ["callee"],
+ fields: {
+ callee: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ },
+ aliases: ["Expression"]
+});
+(0, _utils.default)("PipelinePrimaryTopicReference", {
+ aliases: ["Expression"]
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js
new file mode 100644
index 0000000000..706de24252
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/flow.js
@@ -0,0 +1,474 @@
+"use strict";
+
+var _utils = require("./utils");
+
+const defineType = (0, _utils.defineAliasedType)("Flow");
+
+const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => {
+ defineType(name, {
+ builder: ["id", "typeParameters", "extends", "body"],
+ visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)(typeParameterType),
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")),
+ body: (0, _utils.validateType)("ObjectTypeAnnotation")
+ }
+ });
+};
+
+defineType("AnyTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ArrayTypeAnnotation", {
+ visitor: ["elementType"],
+ aliases: ["FlowType"],
+ fields: {
+ elementType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("BooleanTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("BooleanLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("NullLiteralTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ClassImplements", {
+ visitor: ["id", "typeParameters"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineInterfaceishType("DeclareClass");
+defineType("DeclareFunction", {
+ visitor: ["id"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ predicate: (0, _utils.validateOptionalType)("DeclaredPredicate")
+ }
+});
+defineInterfaceishType("DeclareInterface");
+defineType("DeclareModule", {
+ builder: ["id", "body", "kind"],
+ visitor: ["id", "body"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
+ body: (0, _utils.validateType)("BlockStatement"),
+ kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES"))
+ }
+});
+defineType("DeclareModuleExports", {
+ visitor: ["typeAnnotation"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
+ }
+});
+defineType("DeclareTypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ right: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("DeclareOpaqueType", {
+ visitor: ["id", "typeParameters", "supertype"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ supertype: (0, _utils.validateOptionalType)("FlowType"),
+ impltype: (0, _utils.validateOptionalType)("FlowType")
+ }
+});
+defineType("DeclareVariable", {
+ visitor: ["id"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("DeclareExportDeclaration", {
+ visitor: ["declaration", "specifiers", "source"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ declaration: (0, _utils.validateOptionalType)("Flow"),
+ specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)(["ExportSpecifier", "ExportNamespaceSpecifier"])),
+ source: (0, _utils.validateOptionalType)("StringLiteral"),
+ default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("DeclareExportAllDeclaration", {
+ visitor: ["source"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ source: (0, _utils.validateType)("StringLiteral"),
+ exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
+ }
+});
+defineType("DeclaredPredicate", {
+ visitor: ["value"],
+ aliases: ["FlowPredicate"],
+ fields: {
+ value: (0, _utils.validateType)("Flow")
+ }
+});
+defineType("ExistsTypeAnnotation", {
+ aliases: ["FlowType"]
+});
+defineType("FunctionTypeAnnotation", {
+ visitor: ["typeParameters", "params", "rest", "returnType"],
+ aliases: ["FlowType"],
+ fields: {
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("FunctionTypeParam")),
+ rest: (0, _utils.validateOptionalType)("FunctionTypeParam"),
+ this: (0, _utils.validateOptionalType)("FunctionTypeParam"),
+ returnType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("FunctionTypeParam", {
+ visitor: ["name", "typeAnnotation"],
+ fields: {
+ name: (0, _utils.validateOptionalType)("Identifier"),
+ typeAnnotation: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("GenericTypeAnnotation", {
+ visitor: ["id", "typeParameters"],
+ aliases: ["FlowType"],
+ fields: {
+ id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineType("InferredPredicate", {
+ aliases: ["FlowPredicate"]
+});
+defineType("InterfaceExtends", {
+ visitor: ["id", "typeParameters"],
+ fields: {
+ id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
+ }
+});
+defineInterfaceishType("InterfaceDeclaration");
+defineType("InterfaceTypeAnnotation", {
+ visitor: ["extends", "body"],
+ aliases: ["FlowType"],
+ fields: {
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
+ body: (0, _utils.validateType)("ObjectTypeAnnotation")
+ }
+});
+defineType("IntersectionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("MixedTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("EmptyTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("NullableTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ aliases: ["FlowType"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("NumberLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("number"))
+ }
+});
+defineType("NumberTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ObjectTypeAnnotation", {
+ visitor: ["properties", "indexers", "callProperties", "internalSlots"],
+ aliases: ["FlowType"],
+ builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
+ fields: {
+ properties: (0, _utils.validate)((0, _utils.arrayOfType)(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])),
+ indexers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeIndexer")),
+ callProperties: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeCallProperty")),
+ internalSlots: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeInternalSlot")),
+ exact: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ default: false
+ },
+ inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeInternalSlot", {
+ visitor: ["id", "value", "optional", "static", "method"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ value: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeCallProperty", {
+ visitor: ["value"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ value: (0, _utils.validateType)("FlowType"),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeIndexer", {
+ visitor: ["id", "key", "value", "variance"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ id: (0, _utils.validateOptionalType)("Identifier"),
+ key: (0, _utils.validateType)("FlowType"),
+ value: (0, _utils.validateType)("FlowType"),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ variance: (0, _utils.validateOptionalType)("Variance")
+ }
+});
+defineType("ObjectTypeProperty", {
+ visitor: ["key", "value", "variance"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ key: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
+ value: (0, _utils.validateType)("FlowType"),
+ kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")),
+ static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ variance: (0, _utils.validateOptionalType)("Variance"),
+ method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("ObjectTypeSpreadProperty", {
+ visitor: ["argument"],
+ aliases: ["UserWhitespacable"],
+ fields: {
+ argument: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("OpaqueType", {
+ visitor: ["id", "typeParameters", "supertype", "impltype"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ supertype: (0, _utils.validateOptionalType)("FlowType"),
+ impltype: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("QualifiedTypeIdentifier", {
+ visitor: ["id", "qualification"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ qualification: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"])
+ }
+});
+defineType("StringLiteralTypeAnnotation", {
+ builder: ["value"],
+ aliases: ["FlowType"],
+ fields: {
+ value: (0, _utils.validate)((0, _utils.assertValueType)("string"))
+ }
+});
+defineType("StringTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("SymbolTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("ThisTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("TupleTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("TypeofTypeAnnotation", {
+ visitor: ["argument"],
+ aliases: ["FlowType"],
+ fields: {
+ argument: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
+ right: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("TypeCastExpression", {
+ visitor: ["expression", "typeAnnotation"],
+ aliases: ["ExpressionWrapper", "Expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
+ }
+});
+defineType("TypeParameter", {
+ visitor: ["bound", "default", "variance"],
+ fields: {
+ name: (0, _utils.validate)((0, _utils.assertValueType)("string")),
+ bound: (0, _utils.validateOptionalType)("TypeAnnotation"),
+ default: (0, _utils.validateOptionalType)("FlowType"),
+ variance: (0, _utils.validateOptionalType)("Variance")
+ }
+});
+defineType("TypeParameterDeclaration", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter"))
+ }
+});
+defineType("TypeParameterInstantiation", {
+ visitor: ["params"],
+ fields: {
+ params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("UnionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["FlowType"],
+ fields: {
+ types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
+ }
+});
+defineType("Variance", {
+ builder: ["kind"],
+ fields: {
+ kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
+ }
+});
+defineType("VoidTypeAnnotation", {
+ aliases: ["FlowType", "FlowBaseAnnotation"]
+});
+defineType("EnumDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "body"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ body: (0, _utils.validateType)(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"])
+ }
+});
+defineType("EnumBooleanBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumBooleanMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumNumberBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)("EnumNumberMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumStringBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
+ members: (0, _utils.validateArrayOfType)(["EnumStringMember", "EnumDefaultedMember"]),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumSymbolBody", {
+ aliases: ["EnumBody"],
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"),
+ hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+});
+defineType("EnumBooleanMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("BooleanLiteral")
+ }
+});
+defineType("EnumNumberMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("NumericLiteral")
+ }
+});
+defineType("EnumStringMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id", "init"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier"),
+ init: (0, _utils.validateType)("StringLiteral")
+ }
+});
+defineType("EnumDefaultedMember", {
+ aliases: ["EnumMember"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("IndexedAccessType", {
+ visitor: ["objectType", "indexType"],
+ aliases: ["FlowType"],
+ fields: {
+ objectType: (0, _utils.validateType)("FlowType"),
+ indexType: (0, _utils.validateType)("FlowType")
+ }
+});
+defineType("OptionalIndexedAccessType", {
+ visitor: ["objectType", "indexType"],
+ aliases: ["FlowType"],
+ fields: {
+ objectType: (0, _utils.validateType)("FlowType"),
+ indexType: (0, _utils.validateType)("FlowType"),
+ optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
+ }
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/index.js
new file mode 100644
index 0000000000..9b7c92cfe7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/index.js
@@ -0,0 +1,103 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "ALIAS_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.ALIAS_KEYS;
+ }
+});
+Object.defineProperty(exports, "BUILDER_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.BUILDER_KEYS;
+ }
+});
+Object.defineProperty(exports, "DEPRECATED_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.DEPRECATED_KEYS;
+ }
+});
+Object.defineProperty(exports, "FLIPPED_ALIAS_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.FLIPPED_ALIAS_KEYS;
+ }
+});
+Object.defineProperty(exports, "NODE_FIELDS", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_FIELDS;
+ }
+});
+Object.defineProperty(exports, "NODE_PARENT_VALIDATIONS", {
+ enumerable: true,
+ get: function () {
+ return _utils.NODE_PARENT_VALIDATIONS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS_ALIAS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS_ALIAS;
+ }
+});
+Object.defineProperty(exports, "PLACEHOLDERS_FLIPPED_ALIAS", {
+ enumerable: true,
+ get: function () {
+ return _placeholders.PLACEHOLDERS_FLIPPED_ALIAS;
+ }
+});
+exports.TYPES = void 0;
+Object.defineProperty(exports, "VISITOR_KEYS", {
+ enumerable: true,
+ get: function () {
+ return _utils.VISITOR_KEYS;
+ }
+});
+
+var _toFastProperties = require("to-fast-properties");
+
+require("./core");
+
+require("./flow");
+
+require("./jsx");
+
+require("./misc");
+
+require("./experimental");
+
+require("./typescript");
+
+var _utils = require("./utils");
+
+var _placeholders = require("./placeholders");
+
+_toFastProperties(_utils.VISITOR_KEYS);
+
+_toFastProperties(_utils.ALIAS_KEYS);
+
+_toFastProperties(_utils.FLIPPED_ALIAS_KEYS);
+
+_toFastProperties(_utils.NODE_FIELDS);
+
+_toFastProperties(_utils.BUILDER_KEYS);
+
+_toFastProperties(_utils.DEPRECATED_KEYS);
+
+_toFastProperties(_placeholders.PLACEHOLDERS_ALIAS);
+
+_toFastProperties(_placeholders.PLACEHOLDERS_FLIPPED_ALIAS);
+
+const TYPES = [].concat(Object.keys(_utils.VISITOR_KEYS), Object.keys(_utils.FLIPPED_ALIAS_KEYS), Object.keys(_utils.DEPRECATED_KEYS));
+exports.TYPES = TYPES; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js
new file mode 100644
index 0000000000..4d7fb75f72
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/jsx.js
@@ -0,0 +1,156 @@
+"use strict";
+
+var _utils = require("./utils");
+
+const defineType = (0, _utils.defineAliasedType)("JSX");
+defineType("JSXAttribute", {
+ visitor: ["name", "value"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXNamespacedName")
+ },
+ value: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
+ }
+ }
+});
+defineType("JSXClosingElement", {
+ visitor: ["name"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
+ }
+ }
+});
+defineType("JSXElement", {
+ builder: ["openingElement", "closingElement", "children", "selfClosing"],
+ visitor: ["openingElement", "children", "closingElement"],
+ aliases: ["Immutable", "Expression"],
+ fields: {
+ openingElement: {
+ validate: (0, _utils.assertNodeType)("JSXOpeningElement")
+ },
+ closingElement: {
+ optional: true,
+ validate: (0, _utils.assertNodeType)("JSXClosingElement")
+ },
+ children: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")))
+ },
+ selfClosing: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ }
+ }
+});
+defineType("JSXEmptyExpression", {});
+defineType("JSXExpressionContainer", {
+ visitor: ["expression"],
+ aliases: ["Immutable"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression", "JSXEmptyExpression")
+ }
+ }
+});
+defineType("JSXSpreadChild", {
+ visitor: ["expression"],
+ aliases: ["Immutable"],
+ fields: {
+ expression: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("JSXIdentifier", {
+ builder: ["name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("JSXMemberExpression", {
+ visitor: ["object", "property"],
+ fields: {
+ object: {
+ validate: (0, _utils.assertNodeType)("JSXMemberExpression", "JSXIdentifier")
+ },
+ property: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ }
+ }
+});
+defineType("JSXNamespacedName", {
+ visitor: ["namespace", "name"],
+ fields: {
+ namespace: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ },
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier")
+ }
+ }
+});
+defineType("JSXOpeningElement", {
+ builder: ["name", "attributes", "selfClosing"],
+ visitor: ["name", "attributes"],
+ aliases: ["Immutable"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
+ },
+ selfClosing: {
+ default: false
+ },
+ attributes: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXAttribute", "JSXSpreadAttribute")))
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
+ optional: true
+ }
+ }
+});
+defineType("JSXSpreadAttribute", {
+ visitor: ["argument"],
+ fields: {
+ argument: {
+ validate: (0, _utils.assertNodeType)("Expression")
+ }
+ }
+});
+defineType("JSXText", {
+ aliases: ["Immutable"],
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+});
+defineType("JSXFragment", {
+ builder: ["openingFragment", "closingFragment", "children"],
+ visitor: ["openingFragment", "children", "closingFragment"],
+ aliases: ["Immutable", "Expression"],
+ fields: {
+ openingFragment: {
+ validate: (0, _utils.assertNodeType)("JSXOpeningFragment")
+ },
+ closingFragment: {
+ validate: (0, _utils.assertNodeType)("JSXClosingFragment")
+ },
+ children: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")))
+ }
+ }
+});
+defineType("JSXOpeningFragment", {
+ aliases: ["Immutable"]
+});
+defineType("JSXClosingFragment", {
+ aliases: ["Immutable"]
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/misc.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/misc.js
new file mode 100644
index 0000000000..07898bdaf9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/misc.js
@@ -0,0 +1,32 @@
+"use strict";
+
+var _utils = require("./utils");
+
+var _placeholders = require("./placeholders");
+
+const defineType = (0, _utils.defineAliasedType)("Miscellaneous");
+{
+ defineType("Noop", {
+ visitor: []
+ });
+}
+defineType("Placeholder", {
+ visitor: [],
+ builder: ["expectedNode", "name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertNodeType)("Identifier")
+ },
+ expectedNode: {
+ validate: (0, _utils.assertOneOf)(..._placeholders.PLACEHOLDERS)
+ }
+ }
+});
+defineType("V8IntrinsicIdentifier", {
+ builder: ["name"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ }
+ }
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/placeholders.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/placeholders.js
new file mode 100644
index 0000000000..7277239ae4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/placeholders.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.PLACEHOLDERS_FLIPPED_ALIAS = exports.PLACEHOLDERS_ALIAS = exports.PLACEHOLDERS = void 0;
+
+var _utils = require("./utils");
+
+const PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
+exports.PLACEHOLDERS = PLACEHOLDERS;
+const PLACEHOLDERS_ALIAS = {
+ Declaration: ["Statement"],
+ Pattern: ["PatternLike", "LVal"]
+};
+exports.PLACEHOLDERS_ALIAS = PLACEHOLDERS_ALIAS;
+
+for (const type of PLACEHOLDERS) {
+ const alias = _utils.ALIAS_KEYS[type];
+ if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type] = alias;
+}
+
+const PLACEHOLDERS_FLIPPED_ALIAS = {};
+exports.PLACEHOLDERS_FLIPPED_ALIAS = PLACEHOLDERS_FLIPPED_ALIAS;
+Object.keys(PLACEHOLDERS_ALIAS).forEach(type => {
+ PLACEHOLDERS_ALIAS[type].forEach(alias => {
+ if (!Object.hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {
+ PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];
+ }
+
+ PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);
+ });
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js
new file mode 100644
index 0000000000..cf6faf3085
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/typescript.js
@@ -0,0 +1,470 @@
+"use strict";
+
+var _utils = require("./utils");
+
+var _core = require("./core");
+
+var _is = require("../validators/is");
+
+const defineType = (0, _utils.defineAliasedType)("TypeScript");
+const bool = (0, _utils.assertValueType)("boolean");
+const tSFunctionTypeAnnotationCommon = {
+ returnType: {
+ validate: (0, _utils.assertNodeType)("TSTypeAnnotation", "Noop"),
+ optional: true
+ },
+ typeParameters: {
+ validate: (0, _utils.assertNodeType)("TSTypeParameterDeclaration", "Noop"),
+ optional: true
+ }
+};
+defineType("TSParameterProperty", {
+ aliases: ["LVal"],
+ visitor: ["parameter"],
+ fields: {
+ accessibility: {
+ validate: (0, _utils.assertOneOf)("public", "private", "protected"),
+ optional: true
+ },
+ readonly: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ parameter: {
+ validate: (0, _utils.assertNodeType)("Identifier", "AssignmentPattern")
+ },
+ override: {
+ validate: (0, _utils.assertValueType)("boolean"),
+ optional: true
+ },
+ decorators: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("Decorator"))),
+ optional: true
+ }
+ }
+});
+defineType("TSDeclareFunction", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "params", "returnType"],
+ fields: Object.assign({}, _core.functionDeclarationCommon, tSFunctionTypeAnnotationCommon)
+});
+defineType("TSDeclareMethod", {
+ visitor: ["decorators", "key", "typeParameters", "params", "returnType"],
+ fields: Object.assign({}, _core.classMethodOrDeclareMethodCommon, tSFunctionTypeAnnotationCommon)
+});
+defineType("TSQualifiedName", {
+ aliases: ["TSEntityName"],
+ visitor: ["left", "right"],
+ fields: {
+ left: (0, _utils.validateType)("TSEntityName"),
+ right: (0, _utils.validateType)("Identifier")
+ }
+});
+const signatureDeclarationCommon = {
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ parameters: (0, _utils.validateArrayOfType)(["Identifier", "RestElement"]),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation")
+};
+const callConstructSignatureDeclaration = {
+ aliases: ["TSTypeElement"],
+ visitor: ["typeParameters", "parameters", "typeAnnotation"],
+ fields: signatureDeclarationCommon
+};
+defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration);
+defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration);
+const namedTypeElementCommon = {
+ key: (0, _utils.validateType)("Expression"),
+ computed: (0, _utils.validate)(bool),
+ optional: (0, _utils.validateOptional)(bool)
+};
+defineType("TSPropertySignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["key", "typeAnnotation", "initializer"],
+ fields: Object.assign({}, namedTypeElementCommon, {
+ readonly: (0, _utils.validateOptional)(bool),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
+ initializer: (0, _utils.validateOptionalType)("Expression"),
+ kind: {
+ validate: (0, _utils.assertOneOf)("get", "set")
+ }
+ })
+});
+defineType("TSMethodSignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["key", "typeParameters", "parameters", "typeAnnotation"],
+ fields: Object.assign({}, signatureDeclarationCommon, namedTypeElementCommon, {
+ kind: {
+ validate: (0, _utils.assertOneOf)("method", "get", "set")
+ }
+ })
+});
+defineType("TSIndexSignature", {
+ aliases: ["TSTypeElement"],
+ visitor: ["parameters", "typeAnnotation"],
+ fields: {
+ readonly: (0, _utils.validateOptional)(bool),
+ static: (0, _utils.validateOptional)(bool),
+ parameters: (0, _utils.validateArrayOfType)("Identifier"),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation")
+ }
+});
+const tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
+
+for (const type of tsKeywordTypes) {
+ defineType(type, {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: [],
+ fields: {}
+ });
+}
+
+defineType("TSThisType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: [],
+ fields: {}
+});
+const fnOrCtrBase = {
+ aliases: ["TSType"],
+ visitor: ["typeParameters", "parameters", "typeAnnotation"]
+};
+defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, {
+ fields: signatureDeclarationCommon
+}));
+defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, {
+ fields: Object.assign({}, signatureDeclarationCommon, {
+ abstract: (0, _utils.validateOptional)(bool)
+ })
+}));
+defineType("TSTypeReference", {
+ aliases: ["TSType"],
+ visitor: ["typeName", "typeParameters"],
+ fields: {
+ typeName: (0, _utils.validateType)("TSEntityName"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSTypePredicate", {
+ aliases: ["TSType"],
+ visitor: ["parameterName", "typeAnnotation"],
+ builder: ["parameterName", "typeAnnotation", "asserts"],
+ fields: {
+ parameterName: (0, _utils.validateType)(["Identifier", "TSThisType"]),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSTypeAnnotation"),
+ asserts: (0, _utils.validateOptional)(bool)
+ }
+});
+defineType("TSTypeQuery", {
+ aliases: ["TSType"],
+ visitor: ["exprName"],
+ fields: {
+ exprName: (0, _utils.validateType)(["TSEntityName", "TSImportType"])
+ }
+});
+defineType("TSTypeLiteral", {
+ aliases: ["TSType"],
+ visitor: ["members"],
+ fields: {
+ members: (0, _utils.validateArrayOfType)("TSTypeElement")
+ }
+});
+defineType("TSArrayType", {
+ aliases: ["TSType"],
+ visitor: ["elementType"],
+ fields: {
+ elementType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTupleType", {
+ aliases: ["TSType"],
+ visitor: ["elementTypes"],
+ fields: {
+ elementTypes: (0, _utils.validateArrayOfType)(["TSType", "TSNamedTupleMember"])
+ }
+});
+defineType("TSOptionalType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSRestType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSNamedTupleMember", {
+ visitor: ["label", "elementType"],
+ builder: ["label", "elementType", "optional"],
+ fields: {
+ label: (0, _utils.validateType)("Identifier"),
+ optional: {
+ validate: bool,
+ default: false
+ },
+ elementType: (0, _utils.validateType)("TSType")
+ }
+});
+const unionOrIntersection = {
+ aliases: ["TSType"],
+ visitor: ["types"],
+ fields: {
+ types: (0, _utils.validateArrayOfType)("TSType")
+ }
+};
+defineType("TSUnionType", unionOrIntersection);
+defineType("TSIntersectionType", unionOrIntersection);
+defineType("TSConditionalType", {
+ aliases: ["TSType"],
+ visitor: ["checkType", "extendsType", "trueType", "falseType"],
+ fields: {
+ checkType: (0, _utils.validateType)("TSType"),
+ extendsType: (0, _utils.validateType)("TSType"),
+ trueType: (0, _utils.validateType)("TSType"),
+ falseType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSInferType", {
+ aliases: ["TSType"],
+ visitor: ["typeParameter"],
+ fields: {
+ typeParameter: (0, _utils.validateType)("TSTypeParameter")
+ }
+});
+defineType("TSParenthesizedType", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTypeOperator", {
+ aliases: ["TSType"],
+ visitor: ["typeAnnotation"],
+ fields: {
+ operator: (0, _utils.validate)((0, _utils.assertValueType)("string")),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSIndexedAccessType", {
+ aliases: ["TSType"],
+ visitor: ["objectType", "indexType"],
+ fields: {
+ objectType: (0, _utils.validateType)("TSType"),
+ indexType: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSMappedType", {
+ aliases: ["TSType"],
+ visitor: ["typeParameter", "typeAnnotation", "nameType"],
+ fields: {
+ readonly: (0, _utils.validateOptional)(bool),
+ typeParameter: (0, _utils.validateType)("TSTypeParameter"),
+ optional: (0, _utils.validateOptional)(bool),
+ typeAnnotation: (0, _utils.validateOptionalType)("TSType"),
+ nameType: (0, _utils.validateOptionalType)("TSType")
+ }
+});
+defineType("TSLiteralType", {
+ aliases: ["TSType", "TSBaseType"],
+ visitor: ["literal"],
+ fields: {
+ literal: {
+ validate: function () {
+ const unaryExpression = (0, _utils.assertNodeType)("NumericLiteral", "BigIntLiteral");
+ const unaryOperator = (0, _utils.assertOneOf)("-");
+ const literal = (0, _utils.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral");
+
+ function validator(parent, key, node) {
+ if ((0, _is.default)("UnaryExpression", node)) {
+ unaryOperator(node, "operator", node.operator);
+ unaryExpression(node, "argument", node.argument);
+ } else {
+ literal(parent, key, node);
+ }
+ }
+
+ validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "UnaryExpression"];
+ return validator;
+ }()
+ }
+ }
+});
+defineType("TSExpressionWithTypeArguments", {
+ aliases: ["TSType"],
+ visitor: ["expression", "typeParameters"],
+ fields: {
+ expression: (0, _utils.validateType)("TSEntityName"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSInterfaceDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "extends", "body"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("TSExpressionWithTypeArguments")),
+ body: (0, _utils.validateType)("TSInterfaceBody")
+ }
+});
+defineType("TSInterfaceBody", {
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("TSTypeElement")
+ }
+});
+defineType("TSTypeAliasDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "typeParameters", "typeAnnotation"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterDeclaration"),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSAsExpression", {
+ aliases: ["Expression"],
+ visitor: ["expression", "typeAnnotation"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression"),
+ typeAnnotation: (0, _utils.validateType)("TSType")
+ }
+});
+defineType("TSTypeAssertion", {
+ aliases: ["Expression"],
+ visitor: ["typeAnnotation", "expression"],
+ fields: {
+ typeAnnotation: (0, _utils.validateType)("TSType"),
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSEnumDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "members"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ const: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ members: (0, _utils.validateArrayOfType)("TSEnumMember"),
+ initializer: (0, _utils.validateOptionalType)("Expression")
+ }
+});
+defineType("TSEnumMember", {
+ visitor: ["id", "initializer"],
+ fields: {
+ id: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
+ initializer: (0, _utils.validateOptionalType)("Expression")
+ }
+});
+defineType("TSModuleDeclaration", {
+ aliases: ["Statement", "Declaration"],
+ visitor: ["id", "body"],
+ fields: {
+ declare: (0, _utils.validateOptional)(bool),
+ global: (0, _utils.validateOptional)(bool),
+ id: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
+ body: (0, _utils.validateType)(["TSModuleBlock", "TSModuleDeclaration"])
+ }
+});
+defineType("TSModuleBlock", {
+ aliases: ["Scopable", "Block", "BlockParent"],
+ visitor: ["body"],
+ fields: {
+ body: (0, _utils.validateArrayOfType)("Statement")
+ }
+});
+defineType("TSImportType", {
+ aliases: ["TSType"],
+ visitor: ["argument", "qualifier", "typeParameters"],
+ fields: {
+ argument: (0, _utils.validateType)("StringLiteral"),
+ qualifier: (0, _utils.validateOptionalType)("TSEntityName"),
+ typeParameters: (0, _utils.validateOptionalType)("TSTypeParameterInstantiation")
+ }
+});
+defineType("TSImportEqualsDeclaration", {
+ aliases: ["Statement"],
+ visitor: ["id", "moduleReference"],
+ fields: {
+ isExport: (0, _utils.validate)(bool),
+ id: (0, _utils.validateType)("Identifier"),
+ moduleReference: (0, _utils.validateType)(["TSEntityName", "TSExternalModuleReference"]),
+ importKind: {
+ validate: (0, _utils.assertOneOf)("type", "value"),
+ optional: true
+ }
+ }
+});
+defineType("TSExternalModuleReference", {
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("StringLiteral")
+ }
+});
+defineType("TSNonNullExpression", {
+ aliases: ["Expression"],
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSExportAssignment", {
+ aliases: ["Statement"],
+ visitor: ["expression"],
+ fields: {
+ expression: (0, _utils.validateType)("Expression")
+ }
+});
+defineType("TSNamespaceExportDeclaration", {
+ aliases: ["Statement"],
+ visitor: ["id"],
+ fields: {
+ id: (0, _utils.validateType)("Identifier")
+ }
+});
+defineType("TSTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ fields: {
+ typeAnnotation: {
+ validate: (0, _utils.assertNodeType)("TSType")
+ }
+ }
+});
+defineType("TSTypeParameterInstantiation", {
+ visitor: ["params"],
+ fields: {
+ params: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSType")))
+ }
+ }
+});
+defineType("TSTypeParameterDeclaration", {
+ visitor: ["params"],
+ fields: {
+ params: {
+ validate: (0, _utils.chain)((0, _utils.assertValueType)("array"), (0, _utils.assertEach)((0, _utils.assertNodeType)("TSTypeParameter")))
+ }
+ }
+});
+defineType("TSTypeParameter", {
+ builder: ["constraint", "default", "name"],
+ visitor: ["constraint", "default"],
+ fields: {
+ name: {
+ validate: (0, _utils.assertValueType)("string")
+ },
+ constraint: {
+ validate: (0, _utils.assertNodeType)("TSType"),
+ optional: true
+ },
+ default: {
+ validate: (0, _utils.assertNodeType)("TSType"),
+ optional: true
+ }
+ }
+}); \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js
new file mode 100644
index 0000000000..70263e5cd3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js
@@ -0,0 +1,343 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.VISITOR_KEYS = exports.NODE_PARENT_VALIDATIONS = exports.NODE_FIELDS = exports.FLIPPED_ALIAS_KEYS = exports.DEPRECATED_KEYS = exports.BUILDER_KEYS = exports.ALIAS_KEYS = void 0;
+exports.arrayOf = arrayOf;
+exports.arrayOfType = arrayOfType;
+exports.assertEach = assertEach;
+exports.assertNodeOrValueType = assertNodeOrValueType;
+exports.assertNodeType = assertNodeType;
+exports.assertOneOf = assertOneOf;
+exports.assertOptionalChainStart = assertOptionalChainStart;
+exports.assertShape = assertShape;
+exports.assertValueType = assertValueType;
+exports.chain = chain;
+exports.default = defineType;
+exports.defineAliasedType = defineAliasedType;
+exports.typeIs = typeIs;
+exports.validate = validate;
+exports.validateArrayOfType = validateArrayOfType;
+exports.validateOptional = validateOptional;
+exports.validateOptionalType = validateOptionalType;
+exports.validateType = validateType;
+
+var _is = require("../validators/is");
+
+var _validate = require("../validators/validate");
+
+const VISITOR_KEYS = {};
+exports.VISITOR_KEYS = VISITOR_KEYS;
+const ALIAS_KEYS = {};
+exports.ALIAS_KEYS = ALIAS_KEYS;
+const FLIPPED_ALIAS_KEYS = {};
+exports.FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS;
+const NODE_FIELDS = {};
+exports.NODE_FIELDS = NODE_FIELDS;
+const BUILDER_KEYS = {};
+exports.BUILDER_KEYS = BUILDER_KEYS;
+const DEPRECATED_KEYS = {};
+exports.DEPRECATED_KEYS = DEPRECATED_KEYS;
+const NODE_PARENT_VALIDATIONS = {};
+exports.NODE_PARENT_VALIDATIONS = NODE_PARENT_VALIDATIONS;
+
+function getType(val) {
+ if (Array.isArray(val)) {
+ return "array";
+ } else if (val === null) {
+ return "null";
+ } else {
+ return typeof val;
+ }
+}
+
+function validate(validate) {
+ return {
+ validate
+ };
+}
+
+function typeIs(typeName) {
+ return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType(...typeName);
+}
+
+function validateType(typeName) {
+ return validate(typeIs(typeName));
+}
+
+function validateOptional(validate) {
+ return {
+ validate,
+ optional: true
+ };
+}
+
+function validateOptionalType(typeName) {
+ return {
+ validate: typeIs(typeName),
+ optional: true
+ };
+}
+
+function arrayOf(elementType) {
+ return chain(assertValueType("array"), assertEach(elementType));
+}
+
+function arrayOfType(typeName) {
+ return arrayOf(typeIs(typeName));
+}
+
+function validateArrayOfType(typeName) {
+ return validate(arrayOfType(typeName));
+}
+
+function assertEach(callback) {
+ function validator(node, key, val) {
+ if (!Array.isArray(val)) return;
+
+ for (let i = 0; i < val.length; i++) {
+ const subkey = `${key}[${i}]`;
+ const v = val[i];
+ callback(node, subkey, v);
+ if (process.env.BABEL_TYPES_8_BREAKING) (0, _validate.validateChild)(node, subkey, v);
+ }
+ }
+
+ validator.each = callback;
+ return validator;
+}
+
+function assertOneOf(...values) {
+ function validate(node, key, val) {
+ if (values.indexOf(val) < 0) {
+ throw new TypeError(`Property ${key} expected value to be one of ${JSON.stringify(values)} but got ${JSON.stringify(val)}`);
+ }
+ }
+
+ validate.oneOf = values;
+ return validate;
+}
+
+function assertNodeType(...types) {
+ function validate(node, key, val) {
+ for (const type of types) {
+ if ((0, _is.default)(type, val)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ }
+
+ throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);
+ }
+
+ validate.oneOfNodeTypes = types;
+ return validate;
+}
+
+function assertNodeOrValueType(...types) {
+ function validate(node, key, val) {
+ for (const type of types) {
+ if (getType(val) === type || (0, _is.default)(type, val)) {
+ (0, _validate.validateChild)(node, key, val);
+ return;
+ }
+ }
+
+ throw new TypeError(`Property ${key} of ${node.type} expected node to be of a type ${JSON.stringify(types)} but instead got ${JSON.stringify(val == null ? void 0 : val.type)}`);
+ }
+
+ validate.oneOfNodeOrValueTypes = types;
+ return validate;
+}
+
+function assertValueType(type) {
+ function validate(node, key, val) {
+ const valid = getType(val) === type;
+
+ if (!valid) {
+ throw new TypeError(`Property ${key} expected type of ${type} but got ${getType(val)}`);
+ }
+ }
+
+ validate.type = type;
+ return validate;
+}
+
+function assertShape(shape) {
+ function validate(node, key, val) {
+ const errors = [];
+
+ for (const property of Object.keys(shape)) {
+ try {
+ (0, _validate.validateField)(node, property, val[property], shape[property]);
+ } catch (error) {
+ if (error instanceof TypeError) {
+ errors.push(error.message);
+ continue;
+ }
+
+ throw error;
+ }
+ }
+
+ if (errors.length) {
+ throw new TypeError(`Property ${key} of ${node.type} expected to have the following:\n${errors.join("\n")}`);
+ }
+ }
+
+ validate.shapeOf = shape;
+ return validate;
+}
+
+function assertOptionalChainStart() {
+ function validate(node) {
+ var _current;
+
+ let current = node;
+
+ while (node) {
+ const {
+ type
+ } = current;
+
+ if (type === "OptionalCallExpression") {
+ if (current.optional) return;
+ current = current.callee;
+ continue;
+ }
+
+ if (type === "OptionalMemberExpression") {
+ if (current.optional) return;
+ current = current.object;
+ continue;
+ }
+
+ break;
+ }
+
+ throw new TypeError(`Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(_current = current) == null ? void 0 : _current.type}`);
+ }
+
+ return validate;
+}
+
+function chain(...fns) {
+ function validate(...args) {
+ for (const fn of fns) {
+ fn(...args);
+ }
+ }
+
+ validate.chainOf = fns;
+
+ if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) {
+ throw new Error(`An assertValueType("array") validator can only be followed by an assertEach(...) validator.`);
+ }
+
+ return validate;
+}
+
+const validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"];
+const validFieldKeys = ["default", "optional", "validate"];
+
+function defineAliasedType(...aliases) {
+ return (type, opts = {}) => {
+ let defined = opts.aliases;
+
+ if (!defined) {
+ var _store$opts$inherits$, _defined;
+
+ if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();
+ (_defined = defined) != null ? _defined : defined = [];
+ opts.aliases = defined;
+ }
+
+ const additional = aliases.filter(a => !defined.includes(a));
+ defined.unshift(...additional);
+ return defineType(type, opts);
+ };
+}
+
+function defineType(type, opts = {}) {
+ const inherits = opts.inherits && store[opts.inherits] || {};
+ let fields = opts.fields;
+
+ if (!fields) {
+ fields = {};
+
+ if (inherits.fields) {
+ const keys = Object.getOwnPropertyNames(inherits.fields);
+
+ for (const key of keys) {
+ const field = inherits.fields[key];
+ const def = field.default;
+
+ if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") {
+ throw new Error("field defaults can only be primitives or empty arrays currently");
+ }
+
+ fields[key] = {
+ default: Array.isArray(def) ? [] : def,
+ optional: field.optional,
+ validate: field.validate
+ };
+ }
+ }
+ }
+
+ const visitor = opts.visitor || inherits.visitor || [];
+ const aliases = opts.aliases || inherits.aliases || [];
+ const builder = opts.builder || inherits.builder || opts.visitor || [];
+
+ for (const k of Object.keys(opts)) {
+ if (validTypeOpts.indexOf(k) === -1) {
+ throw new Error(`Unknown type option "${k}" on ${type}`);
+ }
+ }
+
+ if (opts.deprecatedAlias) {
+ DEPRECATED_KEYS[opts.deprecatedAlias] = type;
+ }
+
+ for (const key of visitor.concat(builder)) {
+ fields[key] = fields[key] || {};
+ }
+
+ for (const key of Object.keys(fields)) {
+ const field = fields[key];
+
+ if (field.default !== undefined && builder.indexOf(key) === -1) {
+ field.optional = true;
+ }
+
+ if (field.default === undefined) {
+ field.default = null;
+ } else if (!field.validate && field.default != null) {
+ field.validate = assertValueType(getType(field.default));
+ }
+
+ for (const k of Object.keys(field)) {
+ if (validFieldKeys.indexOf(k) === -1) {
+ throw new Error(`Unknown field key "${k}" on ${type}.${key}`);
+ }
+ }
+ }
+
+ VISITOR_KEYS[type] = opts.visitor = visitor;
+ BUILDER_KEYS[type] = opts.builder = builder;
+ NODE_FIELDS[type] = opts.fields = fields;
+ ALIAS_KEYS[type] = opts.aliases = aliases;
+ aliases.forEach(alias => {
+ FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];
+ FLIPPED_ALIAS_KEYS[alias].push(type);
+ });
+
+ if (opts.validate) {
+ NODE_PARENT_VALIDATIONS[type] = opts.validate;
+ }
+
+ store[type] = opts;
+}
+
+const store = {}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js
new file mode 100644
index 0000000000..677a331152
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js
@@ -0,0 +1,647 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+var _exportNames = {
+ react: true,
+ assertNode: true,
+ createTypeAnnotationBasedOnTypeof: true,
+ createUnionTypeAnnotation: true,
+ createFlowUnionType: true,
+ createTSUnionType: true,
+ cloneNode: true,
+ clone: true,
+ cloneDeep: true,
+ cloneDeepWithoutLoc: true,
+ cloneWithoutLoc: true,
+ addComment: true,
+ addComments: true,
+ inheritInnerComments: true,
+ inheritLeadingComments: true,
+ inheritsComments: true,
+ inheritTrailingComments: true,
+ removeComments: true,
+ ensureBlock: true,
+ toBindingIdentifierName: true,
+ toBlock: true,
+ toComputedKey: true,
+ toExpression: true,
+ toIdentifier: true,
+ toKeyAlias: true,
+ toSequenceExpression: true,
+ toStatement: true,
+ valueToNode: true,
+ appendToMemberExpression: true,
+ inherits: true,
+ prependToMemberExpression: true,
+ removeProperties: true,
+ removePropertiesDeep: true,
+ removeTypeDuplicates: true,
+ getBindingIdentifiers: true,
+ getOuterBindingIdentifiers: true,
+ traverse: true,
+ traverseFast: true,
+ shallowEqual: true,
+ is: true,
+ isBinding: true,
+ isBlockScoped: true,
+ isImmutable: true,
+ isLet: true,
+ isNode: true,
+ isNodesEquivalent: true,
+ isPlaceholderType: true,
+ isReferenced: true,
+ isScope: true,
+ isSpecifierDefault: true,
+ isType: true,
+ isValidES3Identifier: true,
+ isValidIdentifier: true,
+ isVar: true,
+ matchesPattern: true,
+ validate: true,
+ buildMatchMemberExpression: true
+};
+Object.defineProperty(exports, "addComment", {
+ enumerable: true,
+ get: function () {
+ return _addComment.default;
+ }
+});
+Object.defineProperty(exports, "addComments", {
+ enumerable: true,
+ get: function () {
+ return _addComments.default;
+ }
+});
+Object.defineProperty(exports, "appendToMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _appendToMemberExpression.default;
+ }
+});
+Object.defineProperty(exports, "assertNode", {
+ enumerable: true,
+ get: function () {
+ return _assertNode.default;
+ }
+});
+Object.defineProperty(exports, "buildMatchMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _buildMatchMemberExpression.default;
+ }
+});
+Object.defineProperty(exports, "clone", {
+ enumerable: true,
+ get: function () {
+ return _clone.default;
+ }
+});
+Object.defineProperty(exports, "cloneDeep", {
+ enumerable: true,
+ get: function () {
+ return _cloneDeep.default;
+ }
+});
+Object.defineProperty(exports, "cloneDeepWithoutLoc", {
+ enumerable: true,
+ get: function () {
+ return _cloneDeepWithoutLoc.default;
+ }
+});
+Object.defineProperty(exports, "cloneNode", {
+ enumerable: true,
+ get: function () {
+ return _cloneNode.default;
+ }
+});
+Object.defineProperty(exports, "cloneWithoutLoc", {
+ enumerable: true,
+ get: function () {
+ return _cloneWithoutLoc.default;
+ }
+});
+Object.defineProperty(exports, "createFlowUnionType", {
+ enumerable: true,
+ get: function () {
+ return _createFlowUnionType.default;
+ }
+});
+Object.defineProperty(exports, "createTSUnionType", {
+ enumerable: true,
+ get: function () {
+ return _createTSUnionType.default;
+ }
+});
+Object.defineProperty(exports, "createTypeAnnotationBasedOnTypeof", {
+ enumerable: true,
+ get: function () {
+ return _createTypeAnnotationBasedOnTypeof.default;
+ }
+});
+Object.defineProperty(exports, "createUnionTypeAnnotation", {
+ enumerable: true,
+ get: function () {
+ return _createFlowUnionType.default;
+ }
+});
+Object.defineProperty(exports, "ensureBlock", {
+ enumerable: true,
+ get: function () {
+ return _ensureBlock.default;
+ }
+});
+Object.defineProperty(exports, "getBindingIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getBindingIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "getOuterBindingIdentifiers", {
+ enumerable: true,
+ get: function () {
+ return _getOuterBindingIdentifiers.default;
+ }
+});
+Object.defineProperty(exports, "inheritInnerComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritInnerComments.default;
+ }
+});
+Object.defineProperty(exports, "inheritLeadingComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritLeadingComments.default;
+ }
+});
+Object.defineProperty(exports, "inheritTrailingComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritTrailingComments.default;
+ }
+});
+Object.defineProperty(exports, "inherits", {
+ enumerable: true,
+ get: function () {
+ return _inherits.default;
+ }
+});
+Object.defineProperty(exports, "inheritsComments", {
+ enumerable: true,
+ get: function () {
+ return _inheritsComments.default;
+ }
+});
+Object.defineProperty(exports, "is", {
+ enumerable: true,
+ get: function () {
+ return _is.default;
+ }
+});
+Object.defineProperty(exports, "isBinding", {
+ enumerable: true,
+ get: function () {
+ return _isBinding.default;
+ }
+});
+Object.defineProperty(exports, "isBlockScoped", {
+ enumerable: true,
+ get: function () {
+ return _isBlockScoped.default;
+ }
+});
+Object.defineProperty(exports, "isImmutable", {
+ enumerable: true,
+ get: function () {
+ return _isImmutable.default;
+ }
+});
+Object.defineProperty(exports, "isLet", {
+ enumerable: true,
+ get: function () {
+ return _isLet.default;
+ }
+});
+Object.defineProperty(exports, "isNode", {
+ enumerable: true,
+ get: function () {
+ return _isNode.default;
+ }
+});
+Object.defineProperty(exports, "isNodesEquivalent", {
+ enumerable: true,
+ get: function () {
+ return _isNodesEquivalent.default;
+ }
+});
+Object.defineProperty(exports, "isPlaceholderType", {
+ enumerable: true,
+ get: function () {
+ return _isPlaceholderType.default;
+ }
+});
+Object.defineProperty(exports, "isReferenced", {
+ enumerable: true,
+ get: function () {
+ return _isReferenced.default;
+ }
+});
+Object.defineProperty(exports, "isScope", {
+ enumerable: true,
+ get: function () {
+ return _isScope.default;
+ }
+});
+Object.defineProperty(exports, "isSpecifierDefault", {
+ enumerable: true,
+ get: function () {
+ return _isSpecifierDefault.default;
+ }
+});
+Object.defineProperty(exports, "isType", {
+ enumerable: true,
+ get: function () {
+ return _isType.default;
+ }
+});
+Object.defineProperty(exports, "isValidES3Identifier", {
+ enumerable: true,
+ get: function () {
+ return _isValidES3Identifier.default;
+ }
+});
+Object.defineProperty(exports, "isValidIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _isValidIdentifier.default;
+ }
+});
+Object.defineProperty(exports, "isVar", {
+ enumerable: true,
+ get: function () {
+ return _isVar.default;
+ }
+});
+Object.defineProperty(exports, "matchesPattern", {
+ enumerable: true,
+ get: function () {
+ return _matchesPattern.default;
+ }
+});
+Object.defineProperty(exports, "prependToMemberExpression", {
+ enumerable: true,
+ get: function () {
+ return _prependToMemberExpression.default;
+ }
+});
+exports.react = void 0;
+Object.defineProperty(exports, "removeComments", {
+ enumerable: true,
+ get: function () {
+ return _removeComments.default;
+ }
+});
+Object.defineProperty(exports, "removeProperties", {
+ enumerable: true,
+ get: function () {
+ return _removeProperties.default;
+ }
+});
+Object.defineProperty(exports, "removePropertiesDeep", {
+ enumerable: true,
+ get: function () {
+ return _removePropertiesDeep.default;
+ }
+});
+Object.defineProperty(exports, "removeTypeDuplicates", {
+ enumerable: true,
+ get: function () {
+ return _removeTypeDuplicates.default;
+ }
+});
+Object.defineProperty(exports, "shallowEqual", {
+ enumerable: true,
+ get: function () {
+ return _shallowEqual.default;
+ }
+});
+Object.defineProperty(exports, "toBindingIdentifierName", {
+ enumerable: true,
+ get: function () {
+ return _toBindingIdentifierName.default;
+ }
+});
+Object.defineProperty(exports, "toBlock", {
+ enumerable: true,
+ get: function () {
+ return _toBlock.default;
+ }
+});
+Object.defineProperty(exports, "toComputedKey", {
+ enumerable: true,
+ get: function () {
+ return _toComputedKey.default;
+ }
+});
+Object.defineProperty(exports, "toExpression", {
+ enumerable: true,
+ get: function () {
+ return _toExpression.default;
+ }
+});
+Object.defineProperty(exports, "toIdentifier", {
+ enumerable: true,
+ get: function () {
+ return _toIdentifier.default;
+ }
+});
+Object.defineProperty(exports, "toKeyAlias", {
+ enumerable: true,
+ get: function () {
+ return _toKeyAlias.default;
+ }
+});
+Object.defineProperty(exports, "toSequenceExpression", {
+ enumerable: true,
+ get: function () {
+ return _toSequenceExpression.default;
+ }
+});
+Object.defineProperty(exports, "toStatement", {
+ enumerable: true,
+ get: function () {
+ return _toStatement.default;
+ }
+});
+Object.defineProperty(exports, "traverse", {
+ enumerable: true,
+ get: function () {
+ return _traverse.default;
+ }
+});
+Object.defineProperty(exports, "traverseFast", {
+ enumerable: true,
+ get: function () {
+ return _traverseFast.default;
+ }
+});
+Object.defineProperty(exports, "validate", {
+ enumerable: true,
+ get: function () {
+ return _validate.default;
+ }
+});
+Object.defineProperty(exports, "valueToNode", {
+ enumerable: true,
+ get: function () {
+ return _valueToNode.default;
+ }
+});
+
+var _isReactComponent = require("./validators/react/isReactComponent");
+
+var _isCompatTag = require("./validators/react/isCompatTag");
+
+var _buildChildren = require("./builders/react/buildChildren");
+
+var _assertNode = require("./asserts/assertNode");
+
+var _generated = require("./asserts/generated");
+
+Object.keys(_generated).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _generated[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _generated[key];
+ }
+ });
+});
+
+var _createTypeAnnotationBasedOnTypeof = require("./builders/flow/createTypeAnnotationBasedOnTypeof");
+
+var _createFlowUnionType = require("./builders/flow/createFlowUnionType");
+
+var _createTSUnionType = require("./builders/typescript/createTSUnionType");
+
+var _generated2 = require("./builders/generated");
+
+Object.keys(_generated2).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _generated2[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _generated2[key];
+ }
+ });
+});
+
+var _uppercase = require("./builders/generated/uppercase");
+
+Object.keys(_uppercase).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _uppercase[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _uppercase[key];
+ }
+ });
+});
+
+var _cloneNode = require("./clone/cloneNode");
+
+var _clone = require("./clone/clone");
+
+var _cloneDeep = require("./clone/cloneDeep");
+
+var _cloneDeepWithoutLoc = require("./clone/cloneDeepWithoutLoc");
+
+var _cloneWithoutLoc = require("./clone/cloneWithoutLoc");
+
+var _addComment = require("./comments/addComment");
+
+var _addComments = require("./comments/addComments");
+
+var _inheritInnerComments = require("./comments/inheritInnerComments");
+
+var _inheritLeadingComments = require("./comments/inheritLeadingComments");
+
+var _inheritsComments = require("./comments/inheritsComments");
+
+var _inheritTrailingComments = require("./comments/inheritTrailingComments");
+
+var _removeComments = require("./comments/removeComments");
+
+var _generated3 = require("./constants/generated");
+
+Object.keys(_generated3).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _generated3[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _generated3[key];
+ }
+ });
+});
+
+var _constants = require("./constants");
+
+Object.keys(_constants).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _constants[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _constants[key];
+ }
+ });
+});
+
+var _ensureBlock = require("./converters/ensureBlock");
+
+var _toBindingIdentifierName = require("./converters/toBindingIdentifierName");
+
+var _toBlock = require("./converters/toBlock");
+
+var _toComputedKey = require("./converters/toComputedKey");
+
+var _toExpression = require("./converters/toExpression");
+
+var _toIdentifier = require("./converters/toIdentifier");
+
+var _toKeyAlias = require("./converters/toKeyAlias");
+
+var _toSequenceExpression = require("./converters/toSequenceExpression");
+
+var _toStatement = require("./converters/toStatement");
+
+var _valueToNode = require("./converters/valueToNode");
+
+var _definitions = require("./definitions");
+
+Object.keys(_definitions).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _definitions[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _definitions[key];
+ }
+ });
+});
+
+var _appendToMemberExpression = require("./modifications/appendToMemberExpression");
+
+var _inherits = require("./modifications/inherits");
+
+var _prependToMemberExpression = require("./modifications/prependToMemberExpression");
+
+var _removeProperties = require("./modifications/removeProperties");
+
+var _removePropertiesDeep = require("./modifications/removePropertiesDeep");
+
+var _removeTypeDuplicates = require("./modifications/flow/removeTypeDuplicates");
+
+var _getBindingIdentifiers = require("./retrievers/getBindingIdentifiers");
+
+var _getOuterBindingIdentifiers = require("./retrievers/getOuterBindingIdentifiers");
+
+var _traverse = require("./traverse/traverse");
+
+Object.keys(_traverse).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _traverse[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _traverse[key];
+ }
+ });
+});
+
+var _traverseFast = require("./traverse/traverseFast");
+
+var _shallowEqual = require("./utils/shallowEqual");
+
+var _is = require("./validators/is");
+
+var _isBinding = require("./validators/isBinding");
+
+var _isBlockScoped = require("./validators/isBlockScoped");
+
+var _isImmutable = require("./validators/isImmutable");
+
+var _isLet = require("./validators/isLet");
+
+var _isNode = require("./validators/isNode");
+
+var _isNodesEquivalent = require("./validators/isNodesEquivalent");
+
+var _isPlaceholderType = require("./validators/isPlaceholderType");
+
+var _isReferenced = require("./validators/isReferenced");
+
+var _isScope = require("./validators/isScope");
+
+var _isSpecifierDefault = require("./validators/isSpecifierDefault");
+
+var _isType = require("./validators/isType");
+
+var _isValidES3Identifier = require("./validators/isValidES3Identifier");
+
+var _isValidIdentifier = require("./validators/isValidIdentifier");
+
+var _isVar = require("./validators/isVar");
+
+var _matchesPattern = require("./validators/matchesPattern");
+
+var _validate = require("./validators/validate");
+
+var _buildMatchMemberExpression = require("./validators/buildMatchMemberExpression");
+
+var _generated4 = require("./validators/generated");
+
+Object.keys(_generated4).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _generated4[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _generated4[key];
+ }
+ });
+});
+
+var _generated5 = require("./ast-types/generated");
+
+Object.keys(_generated5).forEach(function (key) {
+ if (key === "default" || key === "__esModule") return;
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
+ if (key in exports && exports[key] === _generated5[key]) return;
+ Object.defineProperty(exports, key, {
+ enumerable: true,
+ get: function () {
+ return _generated5[key];
+ }
+ });
+});
+const react = {
+ isReactComponent: _isReactComponent.default,
+ isCompatTag: _isCompatTag.default,
+ buildChildren: _buildChildren.default
+};
+exports.react = react; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow
new file mode 100644
index 0000000000..77df6e40f2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js.flow
@@ -0,0 +1,2549 @@
+// NOTE: This file is autogenerated. Do not modify.
+// See packages/babel-types/scripts/generators/flow.js for script used.
+
+declare class BabelNodeComment {
+ value: string;
+ start: number;
+ end: number;
+ loc: BabelNodeSourceLocation;
+}
+
+declare class BabelNodeCommentBlock extends BabelNodeComment {
+ type: "CommentBlock";
+}
+
+declare class BabelNodeCommentLine extends BabelNodeComment {
+ type: "CommentLine";
+}
+
+declare class BabelNodeSourceLocation {
+ start: {
+ line: number;
+ column: number;
+ };
+
+ end: {
+ line: number;
+ column: number;
+ };
+}
+
+declare class BabelNode {
+ leadingComments?: Array<BabelNodeComment>;
+ innerComments?: Array<BabelNodeComment>;
+ trailingComments?: Array<BabelNodeComment>;
+ start: ?number;
+ end: ?number;
+ loc: ?BabelNodeSourceLocation;
+ extra?: { [string]: mixed };
+}
+
+declare class BabelNodeArrayExpression extends BabelNode {
+ type: "ArrayExpression";
+ elements?: Array<null | BabelNodeExpression | BabelNodeSpreadElement>;
+}
+
+declare class BabelNodeAssignmentExpression extends BabelNode {
+ type: "AssignmentExpression";
+ operator: string;
+ left: BabelNodeLVal;
+ right: BabelNodeExpression;
+}
+
+declare class BabelNodeBinaryExpression extends BabelNode {
+ type: "BinaryExpression";
+ operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=";
+ left: BabelNodeExpression | BabelNodePrivateName;
+ right: BabelNodeExpression;
+}
+
+declare class BabelNodeInterpreterDirective extends BabelNode {
+ type: "InterpreterDirective";
+ value: string;
+}
+
+declare class BabelNodeDirective extends BabelNode {
+ type: "Directive";
+ value: BabelNodeDirectiveLiteral;
+}
+
+declare class BabelNodeDirectiveLiteral extends BabelNode {
+ type: "DirectiveLiteral";
+ value: string;
+}
+
+declare class BabelNodeBlockStatement extends BabelNode {
+ type: "BlockStatement";
+ body: Array<BabelNodeStatement>;
+ directives?: Array<BabelNodeDirective>;
+}
+
+declare class BabelNodeBreakStatement extends BabelNode {
+ type: "BreakStatement";
+ label?: BabelNodeIdentifier;
+}
+
+declare class BabelNodeCallExpression extends BabelNode {
+ type: "CallExpression";
+ callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier;
+ arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>;
+ optional?: true | false;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeCatchClause extends BabelNode {
+ type: "CatchClause";
+ param?: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern;
+ body: BabelNodeBlockStatement;
+}
+
+declare class BabelNodeConditionalExpression extends BabelNode {
+ type: "ConditionalExpression";
+ test: BabelNodeExpression;
+ consequent: BabelNodeExpression;
+ alternate: BabelNodeExpression;
+}
+
+declare class BabelNodeContinueStatement extends BabelNode {
+ type: "ContinueStatement";
+ label?: BabelNodeIdentifier;
+}
+
+declare class BabelNodeDebuggerStatement extends BabelNode {
+ type: "DebuggerStatement";
+}
+
+declare class BabelNodeDoWhileStatement extends BabelNode {
+ type: "DoWhileStatement";
+ test: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeEmptyStatement extends BabelNode {
+ type: "EmptyStatement";
+}
+
+declare class BabelNodeExpressionStatement extends BabelNode {
+ type: "ExpressionStatement";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeFile extends BabelNode {
+ type: "File";
+ program: BabelNodeProgram;
+ comments?: Array<BabelNodeCommentBlock | BabelNodeCommentLine>;
+ tokens?: Array<any>;
+}
+
+declare class BabelNodeForInStatement extends BabelNode {
+ type: "ForInStatement";
+ left: BabelNodeVariableDeclaration | BabelNodeLVal;
+ right: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeForStatement extends BabelNode {
+ type: "ForStatement";
+ init?: BabelNodeVariableDeclaration | BabelNodeExpression;
+ test?: BabelNodeExpression;
+ update?: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeFunctionDeclaration extends BabelNode {
+ type: "FunctionDeclaration";
+ id?: BabelNodeIdentifier;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>;
+ body: BabelNodeBlockStatement;
+ generator?: boolean;
+ async?: boolean;
+ declare?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeFunctionExpression extends BabelNode {
+ type: "FunctionExpression";
+ id?: BabelNodeIdentifier;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>;
+ body: BabelNodeBlockStatement;
+ generator?: boolean;
+ async?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeIdentifier extends BabelNode {
+ type: "Identifier";
+ name: string;
+ decorators?: Array<BabelNodeDecorator>;
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeIfStatement extends BabelNode {
+ type: "IfStatement";
+ test: BabelNodeExpression;
+ consequent: BabelNodeStatement;
+ alternate?: BabelNodeStatement;
+}
+
+declare class BabelNodeLabeledStatement extends BabelNode {
+ type: "LabeledStatement";
+ label: BabelNodeIdentifier;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeStringLiteral extends BabelNode {
+ type: "StringLiteral";
+ value: string;
+}
+
+declare class BabelNodeNumericLiteral extends BabelNode {
+ type: "NumericLiteral";
+ value: number;
+}
+
+declare class BabelNodeNullLiteral extends BabelNode {
+ type: "NullLiteral";
+}
+
+declare class BabelNodeBooleanLiteral extends BabelNode {
+ type: "BooleanLiteral";
+ value: boolean;
+}
+
+declare class BabelNodeRegExpLiteral extends BabelNode {
+ type: "RegExpLiteral";
+ pattern: string;
+ flags?: string;
+}
+
+declare class BabelNodeLogicalExpression extends BabelNode {
+ type: "LogicalExpression";
+ operator: "||" | "&&" | "??";
+ left: BabelNodeExpression;
+ right: BabelNodeExpression;
+}
+
+declare class BabelNodeMemberExpression extends BabelNode {
+ type: "MemberExpression";
+ object: BabelNodeExpression;
+ property: BabelNodeExpression | BabelNodeIdentifier | BabelNodePrivateName;
+ computed?: boolean;
+ optional?: true | false;
+}
+
+declare class BabelNodeNewExpression extends BabelNode {
+ type: "NewExpression";
+ callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier;
+ arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>;
+ optional?: true | false;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeProgram extends BabelNode {
+ type: "Program";
+ body: Array<BabelNodeStatement>;
+ directives?: Array<BabelNodeDirective>;
+ sourceType?: "script" | "module";
+ interpreter?: BabelNodeInterpreterDirective;
+ sourceFile: string;
+}
+
+declare class BabelNodeObjectExpression extends BabelNode {
+ type: "ObjectExpression";
+ properties: Array<BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeSpreadElement>;
+}
+
+declare class BabelNodeObjectMethod extends BabelNode {
+ type: "ObjectMethod";
+ kind?: "method" | "get" | "set";
+ key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>;
+ body: BabelNodeBlockStatement;
+ computed?: boolean;
+ generator?: boolean;
+ async?: boolean;
+ decorators?: Array<BabelNodeDecorator>;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeObjectProperty extends BabelNode {
+ type: "ObjectProperty";
+ key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral;
+ value: BabelNodeExpression | BabelNodePatternLike;
+ computed?: boolean;
+ shorthand?: boolean;
+ decorators?: Array<BabelNodeDecorator>;
+}
+
+declare class BabelNodeRestElement extends BabelNode {
+ type: "RestElement";
+ argument: BabelNodeLVal;
+ decorators?: Array<BabelNodeDecorator>;
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeReturnStatement extends BabelNode {
+ type: "ReturnStatement";
+ argument?: BabelNodeExpression;
+}
+
+declare class BabelNodeSequenceExpression extends BabelNode {
+ type: "SequenceExpression";
+ expressions: Array<BabelNodeExpression>;
+}
+
+declare class BabelNodeParenthesizedExpression extends BabelNode {
+ type: "ParenthesizedExpression";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeSwitchCase extends BabelNode {
+ type: "SwitchCase";
+ test?: BabelNodeExpression;
+ consequent: Array<BabelNodeStatement>;
+}
+
+declare class BabelNodeSwitchStatement extends BabelNode {
+ type: "SwitchStatement";
+ discriminant: BabelNodeExpression;
+ cases: Array<BabelNodeSwitchCase>;
+}
+
+declare class BabelNodeThisExpression extends BabelNode {
+ type: "ThisExpression";
+}
+
+declare class BabelNodeThrowStatement extends BabelNode {
+ type: "ThrowStatement";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeTryStatement extends BabelNode {
+ type: "TryStatement";
+ block: BabelNodeBlockStatement;
+ handler?: BabelNodeCatchClause;
+ finalizer?: BabelNodeBlockStatement;
+}
+
+declare class BabelNodeUnaryExpression extends BabelNode {
+ type: "UnaryExpression";
+ operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof";
+ argument: BabelNodeExpression;
+ prefix?: boolean;
+}
+
+declare class BabelNodeUpdateExpression extends BabelNode {
+ type: "UpdateExpression";
+ operator: "++" | "--";
+ argument: BabelNodeExpression;
+ prefix?: boolean;
+}
+
+declare class BabelNodeVariableDeclaration extends BabelNode {
+ type: "VariableDeclaration";
+ kind: "var" | "let" | "const";
+ declarations: Array<BabelNodeVariableDeclarator>;
+ declare?: boolean;
+}
+
+declare class BabelNodeVariableDeclarator extends BabelNode {
+ type: "VariableDeclarator";
+ id: BabelNodeLVal;
+ init?: BabelNodeExpression;
+ definite?: boolean;
+}
+
+declare class BabelNodeWhileStatement extends BabelNode {
+ type: "WhileStatement";
+ test: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeWithStatement extends BabelNode {
+ type: "WithStatement";
+ object: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeAssignmentPattern extends BabelNode {
+ type: "AssignmentPattern";
+ left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression;
+ right: BabelNodeExpression;
+ decorators?: Array<BabelNodeDecorator>;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeArrayPattern extends BabelNode {
+ type: "ArrayPattern";
+ elements: Array<null | BabelNodePatternLike>;
+ decorators?: Array<BabelNodeDecorator>;
+ optional?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeArrowFunctionExpression extends BabelNode {
+ type: "ArrowFunctionExpression";
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>;
+ body: BabelNodeBlockStatement | BabelNodeExpression;
+ async?: boolean;
+ expression: boolean;
+ generator?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeClassBody extends BabelNode {
+ type: "ClassBody";
+ body: Array<BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeClassProperty | BabelNodeClassPrivateProperty | BabelNodeTSDeclareMethod | BabelNodeTSIndexSignature>;
+}
+
+declare class BabelNodeClassExpression extends BabelNode {
+ type: "ClassExpression";
+ id?: BabelNodeIdentifier;
+ superClass?: BabelNodeExpression;
+ body: BabelNodeClassBody;
+ decorators?: Array<BabelNodeDecorator>;
+ mixins?: BabelNodeInterfaceExtends;
+ superTypeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeClassDeclaration extends BabelNode {
+ type: "ClassDeclaration";
+ id: BabelNodeIdentifier;
+ superClass?: BabelNodeExpression;
+ body: BabelNodeClassBody;
+ decorators?: Array<BabelNodeDecorator>;
+ abstract?: boolean;
+ declare?: boolean;
+ mixins?: BabelNodeInterfaceExtends;
+ superTypeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeExportAllDeclaration extends BabelNode {
+ type: "ExportAllDeclaration";
+ source: BabelNodeStringLiteral;
+ assertions?: Array<BabelNodeImportAttribute>;
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeExportDefaultDeclaration extends BabelNode {
+ type: "ExportDefaultDeclaration";
+ declaration: BabelNodeFunctionDeclaration | BabelNodeTSDeclareFunction | BabelNodeClassDeclaration | BabelNodeExpression;
+ exportKind?: "value";
+}
+
+declare class BabelNodeExportNamedDeclaration extends BabelNode {
+ type: "ExportNamedDeclaration";
+ declaration?: BabelNodeDeclaration;
+ specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier>;
+ source?: BabelNodeStringLiteral;
+ assertions?: Array<BabelNodeImportAttribute>;
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeExportSpecifier extends BabelNode {
+ type: "ExportSpecifier";
+ local: BabelNodeIdentifier;
+ exported: BabelNodeIdentifier | BabelNodeStringLiteral;
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeForOfStatement extends BabelNode {
+ type: "ForOfStatement";
+ left: BabelNodeVariableDeclaration | BabelNodeLVal;
+ right: BabelNodeExpression;
+ body: BabelNodeStatement;
+}
+
+declare class BabelNodeImportDeclaration extends BabelNode {
+ type: "ImportDeclaration";
+ specifiers: Array<BabelNodeImportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier>;
+ source: BabelNodeStringLiteral;
+ assertions?: Array<BabelNodeImportAttribute>;
+ importKind?: "type" | "typeof" | "value";
+}
+
+declare class BabelNodeImportDefaultSpecifier extends BabelNode {
+ type: "ImportDefaultSpecifier";
+ local: BabelNodeIdentifier;
+}
+
+declare class BabelNodeImportNamespaceSpecifier extends BabelNode {
+ type: "ImportNamespaceSpecifier";
+ local: BabelNodeIdentifier;
+}
+
+declare class BabelNodeImportSpecifier extends BabelNode {
+ type: "ImportSpecifier";
+ local: BabelNodeIdentifier;
+ imported: BabelNodeIdentifier | BabelNodeStringLiteral;
+ importKind?: "type" | "typeof" | "value";
+}
+
+declare class BabelNodeMetaProperty extends BabelNode {
+ type: "MetaProperty";
+ meta: BabelNodeIdentifier;
+ property: BabelNodeIdentifier;
+}
+
+declare class BabelNodeClassMethod extends BabelNode {
+ type: "ClassMethod";
+ kind?: "get" | "set" | "method" | "constructor";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>;
+ body: BabelNodeBlockStatement;
+ computed?: boolean;
+ generator?: boolean;
+ async?: boolean;
+ abstract?: boolean;
+ access?: "public" | "private" | "protected";
+ accessibility?: "public" | "private" | "protected";
+ decorators?: Array<BabelNodeDecorator>;
+ optional?: boolean;
+ override?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodeObjectPattern extends BabelNode {
+ type: "ObjectPattern";
+ properties: Array<BabelNodeRestElement | BabelNodeObjectProperty>;
+ decorators?: Array<BabelNodeDecorator>;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+}
+
+declare class BabelNodeSpreadElement extends BabelNode {
+ type: "SpreadElement";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeSuper extends BabelNode {
+ type: "Super";
+}
+
+declare class BabelNodeTaggedTemplateExpression extends BabelNode {
+ type: "TaggedTemplateExpression";
+ tag: BabelNodeExpression;
+ quasi: BabelNodeTemplateLiteral;
+ typeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTemplateElement extends BabelNode {
+ type: "TemplateElement";
+ value: { raw: string, cooked?: string };
+ tail?: boolean;
+}
+
+declare class BabelNodeTemplateLiteral extends BabelNode {
+ type: "TemplateLiteral";
+ quasis: Array<BabelNodeTemplateElement>;
+ expressions: Array<BabelNodeExpression | BabelNodeTSType>;
+}
+
+declare class BabelNodeYieldExpression extends BabelNode {
+ type: "YieldExpression";
+ argument?: BabelNodeExpression;
+ delegate?: boolean;
+}
+
+declare class BabelNodeAwaitExpression extends BabelNode {
+ type: "AwaitExpression";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeImport extends BabelNode {
+ type: "Import";
+}
+
+declare class BabelNodeBigIntLiteral extends BabelNode {
+ type: "BigIntLiteral";
+ value: string;
+}
+
+declare class BabelNodeExportNamespaceSpecifier extends BabelNode {
+ type: "ExportNamespaceSpecifier";
+ exported: BabelNodeIdentifier;
+}
+
+declare class BabelNodeOptionalMemberExpression extends BabelNode {
+ type: "OptionalMemberExpression";
+ object: BabelNodeExpression;
+ property: BabelNodeExpression | BabelNodeIdentifier;
+ computed?: boolean;
+ optional: boolean;
+}
+
+declare class BabelNodeOptionalCallExpression extends BabelNode {
+ type: "OptionalCallExpression";
+ callee: BabelNodeExpression;
+ arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>;
+ optional: boolean;
+ typeArguments?: BabelNodeTypeParameterInstantiation;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeClassProperty extends BabelNode {
+ type: "ClassProperty";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression;
+ value?: BabelNodeExpression;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ decorators?: Array<BabelNodeDecorator>;
+ computed?: boolean;
+ abstract?: boolean;
+ accessibility?: "public" | "private" | "protected";
+ declare?: boolean;
+ definite?: boolean;
+ optional?: boolean;
+ override?: boolean;
+ readonly?: boolean;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeClassPrivateProperty extends BabelNode {
+ type: "ClassPrivateProperty";
+ key: BabelNodePrivateName;
+ value?: BabelNodeExpression;
+ decorators?: Array<BabelNodeDecorator>;
+ definite?: boolean;
+ readonly?: boolean;
+ typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeClassPrivateMethod extends BabelNode {
+ type: "ClassPrivateMethod";
+ kind?: "get" | "set" | "method" | "constructor";
+ key: BabelNodePrivateName;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>;
+ body: BabelNodeBlockStatement;
+ abstract?: boolean;
+ access?: "public" | "private" | "protected";
+ accessibility?: "public" | "private" | "protected";
+ async?: boolean;
+ computed?: boolean;
+ decorators?: Array<BabelNodeDecorator>;
+ generator?: boolean;
+ optional?: boolean;
+ override?: boolean;
+ returnType?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ typeParameters?: BabelNodeTypeParameterDeclaration | BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+}
+
+declare class BabelNodePrivateName extends BabelNode {
+ type: "PrivateName";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeStaticBlock extends BabelNode {
+ type: "StaticBlock";
+ body: Array<BabelNodeStatement>;
+}
+
+declare class BabelNodeAnyTypeAnnotation extends BabelNode {
+ type: "AnyTypeAnnotation";
+}
+
+declare class BabelNodeArrayTypeAnnotation extends BabelNode {
+ type: "ArrayTypeAnnotation";
+ elementType: BabelNodeFlowType;
+}
+
+declare class BabelNodeBooleanTypeAnnotation extends BabelNode {
+ type: "BooleanTypeAnnotation";
+}
+
+declare class BabelNodeBooleanLiteralTypeAnnotation extends BabelNode {
+ type: "BooleanLiteralTypeAnnotation";
+ value: boolean;
+}
+
+declare class BabelNodeNullLiteralTypeAnnotation extends BabelNode {
+ type: "NullLiteralTypeAnnotation";
+}
+
+declare class BabelNodeClassImplements extends BabelNode {
+ type: "ClassImplements";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterInstantiation;
+}
+
+declare class BabelNodeDeclareClass extends BabelNode {
+ type: "DeclareClass";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ body: BabelNodeObjectTypeAnnotation;
+ mixins?: Array<BabelNodeInterfaceExtends>;
+}
+
+declare class BabelNodeDeclareFunction extends BabelNode {
+ type: "DeclareFunction";
+ id: BabelNodeIdentifier;
+ predicate?: BabelNodeDeclaredPredicate;
+}
+
+declare class BabelNodeDeclareInterface extends BabelNode {
+ type: "DeclareInterface";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ body: BabelNodeObjectTypeAnnotation;
+ mixins?: Array<BabelNodeInterfaceExtends>;
+}
+
+declare class BabelNodeDeclareModule extends BabelNode {
+ type: "DeclareModule";
+ id: BabelNodeIdentifier | BabelNodeStringLiteral;
+ body: BabelNodeBlockStatement;
+ kind?: "CommonJS" | "ES";
+}
+
+declare class BabelNodeDeclareModuleExports extends BabelNode {
+ type: "DeclareModuleExports";
+ typeAnnotation: BabelNodeTypeAnnotation;
+}
+
+declare class BabelNodeDeclareTypeAlias extends BabelNode {
+ type: "DeclareTypeAlias";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ right: BabelNodeFlowType;
+}
+
+declare class BabelNodeDeclareOpaqueType extends BabelNode {
+ type: "DeclareOpaqueType";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ supertype?: BabelNodeFlowType;
+ impltype?: BabelNodeFlowType;
+}
+
+declare class BabelNodeDeclareVariable extends BabelNode {
+ type: "DeclareVariable";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeDeclareExportDeclaration extends BabelNode {
+ type: "DeclareExportDeclaration";
+ declaration?: BabelNodeFlow;
+ specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportNamespaceSpecifier>;
+ source?: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeDeclareExportAllDeclaration extends BabelNode {
+ type: "DeclareExportAllDeclaration";
+ source: BabelNodeStringLiteral;
+ exportKind?: "type" | "value";
+}
+
+declare class BabelNodeDeclaredPredicate extends BabelNode {
+ type: "DeclaredPredicate";
+ value: BabelNodeFlow;
+}
+
+declare class BabelNodeExistsTypeAnnotation extends BabelNode {
+ type: "ExistsTypeAnnotation";
+}
+
+declare class BabelNodeFunctionTypeAnnotation extends BabelNode {
+ type: "FunctionTypeAnnotation";
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ params: Array<BabelNodeFunctionTypeParam>;
+ rest?: BabelNodeFunctionTypeParam;
+ returnType: BabelNodeFlowType;
+}
+
+declare class BabelNodeFunctionTypeParam extends BabelNode {
+ type: "FunctionTypeParam";
+ name?: BabelNodeIdentifier;
+ typeAnnotation: BabelNodeFlowType;
+ optional?: boolean;
+}
+
+declare class BabelNodeGenericTypeAnnotation extends BabelNode {
+ type: "GenericTypeAnnotation";
+ id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier;
+ typeParameters?: BabelNodeTypeParameterInstantiation;
+}
+
+declare class BabelNodeInferredPredicate extends BabelNode {
+ type: "InferredPredicate";
+}
+
+declare class BabelNodeInterfaceExtends extends BabelNode {
+ type: "InterfaceExtends";
+ id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier;
+ typeParameters?: BabelNodeTypeParameterInstantiation;
+}
+
+declare class BabelNodeInterfaceDeclaration extends BabelNode {
+ type: "InterfaceDeclaration";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ body: BabelNodeObjectTypeAnnotation;
+ mixins?: Array<BabelNodeInterfaceExtends>;
+}
+
+declare class BabelNodeInterfaceTypeAnnotation extends BabelNode {
+ type: "InterfaceTypeAnnotation";
+ body: BabelNodeObjectTypeAnnotation;
+}
+
+declare class BabelNodeIntersectionTypeAnnotation extends BabelNode {
+ type: "IntersectionTypeAnnotation";
+ types: Array<BabelNodeFlowType>;
+}
+
+declare class BabelNodeMixedTypeAnnotation extends BabelNode {
+ type: "MixedTypeAnnotation";
+}
+
+declare class BabelNodeEmptyTypeAnnotation extends BabelNode {
+ type: "EmptyTypeAnnotation";
+}
+
+declare class BabelNodeNullableTypeAnnotation extends BabelNode {
+ type: "NullableTypeAnnotation";
+ typeAnnotation: BabelNodeFlowType;
+}
+
+declare class BabelNodeNumberLiteralTypeAnnotation extends BabelNode {
+ type: "NumberLiteralTypeAnnotation";
+ value: number;
+}
+
+declare class BabelNodeNumberTypeAnnotation extends BabelNode {
+ type: "NumberTypeAnnotation";
+}
+
+declare class BabelNodeObjectTypeAnnotation extends BabelNode {
+ type: "ObjectTypeAnnotation";
+ properties: Array<BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty>;
+ indexers?: Array<BabelNodeObjectTypeIndexer>;
+ callProperties?: Array<BabelNodeObjectTypeCallProperty>;
+ internalSlots?: Array<BabelNodeObjectTypeInternalSlot>;
+ exact?: boolean;
+ inexact?: boolean;
+}
+
+declare class BabelNodeObjectTypeInternalSlot extends BabelNode {
+ type: "ObjectTypeInternalSlot";
+ id: BabelNodeIdentifier;
+ value: BabelNodeFlowType;
+ optional: boolean;
+ method: boolean;
+}
+
+declare class BabelNodeObjectTypeCallProperty extends BabelNode {
+ type: "ObjectTypeCallProperty";
+ value: BabelNodeFlowType;
+}
+
+declare class BabelNodeObjectTypeIndexer extends BabelNode {
+ type: "ObjectTypeIndexer";
+ id?: BabelNodeIdentifier;
+ key: BabelNodeFlowType;
+ value: BabelNodeFlowType;
+ variance?: BabelNodeVariance;
+}
+
+declare class BabelNodeObjectTypeProperty extends BabelNode {
+ type: "ObjectTypeProperty";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral;
+ value: BabelNodeFlowType;
+ variance?: BabelNodeVariance;
+ kind: "init" | "get" | "set";
+ method: boolean;
+ optional: boolean;
+ proto: boolean;
+}
+
+declare class BabelNodeObjectTypeSpreadProperty extends BabelNode {
+ type: "ObjectTypeSpreadProperty";
+ argument: BabelNodeFlowType;
+}
+
+declare class BabelNodeOpaqueType extends BabelNode {
+ type: "OpaqueType";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ supertype?: BabelNodeFlowType;
+ impltype: BabelNodeFlowType;
+}
+
+declare class BabelNodeQualifiedTypeIdentifier extends BabelNode {
+ type: "QualifiedTypeIdentifier";
+ id: BabelNodeIdentifier;
+ qualification: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier;
+}
+
+declare class BabelNodeStringLiteralTypeAnnotation extends BabelNode {
+ type: "StringLiteralTypeAnnotation";
+ value: string;
+}
+
+declare class BabelNodeStringTypeAnnotation extends BabelNode {
+ type: "StringTypeAnnotation";
+}
+
+declare class BabelNodeSymbolTypeAnnotation extends BabelNode {
+ type: "SymbolTypeAnnotation";
+}
+
+declare class BabelNodeThisTypeAnnotation extends BabelNode {
+ type: "ThisTypeAnnotation";
+}
+
+declare class BabelNodeTupleTypeAnnotation extends BabelNode {
+ type: "TupleTypeAnnotation";
+ types: Array<BabelNodeFlowType>;
+}
+
+declare class BabelNodeTypeofTypeAnnotation extends BabelNode {
+ type: "TypeofTypeAnnotation";
+ argument: BabelNodeFlowType;
+}
+
+declare class BabelNodeTypeAlias extends BabelNode {
+ type: "TypeAlias";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTypeParameterDeclaration;
+ right: BabelNodeFlowType;
+}
+
+declare class BabelNodeTypeAnnotation extends BabelNode {
+ type: "TypeAnnotation";
+ typeAnnotation: BabelNodeFlowType;
+}
+
+declare class BabelNodeTypeCastExpression extends BabelNode {
+ type: "TypeCastExpression";
+ expression: BabelNodeExpression;
+ typeAnnotation: BabelNodeTypeAnnotation;
+}
+
+declare class BabelNodeTypeParameter extends BabelNode {
+ type: "TypeParameter";
+ bound?: BabelNodeTypeAnnotation;
+ variance?: BabelNodeVariance;
+ name: string;
+}
+
+declare class BabelNodeTypeParameterDeclaration extends BabelNode {
+ type: "TypeParameterDeclaration";
+ params: Array<BabelNodeTypeParameter>;
+}
+
+declare class BabelNodeTypeParameterInstantiation extends BabelNode {
+ type: "TypeParameterInstantiation";
+ params: Array<BabelNodeFlowType>;
+}
+
+declare class BabelNodeUnionTypeAnnotation extends BabelNode {
+ type: "UnionTypeAnnotation";
+ types: Array<BabelNodeFlowType>;
+}
+
+declare class BabelNodeVariance extends BabelNode {
+ type: "Variance";
+ kind: "minus" | "plus";
+}
+
+declare class BabelNodeVoidTypeAnnotation extends BabelNode {
+ type: "VoidTypeAnnotation";
+}
+
+declare class BabelNodeEnumDeclaration extends BabelNode {
+ type: "EnumDeclaration";
+ id: BabelNodeIdentifier;
+ body: BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody;
+}
+
+declare class BabelNodeEnumBooleanBody extends BabelNode {
+ type: "EnumBooleanBody";
+ members: Array<BabelNodeEnumBooleanMember>;
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumNumberBody extends BabelNode {
+ type: "EnumNumberBody";
+ members: Array<BabelNodeEnumNumberMember>;
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumStringBody extends BabelNode {
+ type: "EnumStringBody";
+ members: Array<BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember>;
+ explicitType: boolean;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumSymbolBody extends BabelNode {
+ type: "EnumSymbolBody";
+ members: Array<BabelNodeEnumDefaultedMember>;
+ hasUnknownMembers: boolean;
+}
+
+declare class BabelNodeEnumBooleanMember extends BabelNode {
+ type: "EnumBooleanMember";
+ id: BabelNodeIdentifier;
+ init: BabelNodeBooleanLiteral;
+}
+
+declare class BabelNodeEnumNumberMember extends BabelNode {
+ type: "EnumNumberMember";
+ id: BabelNodeIdentifier;
+ init: BabelNodeNumericLiteral;
+}
+
+declare class BabelNodeEnumStringMember extends BabelNode {
+ type: "EnumStringMember";
+ id: BabelNodeIdentifier;
+ init: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeEnumDefaultedMember extends BabelNode {
+ type: "EnumDefaultedMember";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeIndexedAccessType extends BabelNode {
+ type: "IndexedAccessType";
+ objectType: BabelNodeFlowType;
+ indexType: BabelNodeFlowType;
+}
+
+declare class BabelNodeOptionalIndexedAccessType extends BabelNode {
+ type: "OptionalIndexedAccessType";
+ objectType: BabelNodeFlowType;
+ indexType: BabelNodeFlowType;
+ optional: boolean;
+}
+
+declare class BabelNodeJSXAttribute extends BabelNode {
+ type: "JSXAttribute";
+ name: BabelNodeJSXIdentifier | BabelNodeJSXNamespacedName;
+ value?: BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeStringLiteral | BabelNodeJSXExpressionContainer;
+}
+
+declare class BabelNodeJSXClosingElement extends BabelNode {
+ type: "JSXClosingElement";
+ name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName;
+}
+
+declare class BabelNodeJSXElement extends BabelNode {
+ type: "JSXElement";
+ openingElement: BabelNodeJSXOpeningElement;
+ closingElement?: BabelNodeJSXClosingElement;
+ children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>;
+ selfClosing?: boolean;
+}
+
+declare class BabelNodeJSXEmptyExpression extends BabelNode {
+ type: "JSXEmptyExpression";
+}
+
+declare class BabelNodeJSXExpressionContainer extends BabelNode {
+ type: "JSXExpressionContainer";
+ expression: BabelNodeExpression | BabelNodeJSXEmptyExpression;
+}
+
+declare class BabelNodeJSXSpreadChild extends BabelNode {
+ type: "JSXSpreadChild";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeJSXIdentifier extends BabelNode {
+ type: "JSXIdentifier";
+ name: string;
+}
+
+declare class BabelNodeJSXMemberExpression extends BabelNode {
+ type: "JSXMemberExpression";
+ object: BabelNodeJSXMemberExpression | BabelNodeJSXIdentifier;
+ property: BabelNodeJSXIdentifier;
+}
+
+declare class BabelNodeJSXNamespacedName extends BabelNode {
+ type: "JSXNamespacedName";
+ namespace: BabelNodeJSXIdentifier;
+ name: BabelNodeJSXIdentifier;
+}
+
+declare class BabelNodeJSXOpeningElement extends BabelNode {
+ type: "JSXOpeningElement";
+ name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName;
+ attributes: Array<BabelNodeJSXAttribute | BabelNodeJSXSpreadAttribute>;
+ selfClosing?: boolean;
+ typeParameters?: BabelNodeTypeParameterInstantiation | BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeJSXSpreadAttribute extends BabelNode {
+ type: "JSXSpreadAttribute";
+ argument: BabelNodeExpression;
+}
+
+declare class BabelNodeJSXText extends BabelNode {
+ type: "JSXText";
+ value: string;
+}
+
+declare class BabelNodeJSXFragment extends BabelNode {
+ type: "JSXFragment";
+ openingFragment: BabelNodeJSXOpeningFragment;
+ closingFragment: BabelNodeJSXClosingFragment;
+ children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>;
+}
+
+declare class BabelNodeJSXOpeningFragment extends BabelNode {
+ type: "JSXOpeningFragment";
+}
+
+declare class BabelNodeJSXClosingFragment extends BabelNode {
+ type: "JSXClosingFragment";
+}
+
+declare class BabelNodeNoop extends BabelNode {
+ type: "Noop";
+}
+
+declare class BabelNodePlaceholder extends BabelNode {
+ type: "Placeholder";
+ expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern";
+ name: BabelNodeIdentifier;
+}
+
+declare class BabelNodeV8IntrinsicIdentifier extends BabelNode {
+ type: "V8IntrinsicIdentifier";
+ name: string;
+}
+
+declare class BabelNodeArgumentPlaceholder extends BabelNode {
+ type: "ArgumentPlaceholder";
+}
+
+declare class BabelNodeBindExpression extends BabelNode {
+ type: "BindExpression";
+ object: BabelNodeExpression;
+ callee: BabelNodeExpression;
+}
+
+declare class BabelNodeImportAttribute extends BabelNode {
+ type: "ImportAttribute";
+ key: BabelNodeIdentifier | BabelNodeStringLiteral;
+ value: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeDecorator extends BabelNode {
+ type: "Decorator";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeDoExpression extends BabelNode {
+ type: "DoExpression";
+ body: BabelNodeBlockStatement;
+ async?: boolean;
+}
+
+declare class BabelNodeExportDefaultSpecifier extends BabelNode {
+ type: "ExportDefaultSpecifier";
+ exported: BabelNodeIdentifier;
+}
+
+declare class BabelNodeRecordExpression extends BabelNode {
+ type: "RecordExpression";
+ properties: Array<BabelNodeObjectProperty | BabelNodeSpreadElement>;
+}
+
+declare class BabelNodeTupleExpression extends BabelNode {
+ type: "TupleExpression";
+ elements?: Array<BabelNodeExpression | BabelNodeSpreadElement>;
+}
+
+declare class BabelNodeDecimalLiteral extends BabelNode {
+ type: "DecimalLiteral";
+ value: string;
+}
+
+declare class BabelNodeModuleExpression extends BabelNode {
+ type: "ModuleExpression";
+ body: BabelNodeProgram;
+}
+
+declare class BabelNodeTopicReference extends BabelNode {
+ type: "TopicReference";
+}
+
+declare class BabelNodePipelineTopicExpression extends BabelNode {
+ type: "PipelineTopicExpression";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodePipelineBareFunction extends BabelNode {
+ type: "PipelineBareFunction";
+ callee: BabelNodeExpression;
+}
+
+declare class BabelNodePipelinePrimaryTopicReference extends BabelNode {
+ type: "PipelinePrimaryTopicReference";
+}
+
+declare class BabelNodeTSParameterProperty extends BabelNode {
+ type: "TSParameterProperty";
+ parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern;
+ accessibility?: "public" | "private" | "protected";
+ decorators?: Array<BabelNodeDecorator>;
+ override?: boolean;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSDeclareFunction extends BabelNode {
+ type: "TSDeclareFunction";
+ id?: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>;
+ returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ async?: boolean;
+ declare?: boolean;
+ generator?: boolean;
+}
+
+declare class BabelNodeTSDeclareMethod extends BabelNode {
+ type: "TSDeclareMethod";
+ decorators?: Array<BabelNodeDecorator>;
+ key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop;
+ params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>;
+ returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop;
+ abstract?: boolean;
+ access?: "public" | "private" | "protected";
+ accessibility?: "public" | "private" | "protected";
+ async?: boolean;
+ computed?: boolean;
+ generator?: boolean;
+ kind?: "get" | "set" | "method" | "constructor";
+ optional?: boolean;
+ override?: boolean;
+}
+
+declare class BabelNodeTSQualifiedName extends BabelNode {
+ type: "TSQualifiedName";
+ left: BabelNodeTSEntityName;
+ right: BabelNodeIdentifier;
+}
+
+declare class BabelNodeTSCallSignatureDeclaration extends BabelNode {
+ type: "TSCallSignatureDeclaration";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+}
+
+declare class BabelNodeTSConstructSignatureDeclaration extends BabelNode {
+ type: "TSConstructSignatureDeclaration";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+}
+
+declare class BabelNodeTSPropertySignature extends BabelNode {
+ type: "TSPropertySignature";
+ key: BabelNodeExpression;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ initializer?: BabelNodeExpression;
+ computed?: boolean;
+ kind: "get" | "set";
+ optional?: boolean;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSMethodSignature extends BabelNode {
+ type: "TSMethodSignature";
+ key: BabelNodeExpression;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ computed?: boolean;
+ kind: "method" | "get" | "set";
+ optional?: boolean;
+}
+
+declare class BabelNodeTSIndexSignature extends BabelNode {
+ type: "TSIndexSignature";
+ parameters: Array<BabelNodeIdentifier>;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSAnyKeyword extends BabelNode {
+ type: "TSAnyKeyword";
+}
+
+declare class BabelNodeTSBooleanKeyword extends BabelNode {
+ type: "TSBooleanKeyword";
+}
+
+declare class BabelNodeTSBigIntKeyword extends BabelNode {
+ type: "TSBigIntKeyword";
+}
+
+declare class BabelNodeTSIntrinsicKeyword extends BabelNode {
+ type: "TSIntrinsicKeyword";
+}
+
+declare class BabelNodeTSNeverKeyword extends BabelNode {
+ type: "TSNeverKeyword";
+}
+
+declare class BabelNodeTSNullKeyword extends BabelNode {
+ type: "TSNullKeyword";
+}
+
+declare class BabelNodeTSNumberKeyword extends BabelNode {
+ type: "TSNumberKeyword";
+}
+
+declare class BabelNodeTSObjectKeyword extends BabelNode {
+ type: "TSObjectKeyword";
+}
+
+declare class BabelNodeTSStringKeyword extends BabelNode {
+ type: "TSStringKeyword";
+}
+
+declare class BabelNodeTSSymbolKeyword extends BabelNode {
+ type: "TSSymbolKeyword";
+}
+
+declare class BabelNodeTSUndefinedKeyword extends BabelNode {
+ type: "TSUndefinedKeyword";
+}
+
+declare class BabelNodeTSUnknownKeyword extends BabelNode {
+ type: "TSUnknownKeyword";
+}
+
+declare class BabelNodeTSVoidKeyword extends BabelNode {
+ type: "TSVoidKeyword";
+}
+
+declare class BabelNodeTSThisType extends BabelNode {
+ type: "TSThisType";
+}
+
+declare class BabelNodeTSFunctionType extends BabelNode {
+ type: "TSFunctionType";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+}
+
+declare class BabelNodeTSConstructorType extends BabelNode {
+ type: "TSConstructorType";
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ abstract?: boolean;
+}
+
+declare class BabelNodeTSTypeReference extends BabelNode {
+ type: "TSTypeReference";
+ typeName: BabelNodeTSEntityName;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSTypePredicate extends BabelNode {
+ type: "TSTypePredicate";
+ parameterName: BabelNodeIdentifier | BabelNodeTSThisType;
+ typeAnnotation?: BabelNodeTSTypeAnnotation;
+ asserts?: boolean;
+}
+
+declare class BabelNodeTSTypeQuery extends BabelNode {
+ type: "TSTypeQuery";
+ exprName: BabelNodeTSEntityName | BabelNodeTSImportType;
+}
+
+declare class BabelNodeTSTypeLiteral extends BabelNode {
+ type: "TSTypeLiteral";
+ members: Array<BabelNodeTSTypeElement>;
+}
+
+declare class BabelNodeTSArrayType extends BabelNode {
+ type: "TSArrayType";
+ elementType: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTupleType extends BabelNode {
+ type: "TSTupleType";
+ elementTypes: Array<BabelNodeTSType | BabelNodeTSNamedTupleMember>;
+}
+
+declare class BabelNodeTSOptionalType extends BabelNode {
+ type: "TSOptionalType";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSRestType extends BabelNode {
+ type: "TSRestType";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSNamedTupleMember extends BabelNode {
+ type: "TSNamedTupleMember";
+ label: BabelNodeIdentifier;
+ elementType: BabelNodeTSType;
+ optional?: boolean;
+}
+
+declare class BabelNodeTSUnionType extends BabelNode {
+ type: "TSUnionType";
+ types: Array<BabelNodeTSType>;
+}
+
+declare class BabelNodeTSIntersectionType extends BabelNode {
+ type: "TSIntersectionType";
+ types: Array<BabelNodeTSType>;
+}
+
+declare class BabelNodeTSConditionalType extends BabelNode {
+ type: "TSConditionalType";
+ checkType: BabelNodeTSType;
+ extendsType: BabelNodeTSType;
+ trueType: BabelNodeTSType;
+ falseType: BabelNodeTSType;
+}
+
+declare class BabelNodeTSInferType extends BabelNode {
+ type: "TSInferType";
+ typeParameter: BabelNodeTSTypeParameter;
+}
+
+declare class BabelNodeTSParenthesizedType extends BabelNode {
+ type: "TSParenthesizedType";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTypeOperator extends BabelNode {
+ type: "TSTypeOperator";
+ typeAnnotation: BabelNodeTSType;
+ operator: string;
+}
+
+declare class BabelNodeTSIndexedAccessType extends BabelNode {
+ type: "TSIndexedAccessType";
+ objectType: BabelNodeTSType;
+ indexType: BabelNodeTSType;
+}
+
+declare class BabelNodeTSMappedType extends BabelNode {
+ type: "TSMappedType";
+ typeParameter: BabelNodeTSTypeParameter;
+ typeAnnotation?: BabelNodeTSType;
+ nameType?: BabelNodeTSType;
+ optional?: boolean;
+ readonly?: boolean;
+}
+
+declare class BabelNodeTSLiteralType extends BabelNode {
+ type: "TSLiteralType";
+ literal: BabelNodeNumericLiteral | BabelNodeStringLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeUnaryExpression;
+}
+
+declare class BabelNodeTSExpressionWithTypeArguments extends BabelNode {
+ type: "TSExpressionWithTypeArguments";
+ expression: BabelNodeTSEntityName;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSInterfaceDeclaration extends BabelNode {
+ type: "TSInterfaceDeclaration";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ body: BabelNodeTSInterfaceBody;
+ declare?: boolean;
+}
+
+declare class BabelNodeTSInterfaceBody extends BabelNode {
+ type: "TSInterfaceBody";
+ body: Array<BabelNodeTSTypeElement>;
+}
+
+declare class BabelNodeTSTypeAliasDeclaration extends BabelNode {
+ type: "TSTypeAliasDeclaration";
+ id: BabelNodeIdentifier;
+ typeParameters?: BabelNodeTSTypeParameterDeclaration;
+ typeAnnotation: BabelNodeTSType;
+ declare?: boolean;
+}
+
+declare class BabelNodeTSAsExpression extends BabelNode {
+ type: "TSAsExpression";
+ expression: BabelNodeExpression;
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTypeAssertion extends BabelNode {
+ type: "TSTypeAssertion";
+ typeAnnotation: BabelNodeTSType;
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeTSEnumDeclaration extends BabelNode {
+ type: "TSEnumDeclaration";
+ id: BabelNodeIdentifier;
+ members: Array<BabelNodeTSEnumMember>;
+ declare?: boolean;
+ initializer?: BabelNodeExpression;
+}
+
+declare class BabelNodeTSEnumMember extends BabelNode {
+ type: "TSEnumMember";
+ id: BabelNodeIdentifier | BabelNodeStringLiteral;
+ initializer?: BabelNodeExpression;
+}
+
+declare class BabelNodeTSModuleDeclaration extends BabelNode {
+ type: "TSModuleDeclaration";
+ id: BabelNodeIdentifier | BabelNodeStringLiteral;
+ body: BabelNodeTSModuleBlock | BabelNodeTSModuleDeclaration;
+ declare?: boolean;
+ global?: boolean;
+}
+
+declare class BabelNodeTSModuleBlock extends BabelNode {
+ type: "TSModuleBlock";
+ body: Array<BabelNodeStatement>;
+}
+
+declare class BabelNodeTSImportType extends BabelNode {
+ type: "TSImportType";
+ argument: BabelNodeStringLiteral;
+ qualifier?: BabelNodeTSEntityName;
+ typeParameters?: BabelNodeTSTypeParameterInstantiation;
+}
+
+declare class BabelNodeTSImportEqualsDeclaration extends BabelNode {
+ type: "TSImportEqualsDeclaration";
+ id: BabelNodeIdentifier;
+ moduleReference: BabelNodeTSEntityName | BabelNodeTSExternalModuleReference;
+ importKind?: "type" | "value";
+ isExport: boolean;
+}
+
+declare class BabelNodeTSExternalModuleReference extends BabelNode {
+ type: "TSExternalModuleReference";
+ expression: BabelNodeStringLiteral;
+}
+
+declare class BabelNodeTSNonNullExpression extends BabelNode {
+ type: "TSNonNullExpression";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeTSExportAssignment extends BabelNode {
+ type: "TSExportAssignment";
+ expression: BabelNodeExpression;
+}
+
+declare class BabelNodeTSNamespaceExportDeclaration extends BabelNode {
+ type: "TSNamespaceExportDeclaration";
+ id: BabelNodeIdentifier;
+}
+
+declare class BabelNodeTSTypeAnnotation extends BabelNode {
+ type: "TSTypeAnnotation";
+ typeAnnotation: BabelNodeTSType;
+}
+
+declare class BabelNodeTSTypeParameterInstantiation extends BabelNode {
+ type: "TSTypeParameterInstantiation";
+ params: Array<BabelNodeTSType>;
+}
+
+declare class BabelNodeTSTypeParameterDeclaration extends BabelNode {
+ type: "TSTypeParameterDeclaration";
+ params: Array<BabelNodeTSTypeParameter>;
+}
+
+declare class BabelNodeTSTypeParameter extends BabelNode {
+ type: "TSTypeParameter";
+ constraint?: BabelNodeTSType;
+ name: string;
+}
+
+type BabelNodeStandardized = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeInterpreterDirective | BabelNodeDirective | BabelNodeDirectiveLiteral | BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeCallExpression | BabelNodeCatchClause | BabelNodeConditionalExpression | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeFile | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeProgram | BabelNodeObjectExpression | BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeRestElement | BabelNodeReturnStatement | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeSwitchCase | BabelNodeSwitchStatement | BabelNodeThisExpression | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeVariableDeclaration | BabelNodeVariableDeclarator | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeArrowFunctionExpression | BabelNodeClassBody | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeExportSpecifier | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeMetaProperty | BabelNodeClassMethod | BabelNodeObjectPattern | BabelNodeSpreadElement | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateElement | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeExportNamespaceSpecifier | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeClassProperty | BabelNodeClassPrivateProperty | BabelNodeClassPrivateMethod | BabelNodePrivateName | BabelNodeStaticBlock;
+type BabelNodeExpression = BabelNodeArrayExpression | BabelNodeAssignmentExpression | BabelNodeBinaryExpression | BabelNodeCallExpression | BabelNodeConditionalExpression | BabelNodeFunctionExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeLogicalExpression | BabelNodeMemberExpression | BabelNodeNewExpression | BabelNodeObjectExpression | BabelNodeSequenceExpression | BabelNodeParenthesizedExpression | BabelNodeThisExpression | BabelNodeUnaryExpression | BabelNodeUpdateExpression | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeMetaProperty | BabelNodeSuper | BabelNodeTaggedTemplateExpression | BabelNodeTemplateLiteral | BabelNodeYieldExpression | BabelNodeAwaitExpression | BabelNodeImport | BabelNodeBigIntLiteral | BabelNodeOptionalMemberExpression | BabelNodeOptionalCallExpression | BabelNodeTypeCastExpression | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeBindExpression | BabelNodeDoExpression | BabelNodeRecordExpression | BabelNodeTupleExpression | BabelNodeDecimalLiteral | BabelNodeModuleExpression | BabelNodeTopicReference | BabelNodePipelineTopicExpression | BabelNodePipelineBareFunction | BabelNodePipelinePrimaryTopicReference | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSNonNullExpression;
+type BabelNodeBinary = BabelNodeBinaryExpression | BabelNodeLogicalExpression;
+type BabelNodeScopable = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeClassExpression | BabelNodeClassDeclaration | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock;
+type BabelNodeBlockParent = BabelNodeBlockStatement | BabelNodeCatchClause | BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeProgram | BabelNodeObjectMethod | BabelNodeSwitchStatement | BabelNodeWhileStatement | BabelNodeArrowFunctionExpression | BabelNodeForOfStatement | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock | BabelNodeTSModuleBlock;
+type BabelNodeBlock = BabelNodeBlockStatement | BabelNodeProgram | BabelNodeTSModuleBlock;
+type BabelNodeStatement = BabelNodeBlockStatement | BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeDebuggerStatement | BabelNodeDoWhileStatement | BabelNodeEmptyStatement | BabelNodeExpressionStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeFunctionDeclaration | BabelNodeIfStatement | BabelNodeLabeledStatement | BabelNodeReturnStatement | BabelNodeSwitchStatement | BabelNodeThrowStatement | BabelNodeTryStatement | BabelNodeVariableDeclaration | BabelNodeWhileStatement | BabelNodeWithStatement | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeForOfStatement | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias | BabelNodeEnumDeclaration | BabelNodeTSDeclareFunction | BabelNodeTSInterfaceDeclaration | BabelNodeTSTypeAliasDeclaration | BabelNodeTSEnumDeclaration | BabelNodeTSModuleDeclaration | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration;
+type BabelNodeTerminatorless = BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeReturnStatement | BabelNodeThrowStatement | BabelNodeYieldExpression | BabelNodeAwaitExpression;
+type BabelNodeCompletionStatement = BabelNodeBreakStatement | BabelNodeContinueStatement | BabelNodeReturnStatement | BabelNodeThrowStatement;
+type BabelNodeConditional = BabelNodeConditionalExpression | BabelNodeIfStatement;
+type BabelNodeLoop = BabelNodeDoWhileStatement | BabelNodeForInStatement | BabelNodeForStatement | BabelNodeWhileStatement | BabelNodeForOfStatement;
+type BabelNodeWhile = BabelNodeDoWhileStatement | BabelNodeWhileStatement;
+type BabelNodeExpressionWrapper = BabelNodeExpressionStatement | BabelNodeParenthesizedExpression | BabelNodeTypeCastExpression;
+type BabelNodeFor = BabelNodeForInStatement | BabelNodeForStatement | BabelNodeForOfStatement;
+type BabelNodeForXStatement = BabelNodeForInStatement | BabelNodeForOfStatement;
+type BabelNodeFunction = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod | BabelNodeClassPrivateMethod;
+type BabelNodeFunctionParent = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeObjectMethod | BabelNodeArrowFunctionExpression | BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeStaticBlock;
+type BabelNodePureish = BabelNodeFunctionDeclaration | BabelNodeFunctionExpression | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeArrowFunctionExpression | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral;
+type BabelNodeDeclaration = BabelNodeFunctionDeclaration | BabelNodeVariableDeclaration | BabelNodeClassDeclaration | BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias | BabelNodeEnumDeclaration | BabelNodeTSDeclareFunction | BabelNodeTSInterfaceDeclaration | BabelNodeTSTypeAliasDeclaration | BabelNodeTSEnumDeclaration | BabelNodeTSModuleDeclaration;
+type BabelNodePatternLike = BabelNodeIdentifier | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern;
+type BabelNodeLVal = BabelNodeIdentifier | BabelNodeMemberExpression | BabelNodeRestElement | BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern | BabelNodeTSParameterProperty;
+type BabelNodeTSEntityName = BabelNodeIdentifier | BabelNodeTSQualifiedName;
+type BabelNodeLiteral = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeRegExpLiteral | BabelNodeTemplateLiteral | BabelNodeBigIntLiteral | BabelNodeDecimalLiteral;
+type BabelNodeImmutable = BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeNullLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXOpeningElement | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment | BabelNodeDecimalLiteral;
+type BabelNodeUserWhitespacable = BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeObjectTypeInternalSlot | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty;
+type BabelNodeMethod = BabelNodeObjectMethod | BabelNodeClassMethod | BabelNodeClassPrivateMethod;
+type BabelNodeObjectMember = BabelNodeObjectMethod | BabelNodeObjectProperty;
+type BabelNodeProperty = BabelNodeObjectProperty | BabelNodeClassProperty | BabelNodeClassPrivateProperty;
+type BabelNodeUnaryLike = BabelNodeUnaryExpression | BabelNodeSpreadElement;
+type BabelNodePattern = BabelNodeAssignmentPattern | BabelNodeArrayPattern | BabelNodeObjectPattern;
+type BabelNodeClass = BabelNodeClassExpression | BabelNodeClassDeclaration;
+type BabelNodeModuleDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration | BabelNodeImportDeclaration;
+type BabelNodeExportDeclaration = BabelNodeExportAllDeclaration | BabelNodeExportDefaultDeclaration | BabelNodeExportNamedDeclaration;
+type BabelNodeModuleSpecifier = BabelNodeExportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier | BabelNodeImportSpecifier | BabelNodeExportNamespaceSpecifier | BabelNodeExportDefaultSpecifier;
+type BabelNodePrivate = BabelNodeClassPrivateProperty | BabelNodeClassPrivateMethod | BabelNodePrivateName;
+type BabelNodeFlow = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeClassImplements | BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeDeclaredPredicate | BabelNodeExistsTypeAnnotation | BabelNodeFunctionTypeAnnotation | BabelNodeFunctionTypeParam | BabelNodeGenericTypeAnnotation | BabelNodeInferredPredicate | BabelNodeInterfaceExtends | BabelNodeInterfaceDeclaration | BabelNodeInterfaceTypeAnnotation | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeObjectTypeAnnotation | BabelNodeObjectTypeInternalSlot | BabelNodeObjectTypeCallProperty | BabelNodeObjectTypeIndexer | BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty | BabelNodeOpaqueType | BabelNodeQualifiedTypeIdentifier | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeSymbolTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeTypeAlias | BabelNodeTypeAnnotation | BabelNodeTypeCastExpression | BabelNodeTypeParameter | BabelNodeTypeParameterDeclaration | BabelNodeTypeParameterInstantiation | BabelNodeUnionTypeAnnotation | BabelNodeVariance | BabelNodeVoidTypeAnnotation | BabelNodeEnumDeclaration | BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody | BabelNodeEnumBooleanMember | BabelNodeEnumNumberMember | BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember | BabelNodeIndexedAccessType | BabelNodeOptionalIndexedAccessType;
+type BabelNodeFlowType = BabelNodeAnyTypeAnnotation | BabelNodeArrayTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeBooleanLiteralTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeExistsTypeAnnotation | BabelNodeFunctionTypeAnnotation | BabelNodeGenericTypeAnnotation | BabelNodeInterfaceTypeAnnotation | BabelNodeIntersectionTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNullableTypeAnnotation | BabelNodeNumberLiteralTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeObjectTypeAnnotation | BabelNodeStringLiteralTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeSymbolTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeTupleTypeAnnotation | BabelNodeTypeofTypeAnnotation | BabelNodeUnionTypeAnnotation | BabelNodeVoidTypeAnnotation | BabelNodeIndexedAccessType | BabelNodeOptionalIndexedAccessType;
+type BabelNodeFlowBaseAnnotation = BabelNodeAnyTypeAnnotation | BabelNodeBooleanTypeAnnotation | BabelNodeNullLiteralTypeAnnotation | BabelNodeMixedTypeAnnotation | BabelNodeEmptyTypeAnnotation | BabelNodeNumberTypeAnnotation | BabelNodeStringTypeAnnotation | BabelNodeSymbolTypeAnnotation | BabelNodeThisTypeAnnotation | BabelNodeVoidTypeAnnotation;
+type BabelNodeFlowDeclaration = BabelNodeDeclareClass | BabelNodeDeclareFunction | BabelNodeDeclareInterface | BabelNodeDeclareModule | BabelNodeDeclareModuleExports | BabelNodeDeclareTypeAlias | BabelNodeDeclareOpaqueType | BabelNodeDeclareVariable | BabelNodeDeclareExportDeclaration | BabelNodeDeclareExportAllDeclaration | BabelNodeInterfaceDeclaration | BabelNodeOpaqueType | BabelNodeTypeAlias;
+type BabelNodeFlowPredicate = BabelNodeDeclaredPredicate | BabelNodeInferredPredicate;
+type BabelNodeEnumBody = BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody;
+type BabelNodeEnumMember = BabelNodeEnumBooleanMember | BabelNodeEnumNumberMember | BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember;
+type BabelNodeJSX = BabelNodeJSXAttribute | BabelNodeJSXClosingElement | BabelNodeJSXElement | BabelNodeJSXEmptyExpression | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName | BabelNodeJSXOpeningElement | BabelNodeJSXSpreadAttribute | BabelNodeJSXText | BabelNodeJSXFragment | BabelNodeJSXOpeningFragment | BabelNodeJSXClosingFragment;
+type BabelNodeMiscellaneous = BabelNodeNoop | BabelNodePlaceholder | BabelNodeV8IntrinsicIdentifier;
+type BabelNodeTypeScript = BabelNodeTSParameterProperty | BabelNodeTSDeclareFunction | BabelNodeTSDeclareMethod | BabelNodeTSQualifiedName | BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature | BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSNamedTupleMember | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSInterfaceDeclaration | BabelNodeTSInterfaceBody | BabelNodeTSTypeAliasDeclaration | BabelNodeTSAsExpression | BabelNodeTSTypeAssertion | BabelNodeTSEnumDeclaration | BabelNodeTSEnumMember | BabelNodeTSModuleDeclaration | BabelNodeTSModuleBlock | BabelNodeTSImportType | BabelNodeTSImportEqualsDeclaration | BabelNodeTSExternalModuleReference | BabelNodeTSNonNullExpression | BabelNodeTSExportAssignment | BabelNodeTSNamespaceExportDeclaration | BabelNodeTSTypeAnnotation | BabelNodeTSTypeParameterInstantiation | BabelNodeTSTypeParameterDeclaration | BabelNodeTSTypeParameter;
+type BabelNodeTSTypeElement = BabelNodeTSCallSignatureDeclaration | BabelNodeTSConstructSignatureDeclaration | BabelNodeTSPropertySignature | BabelNodeTSMethodSignature | BabelNodeTSIndexSignature;
+type BabelNodeTSType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSFunctionType | BabelNodeTSConstructorType | BabelNodeTSTypeReference | BabelNodeTSTypePredicate | BabelNodeTSTypeQuery | BabelNodeTSTypeLiteral | BabelNodeTSArrayType | BabelNodeTSTupleType | BabelNodeTSOptionalType | BabelNodeTSRestType | BabelNodeTSUnionType | BabelNodeTSIntersectionType | BabelNodeTSConditionalType | BabelNodeTSInferType | BabelNodeTSParenthesizedType | BabelNodeTSTypeOperator | BabelNodeTSIndexedAccessType | BabelNodeTSMappedType | BabelNodeTSLiteralType | BabelNodeTSExpressionWithTypeArguments | BabelNodeTSImportType;
+type BabelNodeTSBaseType = BabelNodeTSAnyKeyword | BabelNodeTSBooleanKeyword | BabelNodeTSBigIntKeyword | BabelNodeTSIntrinsicKeyword | BabelNodeTSNeverKeyword | BabelNodeTSNullKeyword | BabelNodeTSNumberKeyword | BabelNodeTSObjectKeyword | BabelNodeTSStringKeyword | BabelNodeTSSymbolKeyword | BabelNodeTSUndefinedKeyword | BabelNodeTSUnknownKeyword | BabelNodeTSVoidKeyword | BabelNodeTSThisType | BabelNodeTSLiteralType;
+
+declare module "@babel/types" {
+ declare export function arrayExpression(elements?: Array<null | BabelNodeExpression | BabelNodeSpreadElement>): BabelNodeArrayExpression;
+ declare export function assignmentExpression(operator: string, left: BabelNodeLVal, right: BabelNodeExpression): BabelNodeAssignmentExpression;
+ declare export function binaryExpression(operator: "+" | "-" | "/" | "%" | "*" | "**" | "&" | "|" | ">>" | ">>>" | "<<" | "^" | "==" | "===" | "!=" | "!==" | "in" | "instanceof" | ">" | "<" | ">=" | "<=", left: BabelNodeExpression | BabelNodePrivateName, right: BabelNodeExpression): BabelNodeBinaryExpression;
+ declare export function interpreterDirective(value: string): BabelNodeInterpreterDirective;
+ declare export function directive(value: BabelNodeDirectiveLiteral): BabelNodeDirective;
+ declare export function directiveLiteral(value: string): BabelNodeDirectiveLiteral;
+ declare export function blockStatement(body: Array<BabelNodeStatement>, directives?: Array<BabelNodeDirective>): BabelNodeBlockStatement;
+ declare export function breakStatement(label?: BabelNodeIdentifier): BabelNodeBreakStatement;
+ declare export function callExpression(callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier, _arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>): BabelNodeCallExpression;
+ declare export function catchClause(param?: BabelNodeIdentifier | BabelNodeArrayPattern | BabelNodeObjectPattern, body: BabelNodeBlockStatement): BabelNodeCatchClause;
+ declare export function conditionalExpression(test: BabelNodeExpression, consequent: BabelNodeExpression, alternate: BabelNodeExpression): BabelNodeConditionalExpression;
+ declare export function continueStatement(label?: BabelNodeIdentifier): BabelNodeContinueStatement;
+ declare export function debuggerStatement(): BabelNodeDebuggerStatement;
+ declare export function doWhileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeDoWhileStatement;
+ declare export function emptyStatement(): BabelNodeEmptyStatement;
+ declare export function expressionStatement(expression: BabelNodeExpression): BabelNodeExpressionStatement;
+ declare export function file(program: BabelNodeProgram, comments?: Array<BabelNodeCommentBlock | BabelNodeCommentLine>, tokens?: Array<any>): BabelNodeFile;
+ declare export function forInStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForInStatement;
+ declare export function forStatement(init?: BabelNodeVariableDeclaration | BabelNodeExpression, test?: BabelNodeExpression, update?: BabelNodeExpression, body: BabelNodeStatement): BabelNodeForStatement;
+ declare export function functionDeclaration(id?: BabelNodeIdentifier, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean): BabelNodeFunctionDeclaration;
+ declare export function functionExpression(id?: BabelNodeIdentifier, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>, body: BabelNodeBlockStatement, generator?: boolean, async?: boolean): BabelNodeFunctionExpression;
+ declare export function identifier(name: string): BabelNodeIdentifier;
+ declare export function ifStatement(test: BabelNodeExpression, consequent: BabelNodeStatement, alternate?: BabelNodeStatement): BabelNodeIfStatement;
+ declare export function labeledStatement(label: BabelNodeIdentifier, body: BabelNodeStatement): BabelNodeLabeledStatement;
+ declare export function stringLiteral(value: string): BabelNodeStringLiteral;
+ declare export function numericLiteral(value: number): BabelNodeNumericLiteral;
+ declare export function nullLiteral(): BabelNodeNullLiteral;
+ declare export function booleanLiteral(value: boolean): BabelNodeBooleanLiteral;
+ declare export function regExpLiteral(pattern: string, flags?: string): BabelNodeRegExpLiteral;
+ declare export function logicalExpression(operator: "||" | "&&" | "??", left: BabelNodeExpression, right: BabelNodeExpression): BabelNodeLogicalExpression;
+ declare export function memberExpression(object: BabelNodeExpression, property: BabelNodeExpression | BabelNodeIdentifier | BabelNodePrivateName, computed?: boolean, optional?: true | false): BabelNodeMemberExpression;
+ declare export function newExpression(callee: BabelNodeExpression | BabelNodeV8IntrinsicIdentifier, _arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>): BabelNodeNewExpression;
+ declare export function program(body: Array<BabelNodeStatement>, directives?: Array<BabelNodeDirective>, sourceType?: "script" | "module", interpreter?: BabelNodeInterpreterDirective): BabelNodeProgram;
+ declare export function objectExpression(properties: Array<BabelNodeObjectMethod | BabelNodeObjectProperty | BabelNodeSpreadElement>): BabelNodeObjectExpression;
+ declare export function objectMethod(kind?: "method" | "get" | "set", key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>, body: BabelNodeBlockStatement, computed?: boolean, generator?: boolean, async?: boolean): BabelNodeObjectMethod;
+ declare export function objectProperty(key: BabelNodeExpression | BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral, value: BabelNodeExpression | BabelNodePatternLike, computed?: boolean, shorthand?: boolean, decorators?: Array<BabelNodeDecorator>): BabelNodeObjectProperty;
+ declare export function restElement(argument: BabelNodeLVal): BabelNodeRestElement;
+ declare export function returnStatement(argument?: BabelNodeExpression): BabelNodeReturnStatement;
+ declare export function sequenceExpression(expressions: Array<BabelNodeExpression>): BabelNodeSequenceExpression;
+ declare export function parenthesizedExpression(expression: BabelNodeExpression): BabelNodeParenthesizedExpression;
+ declare export function switchCase(test?: BabelNodeExpression, consequent: Array<BabelNodeStatement>): BabelNodeSwitchCase;
+ declare export function switchStatement(discriminant: BabelNodeExpression, cases: Array<BabelNodeSwitchCase>): BabelNodeSwitchStatement;
+ declare export function thisExpression(): BabelNodeThisExpression;
+ declare export function throwStatement(argument: BabelNodeExpression): BabelNodeThrowStatement;
+ declare export function tryStatement(block: BabelNodeBlockStatement, handler?: BabelNodeCatchClause, finalizer?: BabelNodeBlockStatement): BabelNodeTryStatement;
+ declare export function unaryExpression(operator: "void" | "throw" | "delete" | "!" | "+" | "-" | "~" | "typeof", argument: BabelNodeExpression, prefix?: boolean): BabelNodeUnaryExpression;
+ declare export function updateExpression(operator: "++" | "--", argument: BabelNodeExpression, prefix?: boolean): BabelNodeUpdateExpression;
+ declare export function variableDeclaration(kind: "var" | "let" | "const", declarations: Array<BabelNodeVariableDeclarator>): BabelNodeVariableDeclaration;
+ declare export function variableDeclarator(id: BabelNodeLVal, init?: BabelNodeExpression): BabelNodeVariableDeclarator;
+ declare export function whileStatement(test: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWhileStatement;
+ declare export function withStatement(object: BabelNodeExpression, body: BabelNodeStatement): BabelNodeWithStatement;
+ declare export function assignmentPattern(left: BabelNodeIdentifier | BabelNodeObjectPattern | BabelNodeArrayPattern | BabelNodeMemberExpression, right: BabelNodeExpression): BabelNodeAssignmentPattern;
+ declare export function arrayPattern(elements: Array<null | BabelNodePatternLike>): BabelNodeArrayPattern;
+ declare export function arrowFunctionExpression(params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>, body: BabelNodeBlockStatement | BabelNodeExpression, async?: boolean): BabelNodeArrowFunctionExpression;
+ declare export function classBody(body: Array<BabelNodeClassMethod | BabelNodeClassPrivateMethod | BabelNodeClassProperty | BabelNodeClassPrivateProperty | BabelNodeTSDeclareMethod | BabelNodeTSIndexSignature>): BabelNodeClassBody;
+ declare export function classExpression(id?: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: Array<BabelNodeDecorator>): BabelNodeClassExpression;
+ declare export function classDeclaration(id: BabelNodeIdentifier, superClass?: BabelNodeExpression, body: BabelNodeClassBody, decorators?: Array<BabelNodeDecorator>): BabelNodeClassDeclaration;
+ declare export function exportAllDeclaration(source: BabelNodeStringLiteral): BabelNodeExportAllDeclaration;
+ declare export function exportDefaultDeclaration(declaration: BabelNodeFunctionDeclaration | BabelNodeTSDeclareFunction | BabelNodeClassDeclaration | BabelNodeExpression): BabelNodeExportDefaultDeclaration;
+ declare export function exportNamedDeclaration(declaration?: BabelNodeDeclaration, specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportDefaultSpecifier | BabelNodeExportNamespaceSpecifier>, source?: BabelNodeStringLiteral): BabelNodeExportNamedDeclaration;
+ declare export function exportSpecifier(local: BabelNodeIdentifier, exported: BabelNodeIdentifier | BabelNodeStringLiteral): BabelNodeExportSpecifier;
+ declare export function forOfStatement(left: BabelNodeVariableDeclaration | BabelNodeLVal, right: BabelNodeExpression, body: BabelNodeStatement, _await?: boolean): BabelNodeForOfStatement;
+ declare export function importDeclaration(specifiers: Array<BabelNodeImportSpecifier | BabelNodeImportDefaultSpecifier | BabelNodeImportNamespaceSpecifier>, source: BabelNodeStringLiteral): BabelNodeImportDeclaration;
+ declare export function importDefaultSpecifier(local: BabelNodeIdentifier): BabelNodeImportDefaultSpecifier;
+ declare export function importNamespaceSpecifier(local: BabelNodeIdentifier): BabelNodeImportNamespaceSpecifier;
+ declare export function importSpecifier(local: BabelNodeIdentifier, imported: BabelNodeIdentifier | BabelNodeStringLiteral): BabelNodeImportSpecifier;
+ declare export function metaProperty(meta: BabelNodeIdentifier, property: BabelNodeIdentifier): BabelNodeMetaProperty;
+ declare export function classMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement, computed?: boolean, _static?: boolean, generator?: boolean, async?: boolean): BabelNodeClassMethod;
+ declare export function objectPattern(properties: Array<BabelNodeRestElement | BabelNodeObjectProperty>): BabelNodeObjectPattern;
+ declare export function spreadElement(argument: BabelNodeExpression): BabelNodeSpreadElement;
+ declare function _super(): BabelNodeSuper;
+ declare export { _super as super }
+ declare export function taggedTemplateExpression(tag: BabelNodeExpression, quasi: BabelNodeTemplateLiteral): BabelNodeTaggedTemplateExpression;
+ declare export function templateElement(value: { raw: string, cooked?: string }, tail?: boolean): BabelNodeTemplateElement;
+ declare export function templateLiteral(quasis: Array<BabelNodeTemplateElement>, expressions: Array<BabelNodeExpression | BabelNodeTSType>): BabelNodeTemplateLiteral;
+ declare export function yieldExpression(argument?: BabelNodeExpression, delegate?: boolean): BabelNodeYieldExpression;
+ declare export function awaitExpression(argument: BabelNodeExpression): BabelNodeAwaitExpression;
+ declare function _import(): BabelNodeImport;
+ declare export { _import as import }
+ declare export function bigIntLiteral(value: string): BabelNodeBigIntLiteral;
+ declare export function exportNamespaceSpecifier(exported: BabelNodeIdentifier): BabelNodeExportNamespaceSpecifier;
+ declare export function optionalMemberExpression(object: BabelNodeExpression, property: BabelNodeExpression | BabelNodeIdentifier, computed?: boolean, optional: boolean): BabelNodeOptionalMemberExpression;
+ declare export function optionalCallExpression(callee: BabelNodeExpression, _arguments: Array<BabelNodeExpression | BabelNodeSpreadElement | BabelNodeJSXNamespacedName | BabelNodeArgumentPlaceholder>, optional: boolean): BabelNodeOptionalCallExpression;
+ declare export function classProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, value?: BabelNodeExpression, typeAnnotation?: BabelNodeTypeAnnotation | BabelNodeTSTypeAnnotation | BabelNodeNoop, decorators?: Array<BabelNodeDecorator>, computed?: boolean, _static?: boolean): BabelNodeClassProperty;
+ declare export function classPrivateProperty(key: BabelNodePrivateName, value?: BabelNodeExpression, decorators?: Array<BabelNodeDecorator>, _static: any): BabelNodeClassPrivateProperty;
+ declare export function classPrivateMethod(kind?: "get" | "set" | "method" | "constructor", key: BabelNodePrivateName, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, body: BabelNodeBlockStatement, _static?: boolean): BabelNodeClassPrivateMethod;
+ declare export function privateName(id: BabelNodeIdentifier): BabelNodePrivateName;
+ declare export function staticBlock(body: Array<BabelNodeStatement>): BabelNodeStaticBlock;
+ declare export function anyTypeAnnotation(): BabelNodeAnyTypeAnnotation;
+ declare export function arrayTypeAnnotation(elementType: BabelNodeFlowType): BabelNodeArrayTypeAnnotation;
+ declare export function booleanTypeAnnotation(): BabelNodeBooleanTypeAnnotation;
+ declare export function booleanLiteralTypeAnnotation(value: boolean): BabelNodeBooleanLiteralTypeAnnotation;
+ declare export function nullLiteralTypeAnnotation(): BabelNodeNullLiteralTypeAnnotation;
+ declare export function classImplements(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeClassImplements;
+ declare export function declareClass(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeDeclareClass;
+ declare export function declareFunction(id: BabelNodeIdentifier): BabelNodeDeclareFunction;
+ declare export function declareInterface(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeDeclareInterface;
+ declare export function declareModule(id: BabelNodeIdentifier | BabelNodeStringLiteral, body: BabelNodeBlockStatement, kind?: "CommonJS" | "ES"): BabelNodeDeclareModule;
+ declare export function declareModuleExports(typeAnnotation: BabelNodeTypeAnnotation): BabelNodeDeclareModuleExports;
+ declare export function declareTypeAlias(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, right: BabelNodeFlowType): BabelNodeDeclareTypeAlias;
+ declare export function declareOpaqueType(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, supertype?: BabelNodeFlowType): BabelNodeDeclareOpaqueType;
+ declare export function declareVariable(id: BabelNodeIdentifier): BabelNodeDeclareVariable;
+ declare export function declareExportDeclaration(declaration?: BabelNodeFlow, specifiers?: Array<BabelNodeExportSpecifier | BabelNodeExportNamespaceSpecifier>, source?: BabelNodeStringLiteral): BabelNodeDeclareExportDeclaration;
+ declare export function declareExportAllDeclaration(source: BabelNodeStringLiteral): BabelNodeDeclareExportAllDeclaration;
+ declare export function declaredPredicate(value: BabelNodeFlow): BabelNodeDeclaredPredicate;
+ declare export function existsTypeAnnotation(): BabelNodeExistsTypeAnnotation;
+ declare export function functionTypeAnnotation(typeParameters?: BabelNodeTypeParameterDeclaration, params: Array<BabelNodeFunctionTypeParam>, rest?: BabelNodeFunctionTypeParam, returnType: BabelNodeFlowType): BabelNodeFunctionTypeAnnotation;
+ declare export function functionTypeParam(name?: BabelNodeIdentifier, typeAnnotation: BabelNodeFlowType): BabelNodeFunctionTypeParam;
+ declare export function genericTypeAnnotation(id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeGenericTypeAnnotation;
+ declare export function inferredPredicate(): BabelNodeInferredPredicate;
+ declare export function interfaceExtends(id: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier, typeParameters?: BabelNodeTypeParameterInstantiation): BabelNodeInterfaceExtends;
+ declare export function interfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, _extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeInterfaceDeclaration;
+ declare export function interfaceTypeAnnotation(_extends?: Array<BabelNodeInterfaceExtends>, body: BabelNodeObjectTypeAnnotation): BabelNodeInterfaceTypeAnnotation;
+ declare export function intersectionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeIntersectionTypeAnnotation;
+ declare export function mixedTypeAnnotation(): BabelNodeMixedTypeAnnotation;
+ declare export function emptyTypeAnnotation(): BabelNodeEmptyTypeAnnotation;
+ declare export function nullableTypeAnnotation(typeAnnotation: BabelNodeFlowType): BabelNodeNullableTypeAnnotation;
+ declare export function numberLiteralTypeAnnotation(value: number): BabelNodeNumberLiteralTypeAnnotation;
+ declare export function numberTypeAnnotation(): BabelNodeNumberTypeAnnotation;
+ declare export function objectTypeAnnotation(properties: Array<BabelNodeObjectTypeProperty | BabelNodeObjectTypeSpreadProperty>, indexers?: Array<BabelNodeObjectTypeIndexer>, callProperties?: Array<BabelNodeObjectTypeCallProperty>, internalSlots?: Array<BabelNodeObjectTypeInternalSlot>, exact?: boolean): BabelNodeObjectTypeAnnotation;
+ declare export function objectTypeInternalSlot(id: BabelNodeIdentifier, value: BabelNodeFlowType, optional: boolean, _static: boolean, method: boolean): BabelNodeObjectTypeInternalSlot;
+ declare export function objectTypeCallProperty(value: BabelNodeFlowType): BabelNodeObjectTypeCallProperty;
+ declare export function objectTypeIndexer(id?: BabelNodeIdentifier, key: BabelNodeFlowType, value: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeObjectTypeIndexer;
+ declare export function objectTypeProperty(key: BabelNodeIdentifier | BabelNodeStringLiteral, value: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeObjectTypeProperty;
+ declare export function objectTypeSpreadProperty(argument: BabelNodeFlowType): BabelNodeObjectTypeSpreadProperty;
+ declare export function opaqueType(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, supertype?: BabelNodeFlowType, impltype: BabelNodeFlowType): BabelNodeOpaqueType;
+ declare export function qualifiedTypeIdentifier(id: BabelNodeIdentifier, qualification: BabelNodeIdentifier | BabelNodeQualifiedTypeIdentifier): BabelNodeQualifiedTypeIdentifier;
+ declare export function stringLiteralTypeAnnotation(value: string): BabelNodeStringLiteralTypeAnnotation;
+ declare export function stringTypeAnnotation(): BabelNodeStringTypeAnnotation;
+ declare export function symbolTypeAnnotation(): BabelNodeSymbolTypeAnnotation;
+ declare export function thisTypeAnnotation(): BabelNodeThisTypeAnnotation;
+ declare export function tupleTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeTupleTypeAnnotation;
+ declare export function typeofTypeAnnotation(argument: BabelNodeFlowType): BabelNodeTypeofTypeAnnotation;
+ declare export function typeAlias(id: BabelNodeIdentifier, typeParameters?: BabelNodeTypeParameterDeclaration, right: BabelNodeFlowType): BabelNodeTypeAlias;
+ declare export function typeAnnotation(typeAnnotation: BabelNodeFlowType): BabelNodeTypeAnnotation;
+ declare export function typeCastExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTypeAnnotation): BabelNodeTypeCastExpression;
+ declare export function typeParameter(bound?: BabelNodeTypeAnnotation, _default?: BabelNodeFlowType, variance?: BabelNodeVariance): BabelNodeTypeParameter;
+ declare export function typeParameterDeclaration(params: Array<BabelNodeTypeParameter>): BabelNodeTypeParameterDeclaration;
+ declare export function typeParameterInstantiation(params: Array<BabelNodeFlowType>): BabelNodeTypeParameterInstantiation;
+ declare export function unionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation;
+ declare export function variance(kind: "minus" | "plus"): BabelNodeVariance;
+ declare export function voidTypeAnnotation(): BabelNodeVoidTypeAnnotation;
+ declare export function enumDeclaration(id: BabelNodeIdentifier, body: BabelNodeEnumBooleanBody | BabelNodeEnumNumberBody | BabelNodeEnumStringBody | BabelNodeEnumSymbolBody): BabelNodeEnumDeclaration;
+ declare export function enumBooleanBody(members: Array<BabelNodeEnumBooleanMember>): BabelNodeEnumBooleanBody;
+ declare export function enumNumberBody(members: Array<BabelNodeEnumNumberMember>): BabelNodeEnumNumberBody;
+ declare export function enumStringBody(members: Array<BabelNodeEnumStringMember | BabelNodeEnumDefaultedMember>): BabelNodeEnumStringBody;
+ declare export function enumSymbolBody(members: Array<BabelNodeEnumDefaultedMember>): BabelNodeEnumSymbolBody;
+ declare export function enumBooleanMember(id: BabelNodeIdentifier): BabelNodeEnumBooleanMember;
+ declare export function enumNumberMember(id: BabelNodeIdentifier, init: BabelNodeNumericLiteral): BabelNodeEnumNumberMember;
+ declare export function enumStringMember(id: BabelNodeIdentifier, init: BabelNodeStringLiteral): BabelNodeEnumStringMember;
+ declare export function enumDefaultedMember(id: BabelNodeIdentifier): BabelNodeEnumDefaultedMember;
+ declare export function indexedAccessType(objectType: BabelNodeFlowType, indexType: BabelNodeFlowType): BabelNodeIndexedAccessType;
+ declare export function optionalIndexedAccessType(objectType: BabelNodeFlowType, indexType: BabelNodeFlowType): BabelNodeOptionalIndexedAccessType;
+ declare export function jsxAttribute(name: BabelNodeJSXIdentifier | BabelNodeJSXNamespacedName, value?: BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeStringLiteral | BabelNodeJSXExpressionContainer): BabelNodeJSXAttribute;
+ declare export function jsxClosingElement(name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName): BabelNodeJSXClosingElement;
+ declare export function jsxElement(openingElement: BabelNodeJSXOpeningElement, closingElement?: BabelNodeJSXClosingElement, children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>, selfClosing?: boolean): BabelNodeJSXElement;
+ declare export function jsxEmptyExpression(): BabelNodeJSXEmptyExpression;
+ declare export function jsxExpressionContainer(expression: BabelNodeExpression | BabelNodeJSXEmptyExpression): BabelNodeJSXExpressionContainer;
+ declare export function jsxSpreadChild(expression: BabelNodeExpression): BabelNodeJSXSpreadChild;
+ declare export function jsxIdentifier(name: string): BabelNodeJSXIdentifier;
+ declare export function jsxMemberExpression(object: BabelNodeJSXMemberExpression | BabelNodeJSXIdentifier, property: BabelNodeJSXIdentifier): BabelNodeJSXMemberExpression;
+ declare export function jsxNamespacedName(namespace: BabelNodeJSXIdentifier, name: BabelNodeJSXIdentifier): BabelNodeJSXNamespacedName;
+ declare export function jsxOpeningElement(name: BabelNodeJSXIdentifier | BabelNodeJSXMemberExpression | BabelNodeJSXNamespacedName, attributes: Array<BabelNodeJSXAttribute | BabelNodeJSXSpreadAttribute>, selfClosing?: boolean): BabelNodeJSXOpeningElement;
+ declare export function jsxSpreadAttribute(argument: BabelNodeExpression): BabelNodeJSXSpreadAttribute;
+ declare export function jsxText(value: string): BabelNodeJSXText;
+ declare export function jsxFragment(openingFragment: BabelNodeJSXOpeningFragment, closingFragment: BabelNodeJSXClosingFragment, children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>): BabelNodeJSXFragment;
+ declare export function jsxOpeningFragment(): BabelNodeJSXOpeningFragment;
+ declare export function jsxClosingFragment(): BabelNodeJSXClosingFragment;
+ declare export function noop(): BabelNodeNoop;
+ declare export function placeholder(expectedNode: "Identifier" | "StringLiteral" | "Expression" | "Statement" | "Declaration" | "BlockStatement" | "ClassBody" | "Pattern", name: BabelNodeIdentifier): BabelNodePlaceholder;
+ declare export function v8IntrinsicIdentifier(name: string): BabelNodeV8IntrinsicIdentifier;
+ declare export function argumentPlaceholder(): BabelNodeArgumentPlaceholder;
+ declare export function bindExpression(object: BabelNodeExpression, callee: BabelNodeExpression): BabelNodeBindExpression;
+ declare export function importAttribute(key: BabelNodeIdentifier | BabelNodeStringLiteral, value: BabelNodeStringLiteral): BabelNodeImportAttribute;
+ declare export function decorator(expression: BabelNodeExpression): BabelNodeDecorator;
+ declare export function doExpression(body: BabelNodeBlockStatement, async?: boolean): BabelNodeDoExpression;
+ declare export function exportDefaultSpecifier(exported: BabelNodeIdentifier): BabelNodeExportDefaultSpecifier;
+ declare export function recordExpression(properties: Array<BabelNodeObjectProperty | BabelNodeSpreadElement>): BabelNodeRecordExpression;
+ declare export function tupleExpression(elements?: Array<BabelNodeExpression | BabelNodeSpreadElement>): BabelNodeTupleExpression;
+ declare export function decimalLiteral(value: string): BabelNodeDecimalLiteral;
+ declare export function moduleExpression(body: BabelNodeProgram): BabelNodeModuleExpression;
+ declare export function topicReference(): BabelNodeTopicReference;
+ declare export function pipelineTopicExpression(expression: BabelNodeExpression): BabelNodePipelineTopicExpression;
+ declare export function pipelineBareFunction(callee: BabelNodeExpression): BabelNodePipelineBareFunction;
+ declare export function pipelinePrimaryTopicReference(): BabelNodePipelinePrimaryTopicReference;
+ declare export function tsParameterProperty(parameter: BabelNodeIdentifier | BabelNodeAssignmentPattern): BabelNodeTSParameterProperty;
+ declare export function tsDeclareFunction(id?: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement>, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareFunction;
+ declare export function tsDeclareMethod(decorators?: Array<BabelNodeDecorator>, key: BabelNodeIdentifier | BabelNodeStringLiteral | BabelNodeNumericLiteral | BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration | BabelNodeNoop, params: Array<BabelNodeIdentifier | BabelNodePattern | BabelNodeRestElement | BabelNodeTSParameterProperty>, returnType?: BabelNodeTSTypeAnnotation | BabelNodeNoop): BabelNodeTSDeclareMethod;
+ declare export function tsQualifiedName(left: BabelNodeTSEntityName, right: BabelNodeIdentifier): BabelNodeTSQualifiedName;
+ declare export function tsCallSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSCallSignatureDeclaration;
+ declare export function tsConstructSignatureDeclaration(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructSignatureDeclaration;
+ declare export function tsPropertySignature(key: BabelNodeExpression, typeAnnotation?: BabelNodeTSTypeAnnotation, initializer?: BabelNodeExpression): BabelNodeTSPropertySignature;
+ declare export function tsMethodSignature(key: BabelNodeExpression, typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSMethodSignature;
+ declare export function tsIndexSignature(parameters: Array<BabelNodeIdentifier>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSIndexSignature;
+ declare export function tsAnyKeyword(): BabelNodeTSAnyKeyword;
+ declare export function tsBooleanKeyword(): BabelNodeTSBooleanKeyword;
+ declare export function tsBigIntKeyword(): BabelNodeTSBigIntKeyword;
+ declare export function tsIntrinsicKeyword(): BabelNodeTSIntrinsicKeyword;
+ declare export function tsNeverKeyword(): BabelNodeTSNeverKeyword;
+ declare export function tsNullKeyword(): BabelNodeTSNullKeyword;
+ declare export function tsNumberKeyword(): BabelNodeTSNumberKeyword;
+ declare export function tsObjectKeyword(): BabelNodeTSObjectKeyword;
+ declare export function tsStringKeyword(): BabelNodeTSStringKeyword;
+ declare export function tsSymbolKeyword(): BabelNodeTSSymbolKeyword;
+ declare export function tsUndefinedKeyword(): BabelNodeTSUndefinedKeyword;
+ declare export function tsUnknownKeyword(): BabelNodeTSUnknownKeyword;
+ declare export function tsVoidKeyword(): BabelNodeTSVoidKeyword;
+ declare export function tsThisType(): BabelNodeTSThisType;
+ declare export function tsFunctionType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSFunctionType;
+ declare export function tsConstructorType(typeParameters?: BabelNodeTSTypeParameterDeclaration, parameters: Array<BabelNodeIdentifier | BabelNodeRestElement>, typeAnnotation?: BabelNodeTSTypeAnnotation): BabelNodeTSConstructorType;
+ declare export function tsTypeReference(typeName: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSTypeReference;
+ declare export function tsTypePredicate(parameterName: BabelNodeIdentifier | BabelNodeTSThisType, typeAnnotation?: BabelNodeTSTypeAnnotation, asserts?: boolean): BabelNodeTSTypePredicate;
+ declare export function tsTypeQuery(exprName: BabelNodeTSEntityName | BabelNodeTSImportType): BabelNodeTSTypeQuery;
+ declare export function tsTypeLiteral(members: Array<BabelNodeTSTypeElement>): BabelNodeTSTypeLiteral;
+ declare export function tsArrayType(elementType: BabelNodeTSType): BabelNodeTSArrayType;
+ declare export function tsTupleType(elementTypes: Array<BabelNodeTSType | BabelNodeTSNamedTupleMember>): BabelNodeTSTupleType;
+ declare export function tsOptionalType(typeAnnotation: BabelNodeTSType): BabelNodeTSOptionalType;
+ declare export function tsRestType(typeAnnotation: BabelNodeTSType): BabelNodeTSRestType;
+ declare export function tsNamedTupleMember(label: BabelNodeIdentifier, elementType: BabelNodeTSType, optional?: boolean): BabelNodeTSNamedTupleMember;
+ declare export function tsUnionType(types: Array<BabelNodeTSType>): BabelNodeTSUnionType;
+ declare export function tsIntersectionType(types: Array<BabelNodeTSType>): BabelNodeTSIntersectionType;
+ declare export function tsConditionalType(checkType: BabelNodeTSType, extendsType: BabelNodeTSType, trueType: BabelNodeTSType, falseType: BabelNodeTSType): BabelNodeTSConditionalType;
+ declare export function tsInferType(typeParameter: BabelNodeTSTypeParameter): BabelNodeTSInferType;
+ declare export function tsParenthesizedType(typeAnnotation: BabelNodeTSType): BabelNodeTSParenthesizedType;
+ declare export function tsTypeOperator(typeAnnotation: BabelNodeTSType): BabelNodeTSTypeOperator;
+ declare export function tsIndexedAccessType(objectType: BabelNodeTSType, indexType: BabelNodeTSType): BabelNodeTSIndexedAccessType;
+ declare export function tsMappedType(typeParameter: BabelNodeTSTypeParameter, typeAnnotation?: BabelNodeTSType, nameType?: BabelNodeTSType): BabelNodeTSMappedType;
+ declare export function tsLiteralType(literal: BabelNodeNumericLiteral | BabelNodeStringLiteral | BabelNodeBooleanLiteral | BabelNodeBigIntLiteral | BabelNodeUnaryExpression): BabelNodeTSLiteralType;
+ declare export function tsExpressionWithTypeArguments(expression: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSExpressionWithTypeArguments;
+ declare export function tsInterfaceDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, _extends?: Array<BabelNodeTSExpressionWithTypeArguments>, body: BabelNodeTSInterfaceBody): BabelNodeTSInterfaceDeclaration;
+ declare export function tsInterfaceBody(body: Array<BabelNodeTSTypeElement>): BabelNodeTSInterfaceBody;
+ declare export function tsTypeAliasDeclaration(id: BabelNodeIdentifier, typeParameters?: BabelNodeTSTypeParameterDeclaration, typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAliasDeclaration;
+ declare export function tsAsExpression(expression: BabelNodeExpression, typeAnnotation: BabelNodeTSType): BabelNodeTSAsExpression;
+ declare export function tsTypeAssertion(typeAnnotation: BabelNodeTSType, expression: BabelNodeExpression): BabelNodeTSTypeAssertion;
+ declare export function tsEnumDeclaration(id: BabelNodeIdentifier, members: Array<BabelNodeTSEnumMember>): BabelNodeTSEnumDeclaration;
+ declare export function tsEnumMember(id: BabelNodeIdentifier | BabelNodeStringLiteral, initializer?: BabelNodeExpression): BabelNodeTSEnumMember;
+ declare export function tsModuleDeclaration(id: BabelNodeIdentifier | BabelNodeStringLiteral, body: BabelNodeTSModuleBlock | BabelNodeTSModuleDeclaration): BabelNodeTSModuleDeclaration;
+ declare export function tsModuleBlock(body: Array<BabelNodeStatement>): BabelNodeTSModuleBlock;
+ declare export function tsImportType(argument: BabelNodeStringLiteral, qualifier?: BabelNodeTSEntityName, typeParameters?: BabelNodeTSTypeParameterInstantiation): BabelNodeTSImportType;
+ declare export function tsImportEqualsDeclaration(id: BabelNodeIdentifier, moduleReference: BabelNodeTSEntityName | BabelNodeTSExternalModuleReference): BabelNodeTSImportEqualsDeclaration;
+ declare export function tsExternalModuleReference(expression: BabelNodeStringLiteral): BabelNodeTSExternalModuleReference;
+ declare export function tsNonNullExpression(expression: BabelNodeExpression): BabelNodeTSNonNullExpression;
+ declare export function tsExportAssignment(expression: BabelNodeExpression): BabelNodeTSExportAssignment;
+ declare export function tsNamespaceExportDeclaration(id: BabelNodeIdentifier): BabelNodeTSNamespaceExportDeclaration;
+ declare export function tsTypeAnnotation(typeAnnotation: BabelNodeTSType): BabelNodeTSTypeAnnotation;
+ declare export function tsTypeParameterInstantiation(params: Array<BabelNodeTSType>): BabelNodeTSTypeParameterInstantiation;
+ declare export function tsTypeParameterDeclaration(params: Array<BabelNodeTSTypeParameter>): BabelNodeTSTypeParameterDeclaration;
+ declare export function tsTypeParameter(constraint?: BabelNodeTSType, _default?: BabelNodeTSType, name: string): BabelNodeTSTypeParameter;
+ declare export function isArrayExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayExpression)
+ declare export function assertArrayExpression(node: ?Object, opts?: ?Object): void
+ declare export function isAssignmentExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAssignmentExpression)
+ declare export function assertAssignmentExpression(node: ?Object, opts?: ?Object): void
+ declare export function isBinaryExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBinaryExpression)
+ declare export function assertBinaryExpression(node: ?Object, opts?: ?Object): void
+ declare export function isInterpreterDirective(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterpreterDirective)
+ declare export function assertInterpreterDirective(node: ?Object, opts?: ?Object): void
+ declare export function isDirective(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDirective)
+ declare export function assertDirective(node: ?Object, opts?: ?Object): void
+ declare export function isDirectiveLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDirectiveLiteral)
+ declare export function assertDirectiveLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isBlockStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBlockStatement)
+ declare export function assertBlockStatement(node: ?Object, opts?: ?Object): void
+ declare export function isBreakStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBreakStatement)
+ declare export function assertBreakStatement(node: ?Object, opts?: ?Object): void
+ declare export function isCallExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeCallExpression)
+ declare export function assertCallExpression(node: ?Object, opts?: ?Object): void
+ declare export function isCatchClause(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeCatchClause)
+ declare export function assertCatchClause(node: ?Object, opts?: ?Object): void
+ declare export function isConditionalExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeConditionalExpression)
+ declare export function assertConditionalExpression(node: ?Object, opts?: ?Object): void
+ declare export function isContinueStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeContinueStatement)
+ declare export function assertContinueStatement(node: ?Object, opts?: ?Object): void
+ declare export function isDebuggerStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDebuggerStatement)
+ declare export function assertDebuggerStatement(node: ?Object, opts?: ?Object): void
+ declare export function isDoWhileStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDoWhileStatement)
+ declare export function assertDoWhileStatement(node: ?Object, opts?: ?Object): void
+ declare export function isEmptyStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEmptyStatement)
+ declare export function assertEmptyStatement(node: ?Object, opts?: ?Object): void
+ declare export function isExpressionStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExpressionStatement)
+ declare export function assertExpressionStatement(node: ?Object, opts?: ?Object): void
+ declare export function isFile(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFile)
+ declare export function assertFile(node: ?Object, opts?: ?Object): void
+ declare export function isForInStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForInStatement)
+ declare export function assertForInStatement(node: ?Object, opts?: ?Object): void
+ declare export function isForStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForStatement)
+ declare export function assertForStatement(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionDeclaration)
+ declare export function assertFunctionDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionExpression)
+ declare export function assertFunctionExpression(node: ?Object, opts?: ?Object): void
+ declare export function isIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIdentifier)
+ declare export function assertIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isIfStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIfStatement)
+ declare export function assertIfStatement(node: ?Object, opts?: ?Object): void
+ declare export function isLabeledStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeLabeledStatement)
+ declare export function assertLabeledStatement(node: ?Object, opts?: ?Object): void
+ declare export function isStringLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringLiteral)
+ declare export function assertStringLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isNumericLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumericLiteral)
+ declare export function assertNumericLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isNullLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullLiteral)
+ declare export function assertNullLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isBooleanLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanLiteral)
+ declare export function assertBooleanLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isRegExpLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRegExpLiteral)
+ declare export function assertRegExpLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isLogicalExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeLogicalExpression)
+ declare export function assertLogicalExpression(node: ?Object, opts?: ?Object): void
+ declare export function isMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMemberExpression)
+ declare export function assertMemberExpression(node: ?Object, opts?: ?Object): void
+ declare export function isNewExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNewExpression)
+ declare export function assertNewExpression(node: ?Object, opts?: ?Object): void
+ declare export function isProgram(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeProgram)
+ declare export function assertProgram(node: ?Object, opts?: ?Object): void
+ declare export function isObjectExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectExpression)
+ declare export function assertObjectExpression(node: ?Object, opts?: ?Object): void
+ declare export function isObjectMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectMethod)
+ declare export function assertObjectMethod(node: ?Object, opts?: ?Object): void
+ declare export function isObjectProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectProperty)
+ declare export function assertObjectProperty(node: ?Object, opts?: ?Object): void
+ declare export function isRestElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRestElement)
+ declare export function assertRestElement(node: ?Object, opts?: ?Object): void
+ declare export function isReturnStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeReturnStatement)
+ declare export function assertReturnStatement(node: ?Object, opts?: ?Object): void
+ declare export function isSequenceExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSequenceExpression)
+ declare export function assertSequenceExpression(node: ?Object, opts?: ?Object): void
+ declare export function isParenthesizedExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeParenthesizedExpression)
+ declare export function assertParenthesizedExpression(node: ?Object, opts?: ?Object): void
+ declare export function isSwitchCase(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSwitchCase)
+ declare export function assertSwitchCase(node: ?Object, opts?: ?Object): void
+ declare export function isSwitchStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSwitchStatement)
+ declare export function assertSwitchStatement(node: ?Object, opts?: ?Object): void
+ declare export function isThisExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThisExpression)
+ declare export function assertThisExpression(node: ?Object, opts?: ?Object): void
+ declare export function isThrowStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThrowStatement)
+ declare export function assertThrowStatement(node: ?Object, opts?: ?Object): void
+ declare export function isTryStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTryStatement)
+ declare export function assertTryStatement(node: ?Object, opts?: ?Object): void
+ declare export function isUnaryExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUnaryExpression)
+ declare export function assertUnaryExpression(node: ?Object, opts?: ?Object): void
+ declare export function isUpdateExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUpdateExpression)
+ declare export function assertUpdateExpression(node: ?Object, opts?: ?Object): void
+ declare export function isVariableDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariableDeclaration)
+ declare export function assertVariableDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isVariableDeclarator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariableDeclarator)
+ declare export function assertVariableDeclarator(node: ?Object, opts?: ?Object): void
+ declare export function isWhileStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeWhileStatement)
+ declare export function assertWhileStatement(node: ?Object, opts?: ?Object): void
+ declare export function isWithStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeWithStatement)
+ declare export function assertWithStatement(node: ?Object, opts?: ?Object): void
+ declare export function isAssignmentPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAssignmentPattern)
+ declare export function assertAssignmentPattern(node: ?Object, opts?: ?Object): void
+ declare export function isArrayPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayPattern)
+ declare export function assertArrayPattern(node: ?Object, opts?: ?Object): void
+ declare export function isArrowFunctionExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrowFunctionExpression)
+ declare export function assertArrowFunctionExpression(node: ?Object, opts?: ?Object): void
+ declare export function isClassBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassBody)
+ declare export function assertClassBody(node: ?Object, opts?: ?Object): void
+ declare export function isClassExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassExpression)
+ declare export function assertClassExpression(node: ?Object, opts?: ?Object): void
+ declare export function isClassDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassDeclaration)
+ declare export function assertClassDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportAllDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportAllDeclaration)
+ declare export function assertExportAllDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportDefaultDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportDefaultDeclaration)
+ declare export function assertExportDefaultDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportNamedDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportNamedDeclaration)
+ declare export function assertExportNamedDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportSpecifier)
+ declare export function assertExportSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isForOfStatement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeForOfStatement)
+ declare export function assertForOfStatement(node: ?Object, opts?: ?Object): void
+ declare export function isImportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportDeclaration)
+ declare export function assertImportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isImportDefaultSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportDefaultSpecifier)
+ declare export function assertImportDefaultSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isImportNamespaceSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportNamespaceSpecifier)
+ declare export function assertImportNamespaceSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isImportSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportSpecifier)
+ declare export function assertImportSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isMetaProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMetaProperty)
+ declare export function assertMetaProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassMethod)
+ declare export function assertClassMethod(node: ?Object, opts?: ?Object): void
+ declare export function isObjectPattern(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectPattern)
+ declare export function assertObjectPattern(node: ?Object, opts?: ?Object): void
+ declare export function isSpreadElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSpreadElement)
+ declare export function assertSpreadElement(node: ?Object, opts?: ?Object): void
+ declare export function isSuper(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSuper)
+ declare export function assertSuper(node: ?Object, opts?: ?Object): void
+ declare export function isTaggedTemplateExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTaggedTemplateExpression)
+ declare export function assertTaggedTemplateExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTemplateElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTemplateElement)
+ declare export function assertTemplateElement(node: ?Object, opts?: ?Object): void
+ declare export function isTemplateLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTemplateLiteral)
+ declare export function assertTemplateLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isYieldExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeYieldExpression)
+ declare export function assertYieldExpression(node: ?Object, opts?: ?Object): void
+ declare export function isAwaitExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAwaitExpression)
+ declare export function assertAwaitExpression(node: ?Object, opts?: ?Object): void
+ declare export function isImport(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImport)
+ declare export function assertImport(node: ?Object, opts?: ?Object): void
+ declare export function isBigIntLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBigIntLiteral)
+ declare export function assertBigIntLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isExportNamespaceSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportNamespaceSpecifier)
+ declare export function assertExportNamespaceSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isOptionalMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalMemberExpression)
+ declare export function assertOptionalMemberExpression(node: ?Object, opts?: ?Object): void
+ declare export function isOptionalCallExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalCallExpression)
+ declare export function assertOptionalCallExpression(node: ?Object, opts?: ?Object): void
+ declare export function isClassProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassProperty)
+ declare export function assertClassProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassPrivateProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassPrivateProperty)
+ declare export function assertClassPrivateProperty(node: ?Object, opts?: ?Object): void
+ declare export function isClassPrivateMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassPrivateMethod)
+ declare export function assertClassPrivateMethod(node: ?Object, opts?: ?Object): void
+ declare export function isPrivateName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePrivateName)
+ declare export function assertPrivateName(node: ?Object, opts?: ?Object): void
+ declare export function isStaticBlock(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStaticBlock)
+ declare export function assertStaticBlock(node: ?Object, opts?: ?Object): void
+ declare export function isAnyTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeAnyTypeAnnotation)
+ declare export function assertAnyTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isArrayTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArrayTypeAnnotation)
+ declare export function assertArrayTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isBooleanTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanTypeAnnotation)
+ declare export function assertBooleanTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isBooleanLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBooleanLiteralTypeAnnotation)
+ declare export function assertBooleanLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNullLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullLiteralTypeAnnotation)
+ declare export function assertNullLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isClassImplements(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeClassImplements)
+ declare export function assertClassImplements(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareClass(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareClass)
+ declare export function assertDeclareClass(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareFunction)
+ declare export function assertDeclareFunction(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareInterface(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareInterface)
+ declare export function assertDeclareInterface(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareModule(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareModule)
+ declare export function assertDeclareModule(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareModuleExports(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareModuleExports)
+ declare export function assertDeclareModuleExports(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareTypeAlias(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareTypeAlias)
+ declare export function assertDeclareTypeAlias(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareOpaqueType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareOpaqueType)
+ declare export function assertDeclareOpaqueType(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareVariable(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareVariable)
+ declare export function assertDeclareVariable(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareExportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareExportDeclaration)
+ declare export function assertDeclareExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isDeclareExportAllDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclareExportAllDeclaration)
+ declare export function assertDeclareExportAllDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isDeclaredPredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDeclaredPredicate)
+ declare export function assertDeclaredPredicate(node: ?Object, opts?: ?Object): void
+ declare export function isExistsTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExistsTypeAnnotation)
+ declare export function assertExistsTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionTypeAnnotation)
+ declare export function assertFunctionTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionTypeParam(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeFunctionTypeParam)
+ declare export function assertFunctionTypeParam(node: ?Object, opts?: ?Object): void
+ declare export function isGenericTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeGenericTypeAnnotation)
+ declare export function assertGenericTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isInferredPredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInferredPredicate)
+ declare export function assertInferredPredicate(node: ?Object, opts?: ?Object): void
+ declare export function isInterfaceExtends(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceExtends)
+ declare export function assertInterfaceExtends(node: ?Object, opts?: ?Object): void
+ declare export function isInterfaceDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceDeclaration)
+ declare export function assertInterfaceDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isInterfaceTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeInterfaceTypeAnnotation)
+ declare export function assertInterfaceTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isIntersectionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIntersectionTypeAnnotation)
+ declare export function assertIntersectionTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isMixedTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeMixedTypeAnnotation)
+ declare export function assertMixedTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isEmptyTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEmptyTypeAnnotation)
+ declare export function assertEmptyTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNullableTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNullableTypeAnnotation)
+ declare export function assertNullableTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNumberLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumberLiteralTypeAnnotation)
+ declare export function assertNumberLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isNumberTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumberTypeAnnotation)
+ declare export function assertNumberTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeAnnotation)
+ declare export function assertObjectTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeInternalSlot(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeInternalSlot)
+ declare export function assertObjectTypeInternalSlot(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeCallProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeCallProperty)
+ declare export function assertObjectTypeCallProperty(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeIndexer(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeIndexer)
+ declare export function assertObjectTypeIndexer(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeProperty)
+ declare export function assertObjectTypeProperty(node: ?Object, opts?: ?Object): void
+ declare export function isObjectTypeSpreadProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeObjectTypeSpreadProperty)
+ declare export function assertObjectTypeSpreadProperty(node: ?Object, opts?: ?Object): void
+ declare export function isOpaqueType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOpaqueType)
+ declare export function assertOpaqueType(node: ?Object, opts?: ?Object): void
+ declare export function isQualifiedTypeIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeQualifiedTypeIdentifier)
+ declare export function assertQualifiedTypeIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isStringLiteralTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringLiteralTypeAnnotation)
+ declare export function assertStringLiteralTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isStringTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeStringTypeAnnotation)
+ declare export function assertStringTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isSymbolTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSymbolTypeAnnotation)
+ declare export function assertSymbolTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isThisTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeThisTypeAnnotation)
+ declare export function assertThisTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTupleTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTupleTypeAnnotation)
+ declare export function assertTupleTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTypeofTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeofTypeAnnotation)
+ declare export function assertTypeofTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTypeAlias(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeAlias)
+ declare export function assertTypeAlias(node: ?Object, opts?: ?Object): void
+ declare export function isTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeAnnotation)
+ declare export function assertTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTypeCastExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeCastExpression)
+ declare export function assertTypeCastExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTypeParameter(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameter)
+ declare export function assertTypeParameter(node: ?Object, opts?: ?Object): void
+ declare export function isTypeParameterDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameterDeclaration)
+ declare export function assertTypeParameterDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTypeParameterInstantiation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTypeParameterInstantiation)
+ declare export function assertTypeParameterInstantiation(node: ?Object, opts?: ?Object): void
+ declare export function isUnionTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeUnionTypeAnnotation)
+ declare export function assertUnionTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isVariance(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVariance)
+ declare export function assertVariance(node: ?Object, opts?: ?Object): void
+ declare export function isVoidTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeVoidTypeAnnotation)
+ declare export function assertVoidTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumDeclaration)
+ declare export function assertEnumDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isEnumBooleanBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumBooleanBody)
+ declare export function assertEnumBooleanBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumNumberBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumNumberBody)
+ declare export function assertEnumNumberBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumStringBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumStringBody)
+ declare export function assertEnumStringBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumSymbolBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumSymbolBody)
+ declare export function assertEnumSymbolBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumBooleanMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumBooleanMember)
+ declare export function assertEnumBooleanMember(node: ?Object, opts?: ?Object): void
+ declare export function isEnumNumberMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumNumberMember)
+ declare export function assertEnumNumberMember(node: ?Object, opts?: ?Object): void
+ declare export function isEnumStringMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumStringMember)
+ declare export function assertEnumStringMember(node: ?Object, opts?: ?Object): void
+ declare export function isEnumDefaultedMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeEnumDefaultedMember)
+ declare export function assertEnumDefaultedMember(node: ?Object, opts?: ?Object): void
+ declare export function isIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeIndexedAccessType)
+ declare export function assertIndexedAccessType(node: ?Object, opts?: ?Object): void
+ declare export function isOptionalIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeOptionalIndexedAccessType)
+ declare export function assertOptionalIndexedAccessType(node: ?Object, opts?: ?Object): void
+ declare export function isJSXAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXAttribute)
+ declare export function assertJSXAttribute(node: ?Object, opts?: ?Object): void
+ declare export function isJSXClosingElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXClosingElement)
+ declare export function assertJSXClosingElement(node: ?Object, opts?: ?Object): void
+ declare export function isJSXElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXElement)
+ declare export function assertJSXElement(node: ?Object, opts?: ?Object): void
+ declare export function isJSXEmptyExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXEmptyExpression)
+ declare export function assertJSXEmptyExpression(node: ?Object, opts?: ?Object): void
+ declare export function isJSXExpressionContainer(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXExpressionContainer)
+ declare export function assertJSXExpressionContainer(node: ?Object, opts?: ?Object): void
+ declare export function isJSXSpreadChild(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXSpreadChild)
+ declare export function assertJSXSpreadChild(node: ?Object, opts?: ?Object): void
+ declare export function isJSXIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXIdentifier)
+ declare export function assertJSXIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isJSXMemberExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXMemberExpression)
+ declare export function assertJSXMemberExpression(node: ?Object, opts?: ?Object): void
+ declare export function isJSXNamespacedName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXNamespacedName)
+ declare export function assertJSXNamespacedName(node: ?Object, opts?: ?Object): void
+ declare export function isJSXOpeningElement(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXOpeningElement)
+ declare export function assertJSXOpeningElement(node: ?Object, opts?: ?Object): void
+ declare export function isJSXSpreadAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXSpreadAttribute)
+ declare export function assertJSXSpreadAttribute(node: ?Object, opts?: ?Object): void
+ declare export function isJSXText(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXText)
+ declare export function assertJSXText(node: ?Object, opts?: ?Object): void
+ declare export function isJSXFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXFragment)
+ declare export function assertJSXFragment(node: ?Object, opts?: ?Object): void
+ declare export function isJSXOpeningFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXOpeningFragment)
+ declare export function assertJSXOpeningFragment(node: ?Object, opts?: ?Object): void
+ declare export function isJSXClosingFragment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeJSXClosingFragment)
+ declare export function assertJSXClosingFragment(node: ?Object, opts?: ?Object): void
+ declare export function isNoop(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNoop)
+ declare export function assertNoop(node: ?Object, opts?: ?Object): void
+ declare export function isPlaceholder(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePlaceholder)
+ declare export function assertPlaceholder(node: ?Object, opts?: ?Object): void
+ declare export function isV8IntrinsicIdentifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeV8IntrinsicIdentifier)
+ declare export function assertV8IntrinsicIdentifier(node: ?Object, opts?: ?Object): void
+ declare export function isArgumentPlaceholder(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeArgumentPlaceholder)
+ declare export function assertArgumentPlaceholder(node: ?Object, opts?: ?Object): void
+ declare export function isBindExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeBindExpression)
+ declare export function assertBindExpression(node: ?Object, opts?: ?Object): void
+ declare export function isImportAttribute(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeImportAttribute)
+ declare export function assertImportAttribute(node: ?Object, opts?: ?Object): void
+ declare export function isDecorator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDecorator)
+ declare export function assertDecorator(node: ?Object, opts?: ?Object): void
+ declare export function isDoExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDoExpression)
+ declare export function assertDoExpression(node: ?Object, opts?: ?Object): void
+ declare export function isExportDefaultSpecifier(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeExportDefaultSpecifier)
+ declare export function assertExportDefaultSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isRecordExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRecordExpression)
+ declare export function assertRecordExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTupleExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTupleExpression)
+ declare export function assertTupleExpression(node: ?Object, opts?: ?Object): void
+ declare export function isDecimalLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeDecimalLiteral)
+ declare export function assertDecimalLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isModuleExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeModuleExpression)
+ declare export function assertModuleExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTopicReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTopicReference)
+ declare export function assertTopicReference(node: ?Object, opts?: ?Object): void
+ declare export function isPipelineTopicExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelineTopicExpression)
+ declare export function assertPipelineTopicExpression(node: ?Object, opts?: ?Object): void
+ declare export function isPipelineBareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelineBareFunction)
+ declare export function assertPipelineBareFunction(node: ?Object, opts?: ?Object): void
+ declare export function isPipelinePrimaryTopicReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodePipelinePrimaryTopicReference)
+ declare export function assertPipelinePrimaryTopicReference(node: ?Object, opts?: ?Object): void
+ declare export function isTSParameterProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSParameterProperty)
+ declare export function assertTSParameterProperty(node: ?Object, opts?: ?Object): void
+ declare export function isTSDeclareFunction(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSDeclareFunction)
+ declare export function assertTSDeclareFunction(node: ?Object, opts?: ?Object): void
+ declare export function isTSDeclareMethod(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSDeclareMethod)
+ declare export function assertTSDeclareMethod(node: ?Object, opts?: ?Object): void
+ declare export function isTSQualifiedName(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSQualifiedName)
+ declare export function assertTSQualifiedName(node: ?Object, opts?: ?Object): void
+ declare export function isTSCallSignatureDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSCallSignatureDeclaration)
+ declare export function assertTSCallSignatureDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSConstructSignatureDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConstructSignatureDeclaration)
+ declare export function assertTSConstructSignatureDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSPropertySignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSPropertySignature)
+ declare export function assertTSPropertySignature(node: ?Object, opts?: ?Object): void
+ declare export function isTSMethodSignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSMethodSignature)
+ declare export function assertTSMethodSignature(node: ?Object, opts?: ?Object): void
+ declare export function isTSIndexSignature(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIndexSignature)
+ declare export function assertTSIndexSignature(node: ?Object, opts?: ?Object): void
+ declare export function isTSAnyKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAnyKeyword)
+ declare export function assertTSAnyKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSBooleanKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSBooleanKeyword)
+ declare export function assertTSBooleanKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSBigIntKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSBigIntKeyword)
+ declare export function assertTSBigIntKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSIntrinsicKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIntrinsicKeyword)
+ declare export function assertTSIntrinsicKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSNeverKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNeverKeyword)
+ declare export function assertTSNeverKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSNullKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNullKeyword)
+ declare export function assertTSNullKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSNumberKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNumberKeyword)
+ declare export function assertTSNumberKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSObjectKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSObjectKeyword)
+ declare export function assertTSObjectKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSStringKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSStringKeyword)
+ declare export function assertTSStringKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSSymbolKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSSymbolKeyword)
+ declare export function assertTSSymbolKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSUndefinedKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUndefinedKeyword)
+ declare export function assertTSUndefinedKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSUnknownKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUnknownKeyword)
+ declare export function assertTSUnknownKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSVoidKeyword(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSVoidKeyword)
+ declare export function assertTSVoidKeyword(node: ?Object, opts?: ?Object): void
+ declare export function isTSThisType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSThisType)
+ declare export function assertTSThisType(node: ?Object, opts?: ?Object): void
+ declare export function isTSFunctionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSFunctionType)
+ declare export function assertTSFunctionType(node: ?Object, opts?: ?Object): void
+ declare export function isTSConstructorType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConstructorType)
+ declare export function assertTSConstructorType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeReference)
+ declare export function assertTSTypeReference(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypePredicate(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypePredicate)
+ declare export function assertTSTypePredicate(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeQuery(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeQuery)
+ declare export function assertTSTypeQuery(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeLiteral)
+ declare export function assertTSTypeLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isTSArrayType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSArrayType)
+ declare export function assertTSArrayType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTupleType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTupleType)
+ declare export function assertTSTupleType(node: ?Object, opts?: ?Object): void
+ declare export function isTSOptionalType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSOptionalType)
+ declare export function assertTSOptionalType(node: ?Object, opts?: ?Object): void
+ declare export function isTSRestType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSRestType)
+ declare export function assertTSRestType(node: ?Object, opts?: ?Object): void
+ declare export function isTSNamedTupleMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNamedTupleMember)
+ declare export function assertTSNamedTupleMember(node: ?Object, opts?: ?Object): void
+ declare export function isTSUnionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSUnionType)
+ declare export function assertTSUnionType(node: ?Object, opts?: ?Object): void
+ declare export function isTSIntersectionType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIntersectionType)
+ declare export function assertTSIntersectionType(node: ?Object, opts?: ?Object): void
+ declare export function isTSConditionalType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSConditionalType)
+ declare export function assertTSConditionalType(node: ?Object, opts?: ?Object): void
+ declare export function isTSInferType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInferType)
+ declare export function assertTSInferType(node: ?Object, opts?: ?Object): void
+ declare export function isTSParenthesizedType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSParenthesizedType)
+ declare export function assertTSParenthesizedType(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeOperator(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeOperator)
+ declare export function assertTSTypeOperator(node: ?Object, opts?: ?Object): void
+ declare export function isTSIndexedAccessType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSIndexedAccessType)
+ declare export function assertTSIndexedAccessType(node: ?Object, opts?: ?Object): void
+ declare export function isTSMappedType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSMappedType)
+ declare export function assertTSMappedType(node: ?Object, opts?: ?Object): void
+ declare export function isTSLiteralType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSLiteralType)
+ declare export function assertTSLiteralType(node: ?Object, opts?: ?Object): void
+ declare export function isTSExpressionWithTypeArguments(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExpressionWithTypeArguments)
+ declare export function assertTSExpressionWithTypeArguments(node: ?Object, opts?: ?Object): void
+ declare export function isTSInterfaceDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInterfaceDeclaration)
+ declare export function assertTSInterfaceDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSInterfaceBody(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSInterfaceBody)
+ declare export function assertTSInterfaceBody(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAliasDeclaration)
+ declare export function assertTSTypeAliasDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSAsExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSAsExpression)
+ declare export function assertTSAsExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeAssertion(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAssertion)
+ declare export function assertTSTypeAssertion(node: ?Object, opts?: ?Object): void
+ declare export function isTSEnumDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumDeclaration)
+ declare export function assertTSEnumDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSEnumMember(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSEnumMember)
+ declare export function assertTSEnumMember(node: ?Object, opts?: ?Object): void
+ declare export function isTSModuleDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSModuleDeclaration)
+ declare export function assertTSModuleDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSModuleBlock(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSModuleBlock)
+ declare export function assertTSModuleBlock(node: ?Object, opts?: ?Object): void
+ declare export function isTSImportType(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSImportType)
+ declare export function assertTSImportType(node: ?Object, opts?: ?Object): void
+ declare export function isTSImportEqualsDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSImportEqualsDeclaration)
+ declare export function assertTSImportEqualsDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSExternalModuleReference(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExternalModuleReference)
+ declare export function assertTSExternalModuleReference(node: ?Object, opts?: ?Object): void
+ declare export function isTSNonNullExpression(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNonNullExpression)
+ declare export function assertTSNonNullExpression(node: ?Object, opts?: ?Object): void
+ declare export function isTSExportAssignment(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSExportAssignment)
+ declare export function assertTSExportAssignment(node: ?Object, opts?: ?Object): void
+ declare export function isTSNamespaceExportDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSNamespaceExportDeclaration)
+ declare export function assertTSNamespaceExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeAnnotation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeAnnotation)
+ declare export function assertTSTypeAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeParameterInstantiation(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameterInstantiation)
+ declare export function assertTSTypeParameterInstantiation(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeParameterDeclaration(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameterDeclaration)
+ declare export function assertTSTypeParameterDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeParameter(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeTSTypeParameter)
+ declare export function assertTSTypeParameter(node: ?Object, opts?: ?Object): void
+ declare export function isStandardized(node: ?Object, opts?: ?Object): boolean
+ declare export function assertStandardized(node: ?Object, opts?: ?Object): void
+ declare export function isExpression(node: ?Object, opts?: ?Object): boolean
+ declare export function assertExpression(node: ?Object, opts?: ?Object): void
+ declare export function isBinary(node: ?Object, opts?: ?Object): boolean
+ declare export function assertBinary(node: ?Object, opts?: ?Object): void
+ declare export function isScopable(node: ?Object, opts?: ?Object): boolean
+ declare export function assertScopable(node: ?Object, opts?: ?Object): void
+ declare export function isBlockParent(node: ?Object, opts?: ?Object): boolean
+ declare export function assertBlockParent(node: ?Object, opts?: ?Object): void
+ declare export function isBlock(node: ?Object, opts?: ?Object): boolean
+ declare export function assertBlock(node: ?Object, opts?: ?Object): void
+ declare export function isStatement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertStatement(node: ?Object, opts?: ?Object): void
+ declare export function isTerminatorless(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTerminatorless(node: ?Object, opts?: ?Object): void
+ declare export function isCompletionStatement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertCompletionStatement(node: ?Object, opts?: ?Object): void
+ declare export function isConditional(node: ?Object, opts?: ?Object): boolean
+ declare export function assertConditional(node: ?Object, opts?: ?Object): void
+ declare export function isLoop(node: ?Object, opts?: ?Object): boolean
+ declare export function assertLoop(node: ?Object, opts?: ?Object): void
+ declare export function isWhile(node: ?Object, opts?: ?Object): boolean
+ declare export function assertWhile(node: ?Object, opts?: ?Object): void
+ declare export function isExpressionWrapper(node: ?Object, opts?: ?Object): boolean
+ declare export function assertExpressionWrapper(node: ?Object, opts?: ?Object): void
+ declare export function isFor(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFor(node: ?Object, opts?: ?Object): void
+ declare export function isForXStatement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertForXStatement(node: ?Object, opts?: ?Object): void
+ declare export function isFunction(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFunction(node: ?Object, opts?: ?Object): void
+ declare export function isFunctionParent(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFunctionParent(node: ?Object, opts?: ?Object): void
+ declare export function isPureish(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPureish(node: ?Object, opts?: ?Object): void
+ declare export function isDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isPatternLike(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPatternLike(node: ?Object, opts?: ?Object): void
+ declare export function isLVal(node: ?Object, opts?: ?Object): boolean
+ declare export function assertLVal(node: ?Object, opts?: ?Object): void
+ declare export function isTSEntityName(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSEntityName(node: ?Object, opts?: ?Object): void
+ declare export function isLiteral(node: ?Object, opts?: ?Object): boolean
+ declare export function assertLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isImmutable(node: ?Object, opts?: ?Object): boolean
+ declare export function assertImmutable(node: ?Object, opts?: ?Object): void
+ declare export function isUserWhitespacable(node: ?Object, opts?: ?Object): boolean
+ declare export function assertUserWhitespacable(node: ?Object, opts?: ?Object): void
+ declare export function isMethod(node: ?Object, opts?: ?Object): boolean
+ declare export function assertMethod(node: ?Object, opts?: ?Object): void
+ declare export function isObjectMember(node: ?Object, opts?: ?Object): boolean
+ declare export function assertObjectMember(node: ?Object, opts?: ?Object): void
+ declare export function isProperty(node: ?Object, opts?: ?Object): boolean
+ declare export function assertProperty(node: ?Object, opts?: ?Object): void
+ declare export function isUnaryLike(node: ?Object, opts?: ?Object): boolean
+ declare export function assertUnaryLike(node: ?Object, opts?: ?Object): void
+ declare export function isPattern(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPattern(node: ?Object, opts?: ?Object): void
+ declare export function isClass(node: ?Object, opts?: ?Object): boolean
+ declare export function assertClass(node: ?Object, opts?: ?Object): void
+ declare export function isModuleDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertModuleDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isExportDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertExportDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isModuleSpecifier(node: ?Object, opts?: ?Object): boolean
+ declare export function assertModuleSpecifier(node: ?Object, opts?: ?Object): void
+ declare export function isPrivate(node: ?Object, opts?: ?Object): boolean
+ declare export function assertPrivate(node: ?Object, opts?: ?Object): void
+ declare export function isFlow(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlow(node: ?Object, opts?: ?Object): void
+ declare export function isFlowType(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowType(node: ?Object, opts?: ?Object): void
+ declare export function isFlowBaseAnnotation(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowBaseAnnotation(node: ?Object, opts?: ?Object): void
+ declare export function isFlowDeclaration(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowDeclaration(node: ?Object, opts?: ?Object): void
+ declare export function isFlowPredicate(node: ?Object, opts?: ?Object): boolean
+ declare export function assertFlowPredicate(node: ?Object, opts?: ?Object): void
+ declare export function isEnumBody(node: ?Object, opts?: ?Object): boolean
+ declare export function assertEnumBody(node: ?Object, opts?: ?Object): void
+ declare export function isEnumMember(node: ?Object, opts?: ?Object): boolean
+ declare export function assertEnumMember(node: ?Object, opts?: ?Object): void
+ declare export function isJSX(node: ?Object, opts?: ?Object): boolean
+ declare export function assertJSX(node: ?Object, opts?: ?Object): void
+ declare export function isMiscellaneous(node: ?Object, opts?: ?Object): boolean
+ declare export function assertMiscellaneous(node: ?Object, opts?: ?Object): void
+ declare export function isTypeScript(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTypeScript(node: ?Object, opts?: ?Object): void
+ declare export function isTSTypeElement(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSTypeElement(node: ?Object, opts?: ?Object): void
+ declare export function isTSType(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSType(node: ?Object, opts?: ?Object): void
+ declare export function isTSBaseType(node: ?Object, opts?: ?Object): boolean
+ declare export function assertTSBaseType(node: ?Object, opts?: ?Object): void
+ declare export function isNumberLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeNumericLiteral)
+ declare export function assertNumberLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isRegexLiteral(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRegExpLiteral)
+ declare export function assertRegexLiteral(node: ?Object, opts?: ?Object): void
+ declare export function isRestProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeRestElement)
+ declare export function assertRestProperty(node: ?Object, opts?: ?Object): void
+ declare export function isSpreadProperty(node: ?Object, opts?: ?Object): boolean %checks (node instanceof BabelNodeSpreadElement)
+ declare export function assertSpreadProperty(node: ?Object, opts?: ?Object): void
+ declare export var VISITOR_KEYS: { [type: string]: string[] }
+ declare export function assertNode(obj: any): void
+ declare export function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): BabelNodeTypeAnnotation
+ declare export function createUnionTypeAnnotation(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation
+ declare export function createFlowUnionType(types: Array<BabelNodeFlowType>): BabelNodeUnionTypeAnnotation
+ declare export function buildChildren(node: { children: Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment | BabelNodeJSXEmptyExpression> }): Array<BabelNodeJSXText | BabelNodeJSXExpressionContainer | BabelNodeJSXSpreadChild | BabelNodeJSXElement | BabelNodeJSXFragment>
+ declare export function clone<T>(n: T): T;
+ declare export function cloneDeep<T>(n: T): T;
+ declare export function cloneDeepWithoutLoc<T>(n: T): T;
+ declare export function cloneNode<T>(n: T, deep?: boolean, withoutLoc?: boolean): T;
+ declare export function cloneWithoutLoc<T>(n: T): T;
+ declare type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'
+ declare export function addComment<T: BabelNode>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T
+ declare export function addComments<T: BabelNode>(node: T, type: CommentTypeShorthand, comments: Array<Comment>): T
+ declare export function inheritInnerComments(node: BabelNode, parent: BabelNode): void
+ declare export function inheritLeadingComments(node: BabelNode, parent: BabelNode): void
+ declare export function inheritsComments<T: BabelNode>(node: T, parent: BabelNode): void
+ declare export function inheritTrailingComments(node: BabelNode, parent: BabelNode): void
+ declare export function removeComments<T: BabelNode>(node: T): T
+ declare export function ensureBlock(node: BabelNode, key: string): BabelNodeBlockStatement
+ declare export function toBindingIdentifierName(name?: ?string): string
+ declare export function toBlock(node: BabelNodeStatement | BabelNodeExpression, parent?: BabelNodeFunction | null): BabelNodeBlockStatement
+ declare export function toComputedKey(node: BabelNodeMethod | BabelNodeProperty, key?: BabelNodeExpression | BabelNodeIdentifier): BabelNodeExpression
+ declare export function toExpression(node: BabelNodeExpressionStatement | BabelNodeExpression | BabelNodeClass | BabelNodeFunction): BabelNodeExpression
+ declare export function toIdentifier(name?: ?string): string
+ declare export function toKeyAlias(node: BabelNodeMethod | BabelNodeProperty, key?: BabelNode): string
+ declare export function toStatement(node: BabelNodeStatement | BabelNodeClass | BabelNodeFunction | BabelNodeAssignmentExpression, ignore?: boolean): BabelNodeStatement | void
+ declare export function valueToNode(value: any): BabelNodeExpression
+ declare export function removeTypeDuplicates(types: Array<BabelNodeFlowType>): Array<BabelNodeFlowType>
+ declare export function appendToMemberExpression(member: BabelNodeMemberExpression, append: BabelNode, computed?: boolean): BabelNodeMemberExpression
+ declare export function inherits<T: BabelNode>(child: T, parent: BabelNode | null | void): T
+ declare export function prependToMemberExpression(member: BabelNodeMemberExpression, prepend: BabelNodeExpression): BabelNodeMemberExpression
+ declare export function removeProperties<T>(n: T, opts: ?{}): void;
+ declare export function removePropertiesDeep<T>(n: T, opts: ?{}): T;
+ declare export var getBindingIdentifiers: {
+ (node: BabelNode, duplicates?: boolean, outerOnly?: boolean): { [key: string]: BabelNodeIdentifier | Array<BabelNodeIdentifier> },
+ keys: { [type: string]: string[] }
+ }
+ declare export function getOuterBindingIdentifiers(node: BabelNode, duplicates?: boolean): { [key: string]: BabelNodeIdentifier | Array<BabelNodeIdentifier> }
+ declare type TraversalAncestors = Array<{
+ node: BabelNode,
+ key: string,
+ index?: number,
+ }>;
+ declare type TraversalHandler<T> = (BabelNode, TraversalAncestors, T) => void;
+ declare type TraversalHandlers<T> = {
+ enter?: TraversalHandler<T>,
+ exit?: TraversalHandler<T>,
+ };
+ declare export function traverse<T>(n: BabelNode, TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;
+ declare export function traverseFast<T>(n: BabelNode, h: TraversalHandler<T>, state?: T): void;
+ declare export function shallowEqual(actual: Object, expected: Object): boolean
+ declare export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (?BabelNode) => boolean
+ declare export function is(type: string, n: BabelNode, opts: Object): boolean;
+ declare export function isBinding(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean
+ declare export function isBlockScoped(node: BabelNode): boolean
+ declare export function isImmutable(node: BabelNode): boolean
+ declare export function isLet(node: BabelNode): boolean
+ declare export function isNode(node: ?Object): boolean
+ declare export function isNodesEquivalent(a: any, b: any): boolean
+ declare export function isPlaceholderType(placeholderType: string, targetType: string): boolean
+ declare export function isReferenced(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean
+ declare export function isScope(node: BabelNode, parent: BabelNode): boolean
+ declare export function isSpecifierDefault(specifier: BabelNodeModuleSpecifier): boolean
+ declare export function isType(nodetype: ?string, targetType: string): boolean
+ declare export function isValidES3Identifier(name: string): boolean
+ declare export function isValidES3Identifier(name: string): boolean
+ declare export function isValidIdentifier(name: string): boolean
+ declare export function isVar(node: BabelNode): boolean
+ declare export function matchesPattern(node: ?BabelNode, match: string | Array<string>, allowPartial?: boolean): boolean
+ declare export function validate(n: BabelNode, key: string, value: mixed): void;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
new file mode 100644
index 0000000000..6a0ac93c5c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/appendToMemberExpression.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = appendToMemberExpression;
+
+var _generated = require("../builders/generated");
+
+function appendToMemberExpression(member, append, computed = false) {
+ member.object = (0, _generated.memberExpression)(member.object, member.property, member.computed);
+ member.property = append;
+ member.computed = !!computed;
+ return member;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
new file mode 100644
index 0000000000..de9464d167
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/flow/removeTypeDuplicates.js
@@ -0,0 +1,78 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeTypeDuplicates;
+
+var _generated = require("../../validators/generated");
+
+function getQualifiedName(node) {
+ return (0, _generated.isIdentifier)(node) ? node.name : `${node.id.name}.${getQualifiedName(node.qualification)}`;
+}
+
+function removeTypeDuplicates(nodes) {
+ const generics = {};
+ const bases = {};
+ const typeGroups = new Set();
+ const types = [];
+
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+
+ if (types.indexOf(node) >= 0) {
+ continue;
+ }
+
+ if ((0, _generated.isAnyTypeAnnotation)(node)) {
+ return [node];
+ }
+
+ if ((0, _generated.isFlowBaseAnnotation)(node)) {
+ bases[node.type] = node;
+ continue;
+ }
+
+ if ((0, _generated.isUnionTypeAnnotation)(node)) {
+ if (!typeGroups.has(node.types)) {
+ nodes = nodes.concat(node.types);
+ typeGroups.add(node.types);
+ }
+
+ continue;
+ }
+
+ if ((0, _generated.isGenericTypeAnnotation)(node)) {
+ const name = getQualifiedName(node.id);
+
+ if (generics[name]) {
+ let existing = generics[name];
+
+ if (existing.typeParameters) {
+ if (node.typeParameters) {
+ existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params));
+ }
+ } else {
+ existing = node.typeParameters;
+ }
+ } else {
+ generics[name] = node;
+ }
+
+ continue;
+ }
+
+ types.push(node);
+ }
+
+ for (const type of Object.keys(bases)) {
+ types.push(bases[type]);
+ }
+
+ for (const name of Object.keys(generics)) {
+ types.push(generics[name]);
+ }
+
+ return types;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js
new file mode 100644
index 0000000000..8701897d0e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/inherits.js
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inherits;
+
+var _constants = require("../constants");
+
+var _inheritsComments = require("../comments/inheritsComments");
+
+function inherits(child, parent) {
+ if (!child || !parent) return child;
+
+ for (const key of _constants.INHERIT_KEYS.optional) {
+ if (child[key] == null) {
+ child[key] = parent[key];
+ }
+ }
+
+ for (const key of Object.keys(parent)) {
+ if (key[0] === "_" && key !== "__clone") child[key] = parent[key];
+ }
+
+ for (const key of _constants.INHERIT_KEYS.force) {
+ child[key] = parent[key];
+ }
+
+ (0, _inheritsComments.default)(child, parent);
+ return child;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
new file mode 100644
index 0000000000..ee6de0ec33
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/prependToMemberExpression.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = prependToMemberExpression;
+
+var _generated = require("../builders/generated");
+
+function prependToMemberExpression(member, prepend) {
+ member.object = (0, _generated.memberExpression)(prepend, member.object);
+ return member;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js
new file mode 100644
index 0000000000..f9cf8e6065
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removeProperties.js
@@ -0,0 +1,30 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeProperties;
+
+var _constants = require("../constants");
+
+const CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
+
+const CLEAR_KEYS_PLUS_COMMENTS = _constants.COMMENT_KEYS.concat(["comments"]).concat(CLEAR_KEYS);
+
+function removeProperties(node, opts = {}) {
+ const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
+
+ for (const key of map) {
+ if (node[key] != null) node[key] = undefined;
+ }
+
+ for (const key of Object.keys(node)) {
+ if (key[0] === "_" && node[key] != null) node[key] = undefined;
+ }
+
+ const symbols = Object.getOwnPropertySymbols(node);
+
+ for (const sym of symbols) {
+ node[sym] = null;
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
new file mode 100644
index 0000000000..e36f755893
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/removePropertiesDeep.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removePropertiesDeep;
+
+var _traverseFast = require("../traverse/traverseFast");
+
+var _removeProperties = require("./removeProperties");
+
+function removePropertiesDeep(tree, opts) {
+ (0, _traverseFast.default)(tree, _removeProperties.default, opts);
+ return tree;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
new file mode 100644
index 0000000000..25defea7ec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/modifications/typescript/removeTypeDuplicates.js
@@ -0,0 +1,54 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = removeTypeDuplicates;
+
+var _generated = require("../../validators/generated");
+
+function removeTypeDuplicates(nodes) {
+ const generics = {};
+ const bases = {};
+ const typeGroups = new Set();
+ const types = [];
+
+ for (let i = 0; i < nodes.length; i++) {
+ const node = nodes[i];
+ if (!node) continue;
+
+ if (types.indexOf(node) >= 0) {
+ continue;
+ }
+
+ if ((0, _generated.isTSAnyKeyword)(node)) {
+ return [node];
+ }
+
+ if ((0, _generated.isTSBaseType)(node)) {
+ bases[node.type] = node;
+ continue;
+ }
+
+ if ((0, _generated.isTSUnionType)(node)) {
+ if (!typeGroups.has(node.types)) {
+ nodes.push(...node.types);
+ typeGroups.add(node.types);
+ }
+
+ continue;
+ }
+
+ types.push(node);
+ }
+
+ for (const type of Object.keys(bases)) {
+ types.push(bases[type]);
+ }
+
+ for (const name of Object.keys(generics)) {
+ types.push(generics[name]);
+ }
+
+ return types;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
new file mode 100644
index 0000000000..4daaf8bf0f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getBindingIdentifiers.js
@@ -0,0 +1,104 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = getBindingIdentifiers;
+
+var _generated = require("../validators/generated");
+
+function getBindingIdentifiers(node, duplicates, outerOnly) {
+ let search = [].concat(node);
+ const ids = Object.create(null);
+
+ while (search.length) {
+ const id = search.shift();
+ if (!id) continue;
+ const keys = getBindingIdentifiers.keys[id.type];
+
+ if ((0, _generated.isIdentifier)(id)) {
+ if (duplicates) {
+ const _ids = ids[id.name] = ids[id.name] || [];
+
+ _ids.push(id);
+ } else {
+ ids[id.name] = id;
+ }
+
+ continue;
+ }
+
+ if ((0, _generated.isExportDeclaration)(id) && !(0, _generated.isExportAllDeclaration)(id)) {
+ if ((0, _generated.isDeclaration)(id.declaration)) {
+ search.push(id.declaration);
+ }
+
+ continue;
+ }
+
+ if (outerOnly) {
+ if ((0, _generated.isFunctionDeclaration)(id)) {
+ search.push(id.id);
+ continue;
+ }
+
+ if ((0, _generated.isFunctionExpression)(id)) {
+ continue;
+ }
+ }
+
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+
+ if (id[key]) {
+ search = search.concat(id[key]);
+ }
+ }
+ }
+ }
+
+ return ids;
+}
+
+getBindingIdentifiers.keys = {
+ DeclareClass: ["id"],
+ DeclareFunction: ["id"],
+ DeclareModule: ["id"],
+ DeclareVariable: ["id"],
+ DeclareInterface: ["id"],
+ DeclareTypeAlias: ["id"],
+ DeclareOpaqueType: ["id"],
+ InterfaceDeclaration: ["id"],
+ TypeAlias: ["id"],
+ OpaqueType: ["id"],
+ CatchClause: ["param"],
+ LabeledStatement: ["label"],
+ UnaryExpression: ["argument"],
+ AssignmentExpression: ["left"],
+ ImportSpecifier: ["local"],
+ ImportNamespaceSpecifier: ["local"],
+ ImportDefaultSpecifier: ["local"],
+ ImportDeclaration: ["specifiers"],
+ ExportSpecifier: ["exported"],
+ ExportNamespaceSpecifier: ["exported"],
+ ExportDefaultSpecifier: ["exported"],
+ FunctionDeclaration: ["id", "params"],
+ FunctionExpression: ["id", "params"],
+ ArrowFunctionExpression: ["params"],
+ ObjectMethod: ["params"],
+ ClassMethod: ["params"],
+ ClassPrivateMethod: ["params"],
+ ForInStatement: ["left"],
+ ForOfStatement: ["left"],
+ ClassDeclaration: ["id"],
+ ClassExpression: ["id"],
+ RestElement: ["argument"],
+ UpdateExpression: ["argument"],
+ ObjectProperty: ["value"],
+ AssignmentPattern: ["left"],
+ ArrayPattern: ["elements"],
+ ObjectPattern: ["properties"],
+ VariableDeclaration: ["declarations"],
+ VariableDeclarator: ["id"]
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
new file mode 100644
index 0000000000..c27cffe544
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/retrievers/getOuterBindingIdentifiers.js
@@ -0,0 +1,15 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _getBindingIdentifiers = require("./getBindingIdentifiers");
+
+var _default = getOuterBindingIdentifiers;
+exports.default = _default;
+
+function getOuterBindingIdentifiers(node, duplicates) {
+ return (0, _getBindingIdentifiers.default)(node, duplicates, true);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverse.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverse.js
new file mode 100644
index 0000000000..775aed1eed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverse.js
@@ -0,0 +1,55 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = traverse;
+
+var _definitions = require("../definitions");
+
+function traverse(node, handlers, state) {
+ if (typeof handlers === "function") {
+ handlers = {
+ enter: handlers
+ };
+ }
+
+ const {
+ enter,
+ exit
+ } = handlers;
+ traverseSimpleImpl(node, enter, exit, state, []);
+}
+
+function traverseSimpleImpl(node, enter, exit, state, ancestors) {
+ const keys = _definitions.VISITOR_KEYS[node.type];
+ if (!keys) return;
+ if (enter) enter(node, ancestors, state);
+
+ for (const key of keys) {
+ const subNode = node[key];
+
+ if (Array.isArray(subNode)) {
+ for (let i = 0; i < subNode.length; i++) {
+ const child = subNode[i];
+ if (!child) continue;
+ ancestors.push({
+ node,
+ key,
+ index: i
+ });
+ traverseSimpleImpl(child, enter, exit, state, ancestors);
+ ancestors.pop();
+ }
+ } else if (subNode) {
+ ancestors.push({
+ node,
+ key
+ });
+ traverseSimpleImpl(subNode, enter, exit, state, ancestors);
+ ancestors.pop();
+ }
+ }
+
+ if (exit) exit(node, ancestors, state);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverseFast.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverseFast.js
new file mode 100644
index 0000000000..f038dd835e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/traverse/traverseFast.js
@@ -0,0 +1,28 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = traverseFast;
+
+var _definitions = require("../definitions");
+
+function traverseFast(node, enter, opts) {
+ if (!node) return;
+ const keys = _definitions.VISITOR_KEYS[node.type];
+ if (!keys) return;
+ opts = opts || {};
+ enter(node, opts);
+
+ for (const key of keys) {
+ const subNode = node[key];
+
+ if (Array.isArray(subNode)) {
+ for (const node of subNode) {
+ traverseFast(node, enter, opts);
+ }
+ } else {
+ traverseFast(subNode, enter, opts);
+ }
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/inherit.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/inherit.js
new file mode 100644
index 0000000000..35f3381243
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/inherit.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = inherit;
+
+function inherit(key, child, parent) {
+ if (child && parent) {
+ child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean)));
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
new file mode 100644
index 0000000000..f0ca13369b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/react/cleanJSXElementLiteralChild.js
@@ -0,0 +1,47 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = cleanJSXElementLiteralChild;
+
+var _generated = require("../../builders/generated");
+
+function cleanJSXElementLiteralChild(child, args) {
+ const lines = child.value.split(/\r\n|\n|\r/);
+ let lastNonEmptyLine = 0;
+
+ for (let i = 0; i < lines.length; i++) {
+ if (lines[i].match(/[^ \t]/)) {
+ lastNonEmptyLine = i;
+ }
+ }
+
+ let str = "";
+
+ for (let i = 0; i < lines.length; i++) {
+ const line = lines[i];
+ const isFirstLine = i === 0;
+ const isLastLine = i === lines.length - 1;
+ const isLastNonEmptyLine = i === lastNonEmptyLine;
+ let trimmedLine = line.replace(/\t/g, " ");
+
+ if (!isFirstLine) {
+ trimmedLine = trimmedLine.replace(/^[ ]+/, "");
+ }
+
+ if (!isLastLine) {
+ trimmedLine = trimmedLine.replace(/[ ]+$/, "");
+ }
+
+ if (trimmedLine) {
+ if (!isLastNonEmptyLine) {
+ trimmedLine += " ";
+ }
+
+ str += trimmedLine;
+ }
+ }
+
+ if (str) args.push((0, _generated.stringLiteral)(str));
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/shallowEqual.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/shallowEqual.js
new file mode 100644
index 0000000000..fae259e4fc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/shallowEqual.js
@@ -0,0 +1,18 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = shallowEqual;
+
+function shallowEqual(actual, expected) {
+ const keys = Object.keys(expected);
+
+ for (const key of keys) {
+ if (actual[key] !== expected[key]) {
+ return false;
+ }
+ }
+
+ return true;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
new file mode 100644
index 0000000000..c0064968ec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/buildMatchMemberExpression.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = buildMatchMemberExpression;
+
+var _matchesPattern = require("./matchesPattern");
+
+function buildMatchMemberExpression(match, allowPartial) {
+ const parts = match.split(".");
+ return member => (0, _matchesPattern.default)(member, parts, allowPartial);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js
new file mode 100644
index 0000000000..a3d46c38be
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/generated/index.js
@@ -0,0 +1,4779 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.isAnyTypeAnnotation = isAnyTypeAnnotation;
+exports.isArgumentPlaceholder = isArgumentPlaceholder;
+exports.isArrayExpression = isArrayExpression;
+exports.isArrayPattern = isArrayPattern;
+exports.isArrayTypeAnnotation = isArrayTypeAnnotation;
+exports.isArrowFunctionExpression = isArrowFunctionExpression;
+exports.isAssignmentExpression = isAssignmentExpression;
+exports.isAssignmentPattern = isAssignmentPattern;
+exports.isAwaitExpression = isAwaitExpression;
+exports.isBigIntLiteral = isBigIntLiteral;
+exports.isBinary = isBinary;
+exports.isBinaryExpression = isBinaryExpression;
+exports.isBindExpression = isBindExpression;
+exports.isBlock = isBlock;
+exports.isBlockParent = isBlockParent;
+exports.isBlockStatement = isBlockStatement;
+exports.isBooleanLiteral = isBooleanLiteral;
+exports.isBooleanLiteralTypeAnnotation = isBooleanLiteralTypeAnnotation;
+exports.isBooleanTypeAnnotation = isBooleanTypeAnnotation;
+exports.isBreakStatement = isBreakStatement;
+exports.isCallExpression = isCallExpression;
+exports.isCatchClause = isCatchClause;
+exports.isClass = isClass;
+exports.isClassBody = isClassBody;
+exports.isClassDeclaration = isClassDeclaration;
+exports.isClassExpression = isClassExpression;
+exports.isClassImplements = isClassImplements;
+exports.isClassMethod = isClassMethod;
+exports.isClassPrivateMethod = isClassPrivateMethod;
+exports.isClassPrivateProperty = isClassPrivateProperty;
+exports.isClassProperty = isClassProperty;
+exports.isCompletionStatement = isCompletionStatement;
+exports.isConditional = isConditional;
+exports.isConditionalExpression = isConditionalExpression;
+exports.isContinueStatement = isContinueStatement;
+exports.isDebuggerStatement = isDebuggerStatement;
+exports.isDecimalLiteral = isDecimalLiteral;
+exports.isDeclaration = isDeclaration;
+exports.isDeclareClass = isDeclareClass;
+exports.isDeclareExportAllDeclaration = isDeclareExportAllDeclaration;
+exports.isDeclareExportDeclaration = isDeclareExportDeclaration;
+exports.isDeclareFunction = isDeclareFunction;
+exports.isDeclareInterface = isDeclareInterface;
+exports.isDeclareModule = isDeclareModule;
+exports.isDeclareModuleExports = isDeclareModuleExports;
+exports.isDeclareOpaqueType = isDeclareOpaqueType;
+exports.isDeclareTypeAlias = isDeclareTypeAlias;
+exports.isDeclareVariable = isDeclareVariable;
+exports.isDeclaredPredicate = isDeclaredPredicate;
+exports.isDecorator = isDecorator;
+exports.isDirective = isDirective;
+exports.isDirectiveLiteral = isDirectiveLiteral;
+exports.isDoExpression = isDoExpression;
+exports.isDoWhileStatement = isDoWhileStatement;
+exports.isEmptyStatement = isEmptyStatement;
+exports.isEmptyTypeAnnotation = isEmptyTypeAnnotation;
+exports.isEnumBody = isEnumBody;
+exports.isEnumBooleanBody = isEnumBooleanBody;
+exports.isEnumBooleanMember = isEnumBooleanMember;
+exports.isEnumDeclaration = isEnumDeclaration;
+exports.isEnumDefaultedMember = isEnumDefaultedMember;
+exports.isEnumMember = isEnumMember;
+exports.isEnumNumberBody = isEnumNumberBody;
+exports.isEnumNumberMember = isEnumNumberMember;
+exports.isEnumStringBody = isEnumStringBody;
+exports.isEnumStringMember = isEnumStringMember;
+exports.isEnumSymbolBody = isEnumSymbolBody;
+exports.isExistsTypeAnnotation = isExistsTypeAnnotation;
+exports.isExportAllDeclaration = isExportAllDeclaration;
+exports.isExportDeclaration = isExportDeclaration;
+exports.isExportDefaultDeclaration = isExportDefaultDeclaration;
+exports.isExportDefaultSpecifier = isExportDefaultSpecifier;
+exports.isExportNamedDeclaration = isExportNamedDeclaration;
+exports.isExportNamespaceSpecifier = isExportNamespaceSpecifier;
+exports.isExportSpecifier = isExportSpecifier;
+exports.isExpression = isExpression;
+exports.isExpressionStatement = isExpressionStatement;
+exports.isExpressionWrapper = isExpressionWrapper;
+exports.isFile = isFile;
+exports.isFlow = isFlow;
+exports.isFlowBaseAnnotation = isFlowBaseAnnotation;
+exports.isFlowDeclaration = isFlowDeclaration;
+exports.isFlowPredicate = isFlowPredicate;
+exports.isFlowType = isFlowType;
+exports.isFor = isFor;
+exports.isForInStatement = isForInStatement;
+exports.isForOfStatement = isForOfStatement;
+exports.isForStatement = isForStatement;
+exports.isForXStatement = isForXStatement;
+exports.isFunction = isFunction;
+exports.isFunctionDeclaration = isFunctionDeclaration;
+exports.isFunctionExpression = isFunctionExpression;
+exports.isFunctionParent = isFunctionParent;
+exports.isFunctionTypeAnnotation = isFunctionTypeAnnotation;
+exports.isFunctionTypeParam = isFunctionTypeParam;
+exports.isGenericTypeAnnotation = isGenericTypeAnnotation;
+exports.isIdentifier = isIdentifier;
+exports.isIfStatement = isIfStatement;
+exports.isImmutable = isImmutable;
+exports.isImport = isImport;
+exports.isImportAttribute = isImportAttribute;
+exports.isImportDeclaration = isImportDeclaration;
+exports.isImportDefaultSpecifier = isImportDefaultSpecifier;
+exports.isImportNamespaceSpecifier = isImportNamespaceSpecifier;
+exports.isImportSpecifier = isImportSpecifier;
+exports.isIndexedAccessType = isIndexedAccessType;
+exports.isInferredPredicate = isInferredPredicate;
+exports.isInterfaceDeclaration = isInterfaceDeclaration;
+exports.isInterfaceExtends = isInterfaceExtends;
+exports.isInterfaceTypeAnnotation = isInterfaceTypeAnnotation;
+exports.isInterpreterDirective = isInterpreterDirective;
+exports.isIntersectionTypeAnnotation = isIntersectionTypeAnnotation;
+exports.isJSX = isJSX;
+exports.isJSXAttribute = isJSXAttribute;
+exports.isJSXClosingElement = isJSXClosingElement;
+exports.isJSXClosingFragment = isJSXClosingFragment;
+exports.isJSXElement = isJSXElement;
+exports.isJSXEmptyExpression = isJSXEmptyExpression;
+exports.isJSXExpressionContainer = isJSXExpressionContainer;
+exports.isJSXFragment = isJSXFragment;
+exports.isJSXIdentifier = isJSXIdentifier;
+exports.isJSXMemberExpression = isJSXMemberExpression;
+exports.isJSXNamespacedName = isJSXNamespacedName;
+exports.isJSXOpeningElement = isJSXOpeningElement;
+exports.isJSXOpeningFragment = isJSXOpeningFragment;
+exports.isJSXSpreadAttribute = isJSXSpreadAttribute;
+exports.isJSXSpreadChild = isJSXSpreadChild;
+exports.isJSXText = isJSXText;
+exports.isLVal = isLVal;
+exports.isLabeledStatement = isLabeledStatement;
+exports.isLiteral = isLiteral;
+exports.isLogicalExpression = isLogicalExpression;
+exports.isLoop = isLoop;
+exports.isMemberExpression = isMemberExpression;
+exports.isMetaProperty = isMetaProperty;
+exports.isMethod = isMethod;
+exports.isMiscellaneous = isMiscellaneous;
+exports.isMixedTypeAnnotation = isMixedTypeAnnotation;
+exports.isModuleDeclaration = isModuleDeclaration;
+exports.isModuleExpression = isModuleExpression;
+exports.isModuleSpecifier = isModuleSpecifier;
+exports.isNewExpression = isNewExpression;
+exports.isNoop = isNoop;
+exports.isNullLiteral = isNullLiteral;
+exports.isNullLiteralTypeAnnotation = isNullLiteralTypeAnnotation;
+exports.isNullableTypeAnnotation = isNullableTypeAnnotation;
+exports.isNumberLiteral = isNumberLiteral;
+exports.isNumberLiteralTypeAnnotation = isNumberLiteralTypeAnnotation;
+exports.isNumberTypeAnnotation = isNumberTypeAnnotation;
+exports.isNumericLiteral = isNumericLiteral;
+exports.isObjectExpression = isObjectExpression;
+exports.isObjectMember = isObjectMember;
+exports.isObjectMethod = isObjectMethod;
+exports.isObjectPattern = isObjectPattern;
+exports.isObjectProperty = isObjectProperty;
+exports.isObjectTypeAnnotation = isObjectTypeAnnotation;
+exports.isObjectTypeCallProperty = isObjectTypeCallProperty;
+exports.isObjectTypeIndexer = isObjectTypeIndexer;
+exports.isObjectTypeInternalSlot = isObjectTypeInternalSlot;
+exports.isObjectTypeProperty = isObjectTypeProperty;
+exports.isObjectTypeSpreadProperty = isObjectTypeSpreadProperty;
+exports.isOpaqueType = isOpaqueType;
+exports.isOptionalCallExpression = isOptionalCallExpression;
+exports.isOptionalIndexedAccessType = isOptionalIndexedAccessType;
+exports.isOptionalMemberExpression = isOptionalMemberExpression;
+exports.isParenthesizedExpression = isParenthesizedExpression;
+exports.isPattern = isPattern;
+exports.isPatternLike = isPatternLike;
+exports.isPipelineBareFunction = isPipelineBareFunction;
+exports.isPipelinePrimaryTopicReference = isPipelinePrimaryTopicReference;
+exports.isPipelineTopicExpression = isPipelineTopicExpression;
+exports.isPlaceholder = isPlaceholder;
+exports.isPrivate = isPrivate;
+exports.isPrivateName = isPrivateName;
+exports.isProgram = isProgram;
+exports.isProperty = isProperty;
+exports.isPureish = isPureish;
+exports.isQualifiedTypeIdentifier = isQualifiedTypeIdentifier;
+exports.isRecordExpression = isRecordExpression;
+exports.isRegExpLiteral = isRegExpLiteral;
+exports.isRegexLiteral = isRegexLiteral;
+exports.isRestElement = isRestElement;
+exports.isRestProperty = isRestProperty;
+exports.isReturnStatement = isReturnStatement;
+exports.isScopable = isScopable;
+exports.isSequenceExpression = isSequenceExpression;
+exports.isSpreadElement = isSpreadElement;
+exports.isSpreadProperty = isSpreadProperty;
+exports.isStandardized = isStandardized;
+exports.isStatement = isStatement;
+exports.isStaticBlock = isStaticBlock;
+exports.isStringLiteral = isStringLiteral;
+exports.isStringLiteralTypeAnnotation = isStringLiteralTypeAnnotation;
+exports.isStringTypeAnnotation = isStringTypeAnnotation;
+exports.isSuper = isSuper;
+exports.isSwitchCase = isSwitchCase;
+exports.isSwitchStatement = isSwitchStatement;
+exports.isSymbolTypeAnnotation = isSymbolTypeAnnotation;
+exports.isTSAnyKeyword = isTSAnyKeyword;
+exports.isTSArrayType = isTSArrayType;
+exports.isTSAsExpression = isTSAsExpression;
+exports.isTSBaseType = isTSBaseType;
+exports.isTSBigIntKeyword = isTSBigIntKeyword;
+exports.isTSBooleanKeyword = isTSBooleanKeyword;
+exports.isTSCallSignatureDeclaration = isTSCallSignatureDeclaration;
+exports.isTSConditionalType = isTSConditionalType;
+exports.isTSConstructSignatureDeclaration = isTSConstructSignatureDeclaration;
+exports.isTSConstructorType = isTSConstructorType;
+exports.isTSDeclareFunction = isTSDeclareFunction;
+exports.isTSDeclareMethod = isTSDeclareMethod;
+exports.isTSEntityName = isTSEntityName;
+exports.isTSEnumDeclaration = isTSEnumDeclaration;
+exports.isTSEnumMember = isTSEnumMember;
+exports.isTSExportAssignment = isTSExportAssignment;
+exports.isTSExpressionWithTypeArguments = isTSExpressionWithTypeArguments;
+exports.isTSExternalModuleReference = isTSExternalModuleReference;
+exports.isTSFunctionType = isTSFunctionType;
+exports.isTSImportEqualsDeclaration = isTSImportEqualsDeclaration;
+exports.isTSImportType = isTSImportType;
+exports.isTSIndexSignature = isTSIndexSignature;
+exports.isTSIndexedAccessType = isTSIndexedAccessType;
+exports.isTSInferType = isTSInferType;
+exports.isTSInterfaceBody = isTSInterfaceBody;
+exports.isTSInterfaceDeclaration = isTSInterfaceDeclaration;
+exports.isTSIntersectionType = isTSIntersectionType;
+exports.isTSIntrinsicKeyword = isTSIntrinsicKeyword;
+exports.isTSLiteralType = isTSLiteralType;
+exports.isTSMappedType = isTSMappedType;
+exports.isTSMethodSignature = isTSMethodSignature;
+exports.isTSModuleBlock = isTSModuleBlock;
+exports.isTSModuleDeclaration = isTSModuleDeclaration;
+exports.isTSNamedTupleMember = isTSNamedTupleMember;
+exports.isTSNamespaceExportDeclaration = isTSNamespaceExportDeclaration;
+exports.isTSNeverKeyword = isTSNeverKeyword;
+exports.isTSNonNullExpression = isTSNonNullExpression;
+exports.isTSNullKeyword = isTSNullKeyword;
+exports.isTSNumberKeyword = isTSNumberKeyword;
+exports.isTSObjectKeyword = isTSObjectKeyword;
+exports.isTSOptionalType = isTSOptionalType;
+exports.isTSParameterProperty = isTSParameterProperty;
+exports.isTSParenthesizedType = isTSParenthesizedType;
+exports.isTSPropertySignature = isTSPropertySignature;
+exports.isTSQualifiedName = isTSQualifiedName;
+exports.isTSRestType = isTSRestType;
+exports.isTSStringKeyword = isTSStringKeyword;
+exports.isTSSymbolKeyword = isTSSymbolKeyword;
+exports.isTSThisType = isTSThisType;
+exports.isTSTupleType = isTSTupleType;
+exports.isTSType = isTSType;
+exports.isTSTypeAliasDeclaration = isTSTypeAliasDeclaration;
+exports.isTSTypeAnnotation = isTSTypeAnnotation;
+exports.isTSTypeAssertion = isTSTypeAssertion;
+exports.isTSTypeElement = isTSTypeElement;
+exports.isTSTypeLiteral = isTSTypeLiteral;
+exports.isTSTypeOperator = isTSTypeOperator;
+exports.isTSTypeParameter = isTSTypeParameter;
+exports.isTSTypeParameterDeclaration = isTSTypeParameterDeclaration;
+exports.isTSTypeParameterInstantiation = isTSTypeParameterInstantiation;
+exports.isTSTypePredicate = isTSTypePredicate;
+exports.isTSTypeQuery = isTSTypeQuery;
+exports.isTSTypeReference = isTSTypeReference;
+exports.isTSUndefinedKeyword = isTSUndefinedKeyword;
+exports.isTSUnionType = isTSUnionType;
+exports.isTSUnknownKeyword = isTSUnknownKeyword;
+exports.isTSVoidKeyword = isTSVoidKeyword;
+exports.isTaggedTemplateExpression = isTaggedTemplateExpression;
+exports.isTemplateElement = isTemplateElement;
+exports.isTemplateLiteral = isTemplateLiteral;
+exports.isTerminatorless = isTerminatorless;
+exports.isThisExpression = isThisExpression;
+exports.isThisTypeAnnotation = isThisTypeAnnotation;
+exports.isThrowStatement = isThrowStatement;
+exports.isTopicReference = isTopicReference;
+exports.isTryStatement = isTryStatement;
+exports.isTupleExpression = isTupleExpression;
+exports.isTupleTypeAnnotation = isTupleTypeAnnotation;
+exports.isTypeAlias = isTypeAlias;
+exports.isTypeAnnotation = isTypeAnnotation;
+exports.isTypeCastExpression = isTypeCastExpression;
+exports.isTypeParameter = isTypeParameter;
+exports.isTypeParameterDeclaration = isTypeParameterDeclaration;
+exports.isTypeParameterInstantiation = isTypeParameterInstantiation;
+exports.isTypeScript = isTypeScript;
+exports.isTypeofTypeAnnotation = isTypeofTypeAnnotation;
+exports.isUnaryExpression = isUnaryExpression;
+exports.isUnaryLike = isUnaryLike;
+exports.isUnionTypeAnnotation = isUnionTypeAnnotation;
+exports.isUpdateExpression = isUpdateExpression;
+exports.isUserWhitespacable = isUserWhitespacable;
+exports.isV8IntrinsicIdentifier = isV8IntrinsicIdentifier;
+exports.isVariableDeclaration = isVariableDeclaration;
+exports.isVariableDeclarator = isVariableDeclarator;
+exports.isVariance = isVariance;
+exports.isVoidTypeAnnotation = isVoidTypeAnnotation;
+exports.isWhile = isWhile;
+exports.isWhileStatement = isWhileStatement;
+exports.isWithStatement = isWithStatement;
+exports.isYieldExpression = isYieldExpression;
+
+var _shallowEqual = require("../../utils/shallowEqual");
+
+function isArrayExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ArrayExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isAssignmentExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "AssignmentExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBinaryExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BinaryExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isInterpreterDirective(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "InterpreterDirective") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDirective(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Directive") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDirectiveLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DirectiveLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBlockStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BlockStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBreakStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BreakStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isCallExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "CallExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isCatchClause(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "CatchClause") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isConditionalExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ConditionalExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isContinueStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ContinueStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDebuggerStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DebuggerStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDoWhileStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DoWhileStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEmptyStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EmptyStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExpressionStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExpressionStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFile(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "File") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isForInStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ForInStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isForStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ForStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFunctionDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "FunctionDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFunctionExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "FunctionExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isIdentifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Identifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isIfStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "IfStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isLabeledStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "LabeledStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isStringLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "StringLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNumericLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NumericLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNullLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NullLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBooleanLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BooleanLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isRegExpLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "RegExpLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isLogicalExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "LogicalExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isMemberExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "MemberExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNewExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NewExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isProgram(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Program") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectMethod(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectMethod") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isRestElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "RestElement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isReturnStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ReturnStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSequenceExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "SequenceExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isParenthesizedExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ParenthesizedExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSwitchCase(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "SwitchCase") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSwitchStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "SwitchStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isThisExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ThisExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isThrowStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ThrowStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTryStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TryStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isUnaryExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "UnaryExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isUpdateExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "UpdateExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isVariableDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "VariableDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isVariableDeclarator(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "VariableDeclarator") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isWhileStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "WhileStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isWithStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "WithStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isAssignmentPattern(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "AssignmentPattern") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isArrayPattern(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ArrayPattern") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isArrowFunctionExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ArrowFunctionExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassBody") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportAllDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExportAllDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportDefaultDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExportDefaultDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportNamedDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExportNamedDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExportSpecifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isForOfStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ForOfStatement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImportDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ImportDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImportDefaultSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ImportDefaultSpecifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImportNamespaceSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ImportNamespaceSpecifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImportSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ImportSpecifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isMetaProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "MetaProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassMethod(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassMethod") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectPattern(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectPattern") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSpreadElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "SpreadElement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSuper(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Super") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTaggedTemplateExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TaggedTemplateExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTemplateElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TemplateElement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTemplateLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TemplateLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isYieldExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "YieldExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isAwaitExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "AwaitExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImport(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Import") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBigIntLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BigIntLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportNamespaceSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExportNamespaceSpecifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isOptionalMemberExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "OptionalMemberExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isOptionalCallExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "OptionalCallExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassPrivateProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassPrivateProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassPrivateMethod(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassPrivateMethod") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPrivateName(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "PrivateName") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isStaticBlock(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "StaticBlock") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isAnyTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "AnyTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isArrayTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ArrayTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBooleanTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BooleanTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBooleanLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BooleanLiteralTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNullLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NullLiteralTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClassImplements(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ClassImplements") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareClass(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareClass") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareFunction(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareFunction") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareInterface(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareInterface") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareModule(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareModule") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareModuleExports(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareModuleExports") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareTypeAlias(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareTypeAlias") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareOpaqueType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareOpaqueType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareVariable(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareVariable") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareExportDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareExportDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclareExportAllDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclareExportAllDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclaredPredicate(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DeclaredPredicate") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExistsTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExistsTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFunctionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "FunctionTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFunctionTypeParam(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "FunctionTypeParam") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isGenericTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "GenericTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isInferredPredicate(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "InferredPredicate") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isInterfaceExtends(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "InterfaceExtends") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isInterfaceDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "InterfaceDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isInterfaceTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "InterfaceTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isIntersectionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "IntersectionTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isMixedTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "MixedTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEmptyTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EmptyTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNullableTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NullableTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNumberLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NumberLiteralTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNumberTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NumberTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectTypeInternalSlot(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectTypeInternalSlot") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectTypeCallProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectTypeCallProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectTypeIndexer(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectTypeIndexer") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectTypeProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectTypeProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectTypeSpreadProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ObjectTypeSpreadProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isOpaqueType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "OpaqueType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isQualifiedTypeIdentifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "QualifiedTypeIdentifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isStringLiteralTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "StringLiteralTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isStringTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "StringTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSymbolTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "SymbolTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isThisTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ThisTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTupleTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TupleTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeofTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeofTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeAlias(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeAlias") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeCastExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeCastExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeParameter(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeParameter") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeParameterDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeParameterDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeParameterInstantiation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TypeParameterInstantiation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isUnionTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "UnionTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isVariance(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Variance") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isVoidTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "VoidTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumBooleanBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumBooleanBody") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumNumberBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumNumberBody") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumStringBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumStringBody") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumSymbolBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumSymbolBody") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumBooleanMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumBooleanMember") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumNumberMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumNumberMember") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumStringMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumStringMember") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumDefaultedMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "EnumDefaultedMember") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isIndexedAccessType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "IndexedAccessType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isOptionalIndexedAccessType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "OptionalIndexedAccessType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXAttribute(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXAttribute") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXClosingElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXClosingElement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXElement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXEmptyExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXEmptyExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXExpressionContainer(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXExpressionContainer") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXSpreadChild(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXSpreadChild") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXIdentifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXIdentifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXMemberExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXMemberExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXNamespacedName(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXNamespacedName") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXOpeningElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXOpeningElement") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXSpreadAttribute(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXSpreadAttribute") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXText(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXText") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXFragment(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXFragment") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXOpeningFragment(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXOpeningFragment") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSXClosingFragment(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "JSXClosingFragment") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNoop(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Noop") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPlaceholder(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Placeholder") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isV8IntrinsicIdentifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "V8IntrinsicIdentifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isArgumentPlaceholder(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ArgumentPlaceholder") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBindExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "BindExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImportAttribute(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ImportAttribute") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDecorator(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "Decorator") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDoExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DoExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportDefaultSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ExportDefaultSpecifier") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isRecordExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "RecordExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTupleExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TupleExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDecimalLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "DecimalLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isModuleExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "ModuleExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTopicReference(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TopicReference") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPipelineTopicExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "PipelineTopicExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPipelineBareFunction(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "PipelineBareFunction") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPipelinePrimaryTopicReference(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "PipelinePrimaryTopicReference") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSParameterProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSParameterProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSDeclareFunction(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSDeclareFunction") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSDeclareMethod(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSDeclareMethod") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSQualifiedName(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSQualifiedName") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSCallSignatureDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSCallSignatureDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSConstructSignatureDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSConstructSignatureDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSPropertySignature(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSPropertySignature") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSMethodSignature(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSMethodSignature") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSIndexSignature(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSIndexSignature") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSAnyKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSAnyKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSBooleanKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSBooleanKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSBigIntKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSBigIntKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSIntrinsicKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSIntrinsicKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSNeverKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSNeverKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSNullKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSNullKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSNumberKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSNumberKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSObjectKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSObjectKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSStringKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSStringKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSSymbolKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSSymbolKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSUndefinedKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSUndefinedKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSUnknownKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSUnknownKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSVoidKeyword(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSVoidKeyword") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSThisType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSThisType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSFunctionType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSFunctionType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSConstructorType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSConstructorType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeReference(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeReference") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypePredicate(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypePredicate") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeQuery(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeQuery") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSArrayType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSArrayType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTupleType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTupleType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSOptionalType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSOptionalType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSRestType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSRestType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSNamedTupleMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSNamedTupleMember") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSUnionType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSUnionType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSIntersectionType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSIntersectionType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSConditionalType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSConditionalType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSInferType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSInferType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSParenthesizedType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSParenthesizedType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeOperator(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeOperator") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSIndexedAccessType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSIndexedAccessType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSMappedType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSMappedType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSLiteralType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSLiteralType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSExpressionWithTypeArguments(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSExpressionWithTypeArguments") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSInterfaceDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSInterfaceDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSInterfaceBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSInterfaceBody") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeAliasDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeAliasDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSAsExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSAsExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeAssertion(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeAssertion") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSEnumDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSEnumDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSEnumMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSEnumMember") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSModuleDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSModuleDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSModuleBlock(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSModuleBlock") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSImportType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSImportType") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSImportEqualsDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSImportEqualsDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSExternalModuleReference(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSExternalModuleReference") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSNonNullExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSNonNullExpression") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSExportAssignment(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSExportAssignment") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSNamespaceExportDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSNamespaceExportDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeAnnotation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeParameterInstantiation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeParameterInstantiation") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeParameterDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeParameterDeclaration") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeParameter(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "TSTypeParameter") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isStandardized(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "InterpreterDirective" === nodeType || "Directive" === nodeType || "DirectiveLiteral" === nodeType || "BlockStatement" === nodeType || "BreakStatement" === nodeType || "CallExpression" === nodeType || "CatchClause" === nodeType || "ConditionalExpression" === nodeType || "ContinueStatement" === nodeType || "DebuggerStatement" === nodeType || "DoWhileStatement" === nodeType || "EmptyStatement" === nodeType || "ExpressionStatement" === nodeType || "File" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "IfStatement" === nodeType || "LabeledStatement" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "Program" === nodeType || "ObjectExpression" === nodeType || "ObjectMethod" === nodeType || "ObjectProperty" === nodeType || "RestElement" === nodeType || "ReturnStatement" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "SwitchCase" === nodeType || "SwitchStatement" === nodeType || "ThisExpression" === nodeType || "ThrowStatement" === nodeType || "TryStatement" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "VariableDeclaration" === nodeType || "VariableDeclarator" === nodeType || "WhileStatement" === nodeType || "WithStatement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassBody" === nodeType || "ClassExpression" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ExportSpecifier" === nodeType || "ForOfStatement" === nodeType || "ImportDeclaration" === nodeType || "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || "MetaProperty" === nodeType || "ClassMethod" === nodeType || "ObjectPattern" === nodeType || "SpreadElement" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateElement" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType || "Import" === nodeType || "BigIntLiteral" === nodeType || "ExportNamespaceSpecifier" === nodeType || "OptionalMemberExpression" === nodeType || "OptionalCallExpression" === nodeType || "ClassProperty" === nodeType || "ClassPrivateProperty" === nodeType || "ClassPrivateMethod" === nodeType || "PrivateName" === nodeType || "StaticBlock" === nodeType || nodeType === "Placeholder" && ("Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode || "BlockStatement" === node.expectedNode || "ClassBody" === node.expectedNode)) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExpression(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ArrayExpression" === nodeType || "AssignmentExpression" === nodeType || "BinaryExpression" === nodeType || "CallExpression" === nodeType || "ConditionalExpression" === nodeType || "FunctionExpression" === nodeType || "Identifier" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "LogicalExpression" === nodeType || "MemberExpression" === nodeType || "NewExpression" === nodeType || "ObjectExpression" === nodeType || "SequenceExpression" === nodeType || "ParenthesizedExpression" === nodeType || "ThisExpression" === nodeType || "UnaryExpression" === nodeType || "UpdateExpression" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "MetaProperty" === nodeType || "Super" === nodeType || "TaggedTemplateExpression" === nodeType || "TemplateLiteral" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType || "Import" === nodeType || "BigIntLiteral" === nodeType || "OptionalMemberExpression" === nodeType || "OptionalCallExpression" === nodeType || "TypeCastExpression" === nodeType || "JSXElement" === nodeType || "JSXFragment" === nodeType || "BindExpression" === nodeType || "DoExpression" === nodeType || "RecordExpression" === nodeType || "TupleExpression" === nodeType || "DecimalLiteral" === nodeType || "ModuleExpression" === nodeType || "TopicReference" === nodeType || "PipelineTopicExpression" === nodeType || "PipelineBareFunction" === nodeType || "PipelinePrimaryTopicReference" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSNonNullExpression" === nodeType || nodeType === "Placeholder" && ("Expression" === node.expectedNode || "Identifier" === node.expectedNode || "StringLiteral" === node.expectedNode)) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBinary(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BinaryExpression" === nodeType || "LogicalExpression" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isScopable(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassExpression" === nodeType || "ClassDeclaration" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBlockParent(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BlockStatement" === nodeType || "CatchClause" === nodeType || "DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "Program" === nodeType || "ObjectMethod" === nodeType || "SwitchStatement" === nodeType || "WhileStatement" === nodeType || "ArrowFunctionExpression" === nodeType || "ForOfStatement" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isBlock(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BlockStatement" === nodeType || "Program" === nodeType || "TSModuleBlock" === nodeType || nodeType === "Placeholder" && "BlockStatement" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BlockStatement" === nodeType || "BreakStatement" === nodeType || "ContinueStatement" === nodeType || "DebuggerStatement" === nodeType || "DoWhileStatement" === nodeType || "EmptyStatement" === nodeType || "ExpressionStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "FunctionDeclaration" === nodeType || "IfStatement" === nodeType || "LabeledStatement" === nodeType || "ReturnStatement" === nodeType || "SwitchStatement" === nodeType || "ThrowStatement" === nodeType || "TryStatement" === nodeType || "VariableDeclaration" === nodeType || "WhileStatement" === nodeType || "WithStatement" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ForOfStatement" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "EnumDeclaration" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || nodeType === "Placeholder" && ("Statement" === node.expectedNode || "Declaration" === node.expectedNode || "BlockStatement" === node.expectedNode)) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTerminatorless(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType || "YieldExpression" === nodeType || "AwaitExpression" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isCompletionStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("BreakStatement" === nodeType || "ContinueStatement" === nodeType || "ReturnStatement" === nodeType || "ThrowStatement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isConditional(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ConditionalExpression" === nodeType || "IfStatement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isLoop(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("DoWhileStatement" === nodeType || "ForInStatement" === nodeType || "ForStatement" === nodeType || "WhileStatement" === nodeType || "ForOfStatement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isWhile(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("DoWhileStatement" === nodeType || "WhileStatement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExpressionWrapper(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ExpressionStatement" === nodeType || "ParenthesizedExpression" === nodeType || "TypeCastExpression" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFor(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ForInStatement" === nodeType || "ForStatement" === nodeType || "ForOfStatement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isForXStatement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ForInStatement" === nodeType || "ForOfStatement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFunction(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFunctionParent(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "ObjectMethod" === nodeType || "ArrowFunctionExpression" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType || "StaticBlock" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPureish(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("FunctionDeclaration" === nodeType || "FunctionExpression" === nodeType || "StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "ArrowFunctionExpression" === nodeType || "BigIntLiteral" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("FunctionDeclaration" === nodeType || "VariableDeclaration" === nodeType || "ClassDeclaration" === nodeType || "ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType || "EnumDeclaration" === nodeType || "TSDeclareFunction" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSEnumDeclaration" === nodeType || "TSModuleDeclaration" === nodeType || nodeType === "Placeholder" && "Declaration" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPatternLike(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("Identifier" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isLVal(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("Identifier" === nodeType || "MemberExpression" === nodeType || "RestElement" === nodeType || "AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || "TSParameterProperty" === nodeType || nodeType === "Placeholder" && ("Pattern" === node.expectedNode || "Identifier" === node.expectedNode)) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSEntityName(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("Identifier" === nodeType || "TSQualifiedName" === nodeType || nodeType === "Placeholder" && "Identifier" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isLiteral(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "RegExpLiteral" === nodeType || "TemplateLiteral" === nodeType || "BigIntLiteral" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isImmutable(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("StringLiteral" === nodeType || "NumericLiteral" === nodeType || "NullLiteral" === nodeType || "BooleanLiteral" === nodeType || "BigIntLiteral" === nodeType || "JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXOpeningElement" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType || "DecimalLiteral" === nodeType || nodeType === "Placeholder" && "StringLiteral" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isUserWhitespacable(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ObjectMethod" === nodeType || "ObjectProperty" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isMethod(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ObjectMethod" === nodeType || "ClassMethod" === nodeType || "ClassPrivateMethod" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isObjectMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ObjectMethod" === nodeType || "ObjectProperty" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isProperty(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ObjectProperty" === nodeType || "ClassProperty" === nodeType || "ClassPrivateProperty" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isUnaryLike(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("UnaryExpression" === nodeType || "SpreadElement" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPattern(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("AssignmentPattern" === nodeType || "ArrayPattern" === nodeType || "ObjectPattern" === nodeType || nodeType === "Placeholder" && "Pattern" === node.expectedNode) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isClass(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ClassExpression" === nodeType || "ClassDeclaration" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isModuleDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType || "ImportDeclaration" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isExportDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ExportAllDeclaration" === nodeType || "ExportDefaultDeclaration" === nodeType || "ExportNamedDeclaration" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isModuleSpecifier(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ExportSpecifier" === nodeType || "ImportDefaultSpecifier" === nodeType || "ImportNamespaceSpecifier" === nodeType || "ImportSpecifier" === nodeType || "ExportNamespaceSpecifier" === nodeType || "ExportDefaultSpecifier" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isPrivate(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("ClassPrivateProperty" === nodeType || "ClassPrivateMethod" === nodeType || "PrivateName" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFlow(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ClassImplements" === nodeType || "DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "DeclaredPredicate" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "FunctionTypeParam" === nodeType || "GenericTypeAnnotation" === nodeType || "InferredPredicate" === nodeType || "InterfaceExtends" === nodeType || "InterfaceDeclaration" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "ObjectTypeInternalSlot" === nodeType || "ObjectTypeCallProperty" === nodeType || "ObjectTypeIndexer" === nodeType || "ObjectTypeProperty" === nodeType || "ObjectTypeSpreadProperty" === nodeType || "OpaqueType" === nodeType || "QualifiedTypeIdentifier" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "TypeAlias" === nodeType || "TypeAnnotation" === nodeType || "TypeCastExpression" === nodeType || "TypeParameter" === nodeType || "TypeParameterDeclaration" === nodeType || "TypeParameterInstantiation" === nodeType || "UnionTypeAnnotation" === nodeType || "Variance" === nodeType || "VoidTypeAnnotation" === nodeType || "EnumDeclaration" === nodeType || "EnumBooleanBody" === nodeType || "EnumNumberBody" === nodeType || "EnumStringBody" === nodeType || "EnumSymbolBody" === nodeType || "EnumBooleanMember" === nodeType || "EnumNumberMember" === nodeType || "EnumStringMember" === nodeType || "EnumDefaultedMember" === nodeType || "IndexedAccessType" === nodeType || "OptionalIndexedAccessType" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFlowType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("AnyTypeAnnotation" === nodeType || "ArrayTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "BooleanLiteralTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "ExistsTypeAnnotation" === nodeType || "FunctionTypeAnnotation" === nodeType || "GenericTypeAnnotation" === nodeType || "InterfaceTypeAnnotation" === nodeType || "IntersectionTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NullableTypeAnnotation" === nodeType || "NumberLiteralTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "ObjectTypeAnnotation" === nodeType || "StringLiteralTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "TupleTypeAnnotation" === nodeType || "TypeofTypeAnnotation" === nodeType || "UnionTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType || "IndexedAccessType" === nodeType || "OptionalIndexedAccessType" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFlowBaseAnnotation(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("AnyTypeAnnotation" === nodeType || "BooleanTypeAnnotation" === nodeType || "NullLiteralTypeAnnotation" === nodeType || "MixedTypeAnnotation" === nodeType || "EmptyTypeAnnotation" === nodeType || "NumberTypeAnnotation" === nodeType || "StringTypeAnnotation" === nodeType || "SymbolTypeAnnotation" === nodeType || "ThisTypeAnnotation" === nodeType || "VoidTypeAnnotation" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFlowDeclaration(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("DeclareClass" === nodeType || "DeclareFunction" === nodeType || "DeclareInterface" === nodeType || "DeclareModule" === nodeType || "DeclareModuleExports" === nodeType || "DeclareTypeAlias" === nodeType || "DeclareOpaqueType" === nodeType || "DeclareVariable" === nodeType || "DeclareExportDeclaration" === nodeType || "DeclareExportAllDeclaration" === nodeType || "InterfaceDeclaration" === nodeType || "OpaqueType" === nodeType || "TypeAlias" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isFlowPredicate(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("DeclaredPredicate" === nodeType || "InferredPredicate" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumBody(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("EnumBooleanBody" === nodeType || "EnumNumberBody" === nodeType || "EnumStringBody" === nodeType || "EnumSymbolBody" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isEnumMember(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("EnumBooleanMember" === nodeType || "EnumNumberMember" === nodeType || "EnumStringMember" === nodeType || "EnumDefaultedMember" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isJSX(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("JSXAttribute" === nodeType || "JSXClosingElement" === nodeType || "JSXElement" === nodeType || "JSXEmptyExpression" === nodeType || "JSXExpressionContainer" === nodeType || "JSXSpreadChild" === nodeType || "JSXIdentifier" === nodeType || "JSXMemberExpression" === nodeType || "JSXNamespacedName" === nodeType || "JSXOpeningElement" === nodeType || "JSXSpreadAttribute" === nodeType || "JSXText" === nodeType || "JSXFragment" === nodeType || "JSXOpeningFragment" === nodeType || "JSXClosingFragment" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isMiscellaneous(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("Noop" === nodeType || "Placeholder" === nodeType || "V8IntrinsicIdentifier" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTypeScript(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("TSParameterProperty" === nodeType || "TSDeclareFunction" === nodeType || "TSDeclareMethod" === nodeType || "TSQualifiedName" === nodeType || "TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType || "TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSNamedTupleMember" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSInterfaceDeclaration" === nodeType || "TSInterfaceBody" === nodeType || "TSTypeAliasDeclaration" === nodeType || "TSAsExpression" === nodeType || "TSTypeAssertion" === nodeType || "TSEnumDeclaration" === nodeType || "TSEnumMember" === nodeType || "TSModuleDeclaration" === nodeType || "TSModuleBlock" === nodeType || "TSImportType" === nodeType || "TSImportEqualsDeclaration" === nodeType || "TSExternalModuleReference" === nodeType || "TSNonNullExpression" === nodeType || "TSExportAssignment" === nodeType || "TSNamespaceExportDeclaration" === nodeType || "TSTypeAnnotation" === nodeType || "TSTypeParameterInstantiation" === nodeType || "TSTypeParameterDeclaration" === nodeType || "TSTypeParameter" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSTypeElement(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("TSCallSignatureDeclaration" === nodeType || "TSConstructSignatureDeclaration" === nodeType || "TSPropertySignature" === nodeType || "TSMethodSignature" === nodeType || "TSIndexSignature" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSFunctionType" === nodeType || "TSConstructorType" === nodeType || "TSTypeReference" === nodeType || "TSTypePredicate" === nodeType || "TSTypeQuery" === nodeType || "TSTypeLiteral" === nodeType || "TSArrayType" === nodeType || "TSTupleType" === nodeType || "TSOptionalType" === nodeType || "TSRestType" === nodeType || "TSUnionType" === nodeType || "TSIntersectionType" === nodeType || "TSConditionalType" === nodeType || "TSInferType" === nodeType || "TSParenthesizedType" === nodeType || "TSTypeOperator" === nodeType || "TSIndexedAccessType" === nodeType || "TSMappedType" === nodeType || "TSLiteralType" === nodeType || "TSExpressionWithTypeArguments" === nodeType || "TSImportType" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isTSBaseType(node, opts) {
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if ("TSAnyKeyword" === nodeType || "TSBooleanKeyword" === nodeType || "TSBigIntKeyword" === nodeType || "TSIntrinsicKeyword" === nodeType || "TSNeverKeyword" === nodeType || "TSNullKeyword" === nodeType || "TSNumberKeyword" === nodeType || "TSObjectKeyword" === nodeType || "TSStringKeyword" === nodeType || "TSSymbolKeyword" === nodeType || "TSUndefinedKeyword" === nodeType || "TSUnknownKeyword" === nodeType || "TSVoidKeyword" === nodeType || "TSThisType" === nodeType || "TSLiteralType" === nodeType) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isNumberLiteral(node, opts) {
+ console.trace("The node type NumberLiteral has been renamed to NumericLiteral");
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "NumberLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isRegexLiteral(node, opts) {
+ console.trace("The node type RegexLiteral has been renamed to RegExpLiteral");
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "RegexLiteral") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isRestProperty(node, opts) {
+ console.trace("The node type RestProperty has been renamed to RestElement");
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "RestProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+}
+
+function isSpreadProperty(node, opts) {
+ console.trace("The node type SpreadProperty has been renamed to SpreadElement");
+ if (!node) return false;
+ const nodeType = node.type;
+
+ if (nodeType === "SpreadProperty") {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/is.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/is.js
new file mode 100644
index 0000000000..581979fa70
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/is.js
@@ -0,0 +1,33 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = is;
+
+var _shallowEqual = require("../utils/shallowEqual");
+
+var _isType = require("./isType");
+
+var _isPlaceholderType = require("./isPlaceholderType");
+
+var _definitions = require("../definitions");
+
+function is(type, node, opts) {
+ if (!node) return false;
+ const matches = (0, _isType.default)(node.type, type);
+
+ if (!matches) {
+ if (!opts && node.type === "Placeholder" && type in _definitions.FLIPPED_ALIAS_KEYS) {
+ return (0, _isPlaceholderType.default)(node.expectedNode, type);
+ }
+
+ return false;
+ }
+
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return (0, _shallowEqual.default)(node, opts);
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBinding.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBinding.js
new file mode 100644
index 0000000000..74c86dd0e9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBinding.js
@@ -0,0 +1,31 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isBinding;
+
+var _getBindingIdentifiers = require("../retrievers/getBindingIdentifiers");
+
+function isBinding(node, parent, grandparent) {
+ if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") {
+ return false;
+ }
+
+ const keys = _getBindingIdentifiers.default.keys[parent.type];
+
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const val = parent[key];
+
+ if (Array.isArray(val)) {
+ if (val.indexOf(node) >= 0) return true;
+ } else {
+ if (val === node) return true;
+ }
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBlockScoped.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBlockScoped.js
new file mode 100644
index 0000000000..77ec166300
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isBlockScoped.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isBlockScoped;
+
+var _generated = require("./generated");
+
+var _isLet = require("./isLet");
+
+function isBlockScoped(node) {
+ return (0, _generated.isFunctionDeclaration)(node) || (0, _generated.isClassDeclaration)(node) || (0, _isLet.default)(node);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isImmutable.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isImmutable.js
new file mode 100644
index 0000000000..27754f6599
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isImmutable.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isImmutable;
+
+var _isType = require("./isType");
+
+var _generated = require("./generated");
+
+function isImmutable(node) {
+ if ((0, _isType.default)(node.type, "Immutable")) return true;
+
+ if ((0, _generated.isIdentifier)(node)) {
+ if (node.name === "undefined") {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isLet.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isLet.js
new file mode 100644
index 0000000000..93d7562808
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isLet.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isLet;
+
+var _generated = require("./generated");
+
+var _constants = require("../constants");
+
+function isLet(node) {
+ return (0, _generated.isVariableDeclaration)(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNode.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNode.js
new file mode 100644
index 0000000000..e88a47aac4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNode.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isNode;
+
+var _definitions = require("../definitions");
+
+function isNode(node) {
+ return !!(node && _definitions.VISITOR_KEYS[node.type]);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
new file mode 100644
index 0000000000..f829834e91
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isNodesEquivalent.js
@@ -0,0 +1,67 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isNodesEquivalent;
+
+var _definitions = require("../definitions");
+
+function isNodesEquivalent(a, b) {
+ if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) {
+ return a === b;
+ }
+
+ if (a.type !== b.type) {
+ return false;
+ }
+
+ const fields = Object.keys(_definitions.NODE_FIELDS[a.type] || a.type);
+ const visitorKeys = _definitions.VISITOR_KEYS[a.type];
+
+ for (const field of fields) {
+ if (typeof a[field] !== typeof b[field]) {
+ return false;
+ }
+
+ if (a[field] == null && b[field] == null) {
+ continue;
+ } else if (a[field] == null || b[field] == null) {
+ return false;
+ }
+
+ if (Array.isArray(a[field])) {
+ if (!Array.isArray(b[field])) {
+ return false;
+ }
+
+ if (a[field].length !== b[field].length) {
+ return false;
+ }
+
+ for (let i = 0; i < a[field].length; i++) {
+ if (!isNodesEquivalent(a[field][i], b[field][i])) {
+ return false;
+ }
+ }
+
+ continue;
+ }
+
+ if (typeof a[field] === "object" && !(visitorKeys != null && visitorKeys.includes(field))) {
+ for (const key of Object.keys(a[field])) {
+ if (a[field][key] !== b[field][key]) {
+ return false;
+ }
+ }
+
+ continue;
+ }
+
+ if (!isNodesEquivalent(a[field], b[field])) {
+ return false;
+ }
+ }
+
+ return true;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isPlaceholderType.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isPlaceholderType.js
new file mode 100644
index 0000000000..e8271de0b1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isPlaceholderType.js
@@ -0,0 +1,21 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isPlaceholderType;
+
+var _definitions = require("../definitions");
+
+function isPlaceholderType(placeholderType, targetType) {
+ if (placeholderType === targetType) return true;
+ const aliases = _definitions.PLACEHOLDERS_ALIAS[placeholderType];
+
+ if (aliases) {
+ for (const alias of aliases) {
+ if (targetType === alias) return true;
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isReferenced.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isReferenced.js
new file mode 100644
index 0000000000..dc94a69338
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isReferenced.js
@@ -0,0 +1,127 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isReferenced;
+
+function isReferenced(node, parent, grandparent) {
+ switch (parent.type) {
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ if (parent.property === node) {
+ return !!parent.computed;
+ }
+
+ return parent.object === node;
+
+ case "JSXMemberExpression":
+ return parent.object === node;
+
+ case "VariableDeclarator":
+ return parent.init === node;
+
+ case "ArrowFunctionExpression":
+ return parent.body === node;
+
+ case "PrivateName":
+ return false;
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "ObjectMethod":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+
+ return false;
+
+ case "ObjectProperty":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+
+ return !grandparent || grandparent.type !== "ObjectPattern";
+
+ case "ClassProperty":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+
+ return true;
+
+ case "ClassPrivateProperty":
+ return parent.key !== node;
+
+ case "ClassDeclaration":
+ case "ClassExpression":
+ return parent.superClass === node;
+
+ case "AssignmentExpression":
+ return parent.right === node;
+
+ case "AssignmentPattern":
+ return parent.right === node;
+
+ case "LabeledStatement":
+ return false;
+
+ case "CatchClause":
+ return false;
+
+ case "RestElement":
+ return false;
+
+ case "BreakStatement":
+ case "ContinueStatement":
+ return false;
+
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ return false;
+
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return false;
+
+ case "ExportSpecifier":
+ if (grandparent != null && grandparent.source) {
+ return false;
+ }
+
+ return parent.local === node;
+
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ return false;
+
+ case "ImportAttribute":
+ return false;
+
+ case "JSXAttribute":
+ return false;
+
+ case "ObjectPattern":
+ case "ArrayPattern":
+ return false;
+
+ case "MetaProperty":
+ return false;
+
+ case "ObjectTypeProperty":
+ return parent.key !== node;
+
+ case "TSEnumMember":
+ return parent.id !== node;
+
+ case "TSPropertySignature":
+ if (parent.key === node) {
+ return !!parent.computed;
+ }
+
+ return true;
+ }
+
+ return true;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isScope.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isScope.js
new file mode 100644
index 0000000000..0f82449cce
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isScope.js
@@ -0,0 +1,20 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isScope;
+
+var _generated = require("./generated");
+
+function isScope(node, parent) {
+ if ((0, _generated.isBlockStatement)(node) && ((0, _generated.isFunction)(parent) || (0, _generated.isCatchClause)(parent))) {
+ return false;
+ }
+
+ if ((0, _generated.isPattern)(node) && ((0, _generated.isFunction)(parent) || (0, _generated.isCatchClause)(parent))) {
+ return true;
+ }
+
+ return (0, _generated.isScopable)(node);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isSpecifierDefault.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
new file mode 100644
index 0000000000..25431cc273
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isSpecifierDefault.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isSpecifierDefault;
+
+var _generated = require("./generated");
+
+function isSpecifierDefault(specifier) {
+ return (0, _generated.isImportDefaultSpecifier)(specifier) || (0, _generated.isIdentifier)(specifier.imported || specifier.exported, {
+ name: "default"
+ });
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isType.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isType.js
new file mode 100644
index 0000000000..59d31dfbbf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isType.js
@@ -0,0 +1,24 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isType;
+
+var _definitions = require("../definitions");
+
+function isType(nodeType, targetType) {
+ if (nodeType === targetType) return true;
+ if (_definitions.ALIAS_KEYS[targetType]) return false;
+ const aliases = _definitions.FLIPPED_ALIAS_KEYS[targetType];
+
+ if (aliases) {
+ if (aliases[0] === nodeType) return true;
+
+ for (const alias of aliases) {
+ if (nodeType === alias) return true;
+ }
+ }
+
+ return false;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidES3Identifier.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
new file mode 100644
index 0000000000..5cef5664df
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidES3Identifier.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isValidES3Identifier;
+
+var _isValidIdentifier = require("./isValidIdentifier");
+
+const RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
+
+function isValidES3Identifier(name) {
+ return (0, _isValidIdentifier.default)(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidIdentifier.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidIdentifier.js
new file mode 100644
index 0000000000..3fa6f98000
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isValidIdentifier.js
@@ -0,0 +1,20 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isValidIdentifier;
+
+var _helperValidatorIdentifier = require("@babel/helper-validator-identifier");
+
+function isValidIdentifier(name, reserved = true) {
+ if (typeof name !== "string") return false;
+
+ if (reserved) {
+ if ((0, _helperValidatorIdentifier.isKeyword)(name) || (0, _helperValidatorIdentifier.isStrictReservedWord)(name, true)) {
+ return false;
+ }
+ }
+
+ return (0, _helperValidatorIdentifier.isIdentifierName)(name);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isVar.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isVar.js
new file mode 100644
index 0000000000..a34801d18f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/isVar.js
@@ -0,0 +1,16 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isVar;
+
+var _generated = require("./generated");
+
+var _constants = require("../constants");
+
+function isVar(node) {
+ return (0, _generated.isVariableDeclaration)(node, {
+ kind: "var"
+ }) && !node[_constants.BLOCK_SCOPED_SYMBOL];
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/matchesPattern.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/matchesPattern.js
new file mode 100644
index 0000000000..d961f5a6ef
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/matchesPattern.js
@@ -0,0 +1,42 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = matchesPattern;
+
+var _generated = require("./generated");
+
+function matchesPattern(member, match, allowPartial) {
+ if (!(0, _generated.isMemberExpression)(member)) return false;
+ const parts = Array.isArray(match) ? match : match.split(".");
+ const nodes = [];
+ let node;
+
+ for (node = member; (0, _generated.isMemberExpression)(node); node = node.object) {
+ nodes.push(node.property);
+ }
+
+ nodes.push(node);
+ if (nodes.length < parts.length) return false;
+ if (!allowPartial && nodes.length > parts.length) return false;
+
+ for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {
+ const node = nodes[j];
+ let value;
+
+ if ((0, _generated.isIdentifier)(node)) {
+ value = node.name;
+ } else if ((0, _generated.isStringLiteral)(node)) {
+ value = node.value;
+ } else if ((0, _generated.isThisExpression)(node)) {
+ value = "this";
+ } else {
+ return false;
+ }
+
+ if (parts[i] !== value) return false;
+ }
+
+ return true;
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isCompatTag.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isCompatTag.js
new file mode 100644
index 0000000000..57761c2b1b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isCompatTag.js
@@ -0,0 +1,10 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = isCompatTag;
+
+function isCompatTag(tagName) {
+ return !!tagName && /^[a-z]/.test(tagName);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isReactComponent.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isReactComponent.js
new file mode 100644
index 0000000000..0dd2102589
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/react/isReactComponent.js
@@ -0,0 +1,12 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _buildMatchMemberExpression = require("../buildMatchMemberExpression");
+
+const isReactComponent = (0, _buildMatchMemberExpression.default)("React.Component");
+var _default = isReactComponent;
+exports.default = _default; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/validate.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/validate.js
new file mode 100644
index 0000000000..a2bfe3d491
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/validators/validate.js
@@ -0,0 +1,32 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = validate;
+exports.validateChild = validateChild;
+exports.validateField = validateField;
+
+var _definitions = require("../definitions");
+
+function validate(node, key, val) {
+ if (!node) return;
+ const fields = _definitions.NODE_FIELDS[node.type];
+ if (!fields) return;
+ const field = fields[key];
+ validateField(node, key, val, field);
+ validateChild(node, key, val);
+}
+
+function validateField(node, key, val, field) {
+ if (!(field != null && field.validate)) return;
+ if (field.optional && val == null) return;
+ field.validate(node, key, val);
+}
+
+function validateChild(node, key, val) {
+ if (val == null) return;
+ const validate = _definitions.NODE_PARENT_VALIDATIONS[val.type];
+ if (!validate) return;
+ validate(node, key, val);
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/package.json b/tools/node_modules/eslint/node_modules/@babel/types/package.json
new file mode 100644
index 0000000000..e7b33d1620
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/package.json
@@ -0,0 +1,39 @@
+{
+ "name": "@babel/types",
+ "version": "7.16.0",
+ "description": "Babel Types is a Lodash-esque utility library for AST nodes",
+ "author": "The Babel Team (https://babel.dev/team)",
+ "homepage": "https://babel.dev/docs/en/next/babel-types",
+ "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A%20types%22+is%3Aopen",
+ "license": "MIT",
+ "publishConfig": {
+ "access": "public"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel.git",
+ "directory": "packages/babel-types"
+ },
+ "main": "./lib/index.js",
+ "types": "./lib/index-legacy.d.ts",
+ "typesVersions": {
+ ">=3.7": {
+ "lib/index-legacy.d.ts": [
+ "lib/index.d.ts"
+ ]
+ }
+ },
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.15.7",
+ "to-fast-properties": "^2.0.0"
+ },
+ "devDependencies": {
+ "@babel/generator": "^7.16.0",
+ "@babel/parser": "^7.16.0",
+ "chalk": "^4.1.0",
+ "glob": "^7.1.7"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js
new file mode 100644
index 0000000000..bdfd94857f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/asserts.js
@@ -0,0 +1,50 @@
+import definitions from "../../lib/definitions/index.js";
+
+function addAssertHelper(type) {
+ const result =
+ definitions.NODE_FIELDS[type] || definitions.FLIPPED_ALIAS_KEYS[type]
+ ? `node is t.${type}`
+ : "boolean";
+
+ return `export function assert${type}(node: object | null | undefined, opts?: object | null): asserts ${
+ result === "boolean" ? "node" : result
+ } {
+ assert("${type}", node, opts) }
+ `;
+}
+
+export default function generateAsserts() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import is from "../../validators/is";
+import type * as t from "../..";
+
+function assert(type: string, node: any, opts?: any): void {
+ if (!is(type, node, opts)) {
+ throw new Error(
+ \`Expected type "\${type}" with option \${JSON.stringify(opts)}, \` +
+ \`but instead got "\${node.type}".\`,
+ );
+ }
+}\n\n`;
+
+ Object.keys(definitions.VISITOR_KEYS).forEach(type => {
+ output += addAssertHelper(type);
+ });
+
+ Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
+ output += addAssertHelper(type);
+ });
+
+ Object.keys(definitions.DEPRECATED_KEYS).forEach(type => {
+ const newType = definitions.DEPRECATED_KEYS[type];
+ output += `export function assert${type}(node: any, opts: any): void {
+ console.trace("The node type ${type} has been renamed to ${newType}");
+ assert("${type}", node, opts);
+}\n`;
+ });
+
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js
new file mode 100644
index 0000000000..3bf42869f1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/ast-types.js
@@ -0,0 +1,144 @@
+import t from "../../lib/index.js";
+import stringifyValidator from "../utils/stringifyValidator.js";
+
+export default function generateAstTypes() {
+ let code = `// NOTE: This file is autogenerated. Do not modify.
+// See packages/babel-types/scripts/generators/ast-types.js for script used.
+
+interface BaseComment {
+ value: string;
+ start: number;
+ end: number;
+ loc: SourceLocation;
+ type: "CommentBlock" | "CommentLine";
+}
+
+export interface CommentBlock extends BaseComment {
+ type: "CommentBlock";
+}
+
+export interface CommentLine extends BaseComment {
+ type: "CommentLine";
+}
+
+export type Comment = CommentBlock | CommentLine;
+
+export interface SourceLocation {
+ start: {
+ line: number;
+ column: number;
+ };
+
+ end: {
+ line: number;
+ column: number;
+ };
+}
+
+interface BaseNode {
+ leadingComments: ReadonlyArray<Comment> | null;
+ innerComments: ReadonlyArray<Comment> | null;
+ trailingComments: ReadonlyArray<Comment> | null;
+ start: number | null;
+ end: number | null;
+ loc: SourceLocation | null;
+ type: Node["type"];
+ range?: [number, number];
+ extra?: Record<string, unknown>;
+}
+
+export type CommentTypeShorthand = "leading" | "inner" | "trailing";
+
+export type Node = ${t.TYPES.filter(k => !t.FLIPPED_ALIAS_KEYS[k])
+ .sort()
+ .join(" | ")};\n\n`;
+
+ const deprecatedAlias = {};
+ for (const type in t.DEPRECATED_KEYS) {
+ deprecatedAlias[t.DEPRECATED_KEYS[type]] = type;
+ }
+ for (const type in t.NODE_FIELDS) {
+ const fields = t.NODE_FIELDS[type];
+ const fieldNames = sortFieldNames(Object.keys(t.NODE_FIELDS[type]), type);
+ const struct = [];
+
+ fieldNames.forEach(fieldName => {
+ const field = fields[fieldName];
+ // Future / annoying TODO:
+ // MemberExpression.property, ObjectProperty.key and ObjectMethod.key need special cases; either:
+ // - convert the declaration to chain() like ClassProperty.key and ClassMethod.key,
+ // - declare an alias type for valid keys, detect the case and reuse it here,
+ // - declare a disjoint union with, for example, ObjectPropertyBase,
+ // ObjectPropertyLiteralKey and ObjectPropertyComputedKey, and declare ObjectProperty
+ // as "ObjectPropertyBase & (ObjectPropertyLiteralKey | ObjectPropertyComputedKey)"
+ let typeAnnotation = stringifyValidator(field.validate, "");
+
+ if (isNullable(field) && !hasDefault(field)) {
+ typeAnnotation += " | null";
+ }
+
+ const alphaNumeric = /^\w+$/;
+ const optional = field.optional ? "?" : "";
+
+ if (t.isValidIdentifier(fieldName) || alphaNumeric.test(fieldName)) {
+ struct.push(`${fieldName}${optional}: ${typeAnnotation};`);
+ } else {
+ struct.push(`"${fieldName}"${optional}: ${typeAnnotation};`);
+ }
+ });
+
+ code += `export interface ${type} extends BaseNode {
+ type: "${type}";
+ ${struct.join("\n ").trim()}
+}\n\n`;
+
+ if (deprecatedAlias[type]) {
+ code += `/**
+ * @deprecated Use \`${type}\`
+ */
+export interface ${deprecatedAlias[type]} extends BaseNode {
+ type: "${deprecatedAlias[type]}";
+ ${struct.join("\n ").trim()}
+}\n\n
+`;
+ }
+ }
+
+ for (const type in t.FLIPPED_ALIAS_KEYS) {
+ const types = t.FLIPPED_ALIAS_KEYS[type];
+ code += `export type ${type} = ${types
+ .map(type => `${type}`)
+ .join(" | ")};\n`;
+ }
+ code += "\n";
+
+ code += "export interface Aliases {\n";
+ for (const type in t.FLIPPED_ALIAS_KEYS) {
+ code += ` ${type}: ${type};\n`;
+ }
+ code += "}\n\n";
+ code += `export type DeprecatedAliases = ${Object.keys(
+ t.DEPRECATED_KEYS
+ ).join(" | ")}\n\n`;
+
+ return code;
+}
+
+function hasDefault(field) {
+ return field.default != null;
+}
+
+function isNullable(field) {
+ return field.optional || hasDefault(field);
+}
+
+function sortFieldNames(fields, type) {
+ return fields.sort((fieldA, fieldB) => {
+ const indexA = t.BUILDER_KEYS[type].indexOf(fieldA);
+ const indexB = t.BUILDER_KEYS[type].indexOf(fieldB);
+ if (indexA === indexB) return fieldA < fieldB ? -1 : 1;
+ if (indexA === -1) return 1;
+ if (indexB === -1) return -1;
+ return indexA - indexB;
+ });
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js
new file mode 100644
index 0000000000..13e772eb43
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/builders.js
@@ -0,0 +1,163 @@
+import t from "../../lib/index.js";
+import definitions from "../../lib/definitions/index.js";
+import formatBuilderName from "../utils/formatBuilderName.js";
+import lowerFirst from "../utils/lowerFirst.js";
+import stringifyValidator from "../utils/stringifyValidator.js";
+
+function areAllRemainingFieldsNullable(fieldName, fieldNames, fields) {
+ const index = fieldNames.indexOf(fieldName);
+ return fieldNames.slice(index).every(_ => isNullable(fields[_]));
+}
+
+function hasDefault(field) {
+ return field.default != null;
+}
+
+function isNullable(field) {
+ return field.optional || hasDefault(field);
+}
+
+function sortFieldNames(fields, type) {
+ return fields.sort((fieldA, fieldB) => {
+ const indexA = t.BUILDER_KEYS[type].indexOf(fieldA);
+ const indexB = t.BUILDER_KEYS[type].indexOf(fieldB);
+ if (indexA === indexB) return fieldA < fieldB ? -1 : 1;
+ if (indexA === -1) return 1;
+ if (indexB === -1) return -1;
+ return indexA - indexB;
+ });
+}
+
+function generateBuilderArgs(type) {
+ const fields = t.NODE_FIELDS[type];
+ const fieldNames = sortFieldNames(Object.keys(t.NODE_FIELDS[type]), type);
+ const builderNames = t.BUILDER_KEYS[type];
+
+ const args = [];
+
+ fieldNames.forEach(fieldName => {
+ const field = fields[fieldName];
+ // Future / annoying TODO:
+ // MemberExpression.property, ObjectProperty.key and ObjectMethod.key need special cases; either:
+ // - convert the declaration to chain() like ClassProperty.key and ClassMethod.key,
+ // - declare an alias type for valid keys, detect the case and reuse it here,
+ // - declare a disjoint union with, for example, ObjectPropertyBase,
+ // ObjectPropertyLiteralKey and ObjectPropertyComputedKey, and declare ObjectProperty
+ // as "ObjectPropertyBase & (ObjectPropertyLiteralKey | ObjectPropertyComputedKey)"
+ let typeAnnotation = stringifyValidator(field.validate, "t.");
+
+ if (isNullable(field) && !hasDefault(field)) {
+ typeAnnotation += " | null";
+ }
+
+ if (builderNames.includes(fieldName)) {
+ const bindingIdentifierName = t.toBindingIdentifierName(fieldName);
+ if (areAllRemainingFieldsNullable(fieldName, builderNames, fields)) {
+ args.push(
+ `${bindingIdentifierName}${
+ isNullable(field) ? "?:" : ":"
+ } ${typeAnnotation}`
+ );
+ } else {
+ args.push(
+ `${bindingIdentifierName}: ${typeAnnotation}${
+ isNullable(field) ? " | undefined" : ""
+ }`
+ );
+ }
+ }
+ });
+
+ return args;
+}
+
+export default function generateBuilders(kind) {
+ return kind === "uppercase.js"
+ ? generateUppercaseBuilders()
+ : generateLowercaseBuilders();
+}
+
+function generateLowercaseBuilders() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import builder from "../builder";
+import type * as t from "../..";
+
+/* eslint-disable @typescript-eslint/no-unused-vars */
+
+`;
+
+ const reservedNames = new Set(["super", "import"]);
+ Object.keys(definitions.BUILDER_KEYS).forEach(type => {
+ const defArgs = generateBuilderArgs(type);
+ const formatedBuilderName = formatBuilderName(type);
+ const formatedBuilderNameLocal = reservedNames.has(formatedBuilderName)
+ ? `_${formatedBuilderName}`
+ : formatedBuilderName;
+ output += `${
+ formatedBuilderNameLocal === formatedBuilderName ? "export " : ""
+ }function ${formatedBuilderNameLocal}(${defArgs.join(
+ ", "
+ )}): t.${type} { return builder.apply("${type}", arguments); }\n`;
+ if (formatedBuilderNameLocal !== formatedBuilderName) {
+ output += `export { ${formatedBuilderNameLocal} as ${formatedBuilderName} };\n`;
+ }
+
+ // This is needed for backwards compatibility.
+ // It should be removed in the next major version.
+ // JSXIdentifier -> jSXIdentifier
+ if (/^[A-Z]{2}/.test(type)) {
+ output += `export { ${formatedBuilderNameLocal} as ${lowerFirst(
+ type
+ )} }\n`;
+ }
+ });
+
+ Object.keys(definitions.DEPRECATED_KEYS).forEach(type => {
+ const newType = definitions.DEPRECATED_KEYS[type];
+ const formatedBuilderName = formatBuilderName(type);
+ output += `/** @deprecated */
+function ${type}(${generateBuilderArgs(newType).join(", ")}): t.${type} {
+ console.trace("The node type ${type} has been renamed to ${newType}");
+ return builder.apply("${type}", arguments);
+}
+export { ${type} as ${formatedBuilderName} };\n`;
+ // This is needed for backwards compatibility.
+ // It should be removed in the next major version.
+ // JSXIdentifier -> jSXIdentifier
+ if (/^[A-Z]{2}/.test(type)) {
+ output += `export { ${type} as ${lowerFirst(type)} }\n`;
+ }
+ });
+
+ return output;
+}
+
+function generateUppercaseBuilders() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+
+/**
+ * This file is written in JavaScript and not TypeScript because uppercase builders
+ * conflict with AST types. TypeScript reads the uppercase.d.ts file instead.
+ */
+
+ export {\n`;
+
+ Object.keys(definitions.BUILDER_KEYS).forEach(type => {
+ const formatedBuilderName = formatBuilderName(type);
+ output += ` ${formatedBuilderName} as ${type},\n`;
+ });
+
+ Object.keys(definitions.DEPRECATED_KEYS).forEach(type => {
+ const formatedBuilderName = formatBuilderName(type);
+ output += ` ${formatedBuilderName} as ${type},\n`;
+ });
+
+ output += ` } from './index';\n`;
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js
new file mode 100644
index 0000000000..68abdbd837
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/constants.js
@@ -0,0 +1,15 @@
+import definitions from "../../lib/definitions/index.js";
+
+export default function generateConstants() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import { FLIPPED_ALIAS_KEYS } from "../../definitions";\n\n`;
+
+ Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
+ output += `export const ${type.toUpperCase()}_TYPES = FLIPPED_ALIAS_KEYS["${type}"];\n`;
+ });
+
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js
new file mode 100644
index 0000000000..95e4815fb0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/docs.js
@@ -0,0 +1,282 @@
+import util from "util";
+import stringifyValidator from "../utils/stringifyValidator.js";
+import toFunctionName from "../utils/toFunctionName.js";
+
+import t from "../../lib/index.js";
+
+const readme = [
+ `---
+id: babel-types
+title: @babel/types
+---
+<!-- Do not modify! This file is automatically generated by
+ github.com/babel/babel/babel-types/scripts/generators/docs.js !-->
+
+> This module contains methods for building ASTs manually and for checking the types of AST nodes.
+
+## Install
+
+\`\`\`sh
+npm install --save-dev @babel/types
+\`\`\`
+
+## API`,
+];
+
+const customTypes = {
+ ClassMethod: {
+ key: "if computed then `Expression` else `Identifier | Literal`",
+ },
+ Identifier: {
+ name: "`string`",
+ },
+ MemberExpression: {
+ property: "if computed then `Expression` else `Identifier`",
+ },
+ ObjectMethod: {
+ key: "if computed then `Expression` else `Identifier | Literal`",
+ },
+ ObjectProperty: {
+ key: "if computed then `Expression` else `Identifier | Literal`",
+ },
+ ClassPrivateMethod: {
+ computed: "'false'",
+ },
+ ClassPrivateProperty: {
+ computed: "'false'",
+ },
+};
+const APIHistory = {
+ ClassProperty: [["v7.6.0", "Supports `static`"]],
+};
+function formatHistory(historyItems) {
+ const lines = historyItems.map(
+ item => "| `" + item[0] + "` | " + item[1] + " |"
+ );
+ return [
+ "<details>",
+ " <summary>History</summary>",
+ "| Version | Changes |",
+ "| --- | --- |",
+ ...lines,
+ "</details>",
+ ];
+}
+function printAPIHistory(key, readme) {
+ if (APIHistory[key]) {
+ readme.push("");
+ readme.push(...formatHistory(APIHistory[key]));
+ }
+}
+function printNodeFields(key, readme) {
+ if (Object.keys(t.NODE_FIELDS[key]).length > 0) {
+ readme.push("");
+ readme.push("AST Node `" + key + "` shape:");
+ Object.keys(t.NODE_FIELDS[key])
+ .sort(function (fieldA, fieldB) {
+ const indexA = t.BUILDER_KEYS[key].indexOf(fieldA);
+ const indexB = t.BUILDER_KEYS[key].indexOf(fieldB);
+ if (indexA === indexB) return fieldA < fieldB ? -1 : 1;
+ if (indexA === -1) return 1;
+ if (indexB === -1) return -1;
+ return indexA - indexB;
+ })
+ .forEach(function (field) {
+ const defaultValue = t.NODE_FIELDS[key][field].default;
+ const fieldDescription = ["`" + field + "`"];
+ const validator = t.NODE_FIELDS[key][field].validate;
+ if (customTypes[key] && customTypes[key][field]) {
+ fieldDescription.push(`: ${customTypes[key][field]}`);
+ } else if (validator) {
+ try {
+ fieldDescription.push(
+ ": `" + stringifyValidator(validator, "") + "`"
+ );
+ } catch (ex) {
+ if (ex.code === "UNEXPECTED_VALIDATOR_TYPE") {
+ console.log(
+ "Unrecognised validator type for " + key + "." + field
+ );
+ console.dir(ex.validator, { depth: 10, colors: true });
+ }
+ }
+ }
+ if (defaultValue !== null || t.NODE_FIELDS[key][field].optional) {
+ fieldDescription.push(
+ " (default: `" + util.inspect(defaultValue) + "`"
+ );
+ if (t.BUILDER_KEYS[key].indexOf(field) < 0) {
+ fieldDescription.push(", excluded from builder function");
+ }
+ fieldDescription.push(")");
+ } else {
+ fieldDescription.push(" (required)");
+ }
+ readme.push("- " + fieldDescription.join(""));
+ });
+ }
+}
+
+function printAliasKeys(key, readme) {
+ if (t.ALIAS_KEYS[key] && t.ALIAS_KEYS[key].length) {
+ readme.push("");
+ readme.push(
+ "Aliases: " +
+ t.ALIAS_KEYS[key]
+ .map(function (key) {
+ return "[`" + key + "`](#" + key.toLowerCase() + ")";
+ })
+ .join(", ")
+ );
+ }
+}
+readme.push("### Node Builders");
+readme.push("");
+Object.keys(t.BUILDER_KEYS)
+ .sort()
+ .forEach(function (key) {
+ readme.push("#### " + toFunctionName(key));
+ readme.push("");
+ readme.push("```javascript");
+ readme.push(
+ "t." + toFunctionName(key) + "(" + t.BUILDER_KEYS[key].join(", ") + ");"
+ );
+ readme.push("```");
+ printAPIHistory(key, readme);
+ readme.push("");
+ readme.push(
+ "See also `t.is" +
+ key +
+ "(node, opts)` and `t.assert" +
+ key +
+ "(node, opts)`."
+ );
+
+ printNodeFields(key, readme);
+ printAliasKeys(key, readme);
+
+ readme.push("");
+ readme.push("---");
+ readme.push("");
+ });
+
+function generateMapAliasToNodeTypes() {
+ const result = new Map();
+ for (const nodeType of Object.keys(t.ALIAS_KEYS)) {
+ const aliases = t.ALIAS_KEYS[nodeType];
+ if (!aliases) continue;
+ for (const alias of aliases) {
+ if (!result.has(alias)) {
+ result.set(alias, []);
+ }
+ const nodeTypes = result.get(alias);
+ nodeTypes.push(nodeType);
+ }
+ }
+ return result;
+}
+const aliasDescriptions = {
+ Binary:
+ "A cover of BinaryExpression and LogicalExpression, which share the same AST shape.",
+ Block: "Deprecated. Will be removed in Babel 8.",
+ BlockParent:
+ "A cover of AST nodes that start an execution context with new [LexicalEnvironment](https://tc39.es/ecma262/#table-additional-state-components-for-ecmascript-code-execution-contexts). In other words, they define the scope of `let` and `const` declarations.",
+ Class:
+ "A cover of ClassExpression and ClassDeclaration, which share the same AST shape.",
+ CompletionStatement:
+ "A statement that indicates the [completion records](https://tc39.es/ecma262/#sec-completion-record-specification-type). In other words, they define the control flow of the program, such as when should a loop break or an action throws critical errors.",
+ Conditional:
+ "A cover of ConditionalExpression and IfStatement, which share the same AST shape.",
+ Declaration:
+ "A cover of any [Declaration](https://tc39.es/ecma262/#prod-Declaration)s.",
+ EnumBody: "A cover of Flow enum bodies.",
+ EnumMember: "A cover of Flow enum membors.",
+ ExportDeclaration:
+ "A cover of any [ExportDeclaration](https://tc39.es/ecma262/#prod-ExportDeclaration)s.",
+ Expression:
+ "A cover of any [Expression](https://tc39.es/ecma262/#sec-ecmascript-language-expressions)s.",
+ ExpressionWrapper:
+ "A wrapper of expression that does not have runtime semantics.",
+ Flow: "A cover of AST nodes defined for Flow.",
+ FlowBaseAnnotation: "A cover of primary Flow type annotations.",
+ FlowDeclaration: "A cover of Flow declarations.",
+ FlowPredicate: "A cover of Flow predicates.",
+ FlowType: "A cover of Flow type annotations.",
+ For: "A cover of [ForStatement](https://tc39.es/ecma262/#sec-for-statement)s and [ForXStatement](#forxstatement)s.",
+ ForXStatement:
+ "A cover of [ForInStatements and ForOfStatements](https://tc39.es/ecma262/#sec-for-in-and-for-of-statements).",
+ Function:
+ "A cover of functions and [method](#method)s, the must have `body` and `params`. Note: `Function` is different to `FunctionParent`. For example, a `StaticBlock` is a `FunctionParent` but not `Function`.",
+ FunctionParent:
+ "A cover of AST nodes that start an execution context with new [VariableEnvironment](https://tc39.es/ecma262/#table-additional-state-components-for-ecmascript-code-execution-contexts). In other words, they define the scope of `var` declarations. FunctionParent did not include `Program` since Babel 7.",
+ Immutable:
+ "A cover of immutable objects and JSX elements. An object is [immutable](https://tc39.es/ecma262/#immutable-prototype-exotic-object) if no other properties can be defined once created.",
+ JSX: "A cover of AST nodes defined for [JSX](https://facebook.github.io/jsx/).",
+ LVal: "A cover of left hand side expressions used in the `left` of assignment expressions and [ForXStatement](#forxstatement)s. ",
+ Literal:
+ "A cover of [Literal](https://tc39.es/ecma262/#sec-primary-expression-literals)s, [Regular Expression Literal](https://tc39.es/ecma262/#sec-primary-expression-regular-expression-literals)s and [Template Literal](https://tc39.es/ecma262/#sec-template-literals)s.",
+ Loop: "A cover of loop statements.",
+ Method: "A cover of object methods and class methods.",
+ Miscellaneous:
+ "A cover of non-standard AST types that are sometimes useful for development.",
+ ModuleDeclaration:
+ "A cover of ImportDeclaration and [ExportDeclaration](#exportdeclaration)",
+ ModuleSpecifier:
+ "A cover of import and export specifiers. Note: It is _not_ the [ModuleSpecifier](https://tc39.es/ecma262/#prod-ModuleSpecifier) defined in the spec.",
+ ObjectMember:
+ "A cover of [members](https://tc39.es/ecma262/#prod-PropertyDefinitionList) in an object literal.",
+ Pattern:
+ "A cover of [BindingPattern](https://tc39.es/ecma262/#prod-BindingPattern) except Identifiers.",
+ PatternLike:
+ "A cover of [BindingPattern](https://tc39.es/ecma262/#prod-BindingPattern)s. ",
+ Private: "A cover of private class elements and private identifiers.",
+ Property: "A cover of object properties and class properties.",
+ Pureish:
+ "A cover of AST nodes which do not have side-effects. In other words, there is no observable behaviour changes if they are evaluated more than once.",
+ Scopable:
+ "A cover of [FunctionParent](#functionparent) and [BlockParent](#blockparent).",
+ Standardized:
+ "A cover of AST nodes which are part of an official ECMAScript specification.",
+ Statement:
+ "A cover of any [Statement](https://tc39.es/ecma262/#prod-Statement)s.",
+ TSBaseType: "A cover of primary TypeScript type annotations.",
+ TSEntityName: "A cover of ts entities.",
+ TSType: "A cover of TypeScript type annotations.",
+ TSTypeElement: "A cover of TypeScript type declarations.",
+ TypeScript: "A cover of AST nodes defined for TypeScript.",
+ Terminatorless:
+ "A cover of AST nodes whose semantic will change when a line terminator is inserted between the operator and the operand.",
+ UnaryLike: "A cover of UnaryExpression and SpreadElement.",
+ UserWhitespacable: "Deprecated. Will be removed in Babel 8.",
+ While:
+ "A cover of DoWhileStatement and WhileStatement, which share the same AST shape.",
+};
+const mapAliasToNodeTypes = generateMapAliasToNodeTypes();
+readme.push("### Aliases");
+readme.push("");
+for (const alias of [...mapAliasToNodeTypes.keys()].sort()) {
+ const nodeTypes = mapAliasToNodeTypes.get(alias);
+ nodeTypes.sort();
+ if (!(alias in aliasDescriptions)) {
+ throw new Error(
+ 'Missing alias descriptions of "' +
+ alias +
+ ", which covers " +
+ nodeTypes.join(",")
+ );
+ }
+ readme.push("#### " + alias);
+ readme.push("");
+ readme.push(aliasDescriptions[alias]);
+ readme.push("```javascript");
+ readme.push("t.is" + alias + "(node);");
+ readme.push("```");
+ readme.push("");
+ readme.push("Covered nodes: ");
+ for (const nodeType of nodeTypes) {
+ readme.push("- [`" + nodeType + "`](#" + nodeType.toLowerCase() + ")");
+ }
+ readme.push("");
+}
+
+process.stdout.write(readme.join("\n"));
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js
new file mode 100644
index 0000000000..7fabcc67c5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/flow.js
@@ -0,0 +1,260 @@
+import t from "../../lib/index.js";
+import stringifyValidator from "../utils/stringifyValidator.js";
+import toFunctionName from "../utils/toFunctionName.js";
+
+const NODE_PREFIX = "BabelNode";
+
+let code = `// NOTE: This file is autogenerated. Do not modify.
+// See packages/babel-types/scripts/generators/flow.js for script used.
+
+declare class ${NODE_PREFIX}Comment {
+ value: string;
+ start: number;
+ end: number;
+ loc: ${NODE_PREFIX}SourceLocation;
+}
+
+declare class ${NODE_PREFIX}CommentBlock extends ${NODE_PREFIX}Comment {
+ type: "CommentBlock";
+}
+
+declare class ${NODE_PREFIX}CommentLine extends ${NODE_PREFIX}Comment {
+ type: "CommentLine";
+}
+
+declare class ${NODE_PREFIX}SourceLocation {
+ start: {
+ line: number;
+ column: number;
+ };
+
+ end: {
+ line: number;
+ column: number;
+ };
+}
+
+declare class ${NODE_PREFIX} {
+ leadingComments?: Array<${NODE_PREFIX}Comment>;
+ innerComments?: Array<${NODE_PREFIX}Comment>;
+ trailingComments?: Array<${NODE_PREFIX}Comment>;
+ start: ?number;
+ end: ?number;
+ loc: ?${NODE_PREFIX}SourceLocation;
+ extra?: { [string]: mixed };
+}\n\n`;
+
+//
+
+const lines = [];
+
+for (const type in t.NODE_FIELDS) {
+ const fields = t.NODE_FIELDS[type];
+
+ const struct = ['type: "' + type + '";'];
+ const args = [];
+ const builderNames = t.BUILDER_KEYS[type];
+
+ Object.keys(t.NODE_FIELDS[type])
+ .sort((fieldA, fieldB) => {
+ const indexA = t.BUILDER_KEYS[type].indexOf(fieldA);
+ const indexB = t.BUILDER_KEYS[type].indexOf(fieldB);
+ if (indexA === indexB) return fieldA < fieldB ? -1 : 1;
+ if (indexA === -1) return 1;
+ if (indexB === -1) return -1;
+ return indexA - indexB;
+ })
+ .forEach(fieldName => {
+ const field = fields[fieldName];
+
+ let suffix = "";
+ if (field.optional || field.default != null) suffix += "?";
+
+ let typeAnnotation = "any";
+
+ const validate = field.validate;
+ if (validate) {
+ typeAnnotation = stringifyValidator(validate, NODE_PREFIX);
+ }
+
+ if (typeAnnotation) {
+ suffix += ": " + typeAnnotation;
+ }
+ if (builderNames.includes(fieldName)) {
+ args.push(t.toBindingIdentifierName(fieldName) + suffix);
+ }
+
+ if (t.isValidIdentifier(fieldName)) {
+ struct.push(fieldName + suffix + ";");
+ }
+ });
+
+ code += `declare class ${NODE_PREFIX}${type} extends ${NODE_PREFIX} {
+ ${struct.join("\n ").trim()}
+}\n\n`;
+
+ // Flow chokes on super() and import() :/
+ if (type !== "Super" && type !== "Import") {
+ lines.push(
+ `declare export function ${toFunctionName(type)}(${args.join(
+ ", "
+ )}): ${NODE_PREFIX}${type};`
+ );
+ } else {
+ const functionName = toFunctionName(type);
+ lines.push(
+ `declare function _${functionName}(${args.join(
+ ", "
+ )}): ${NODE_PREFIX}${type};`,
+ `declare export { _${functionName} as ${functionName} }`
+ );
+ }
+}
+
+for (const typeName of t.TYPES) {
+ const isDeprecated = !!t.DEPRECATED_KEYS[typeName];
+ const realName = isDeprecated ? t.DEPRECATED_KEYS[typeName] : typeName;
+
+ let decl = `declare export function is${typeName}(node: ?Object, opts?: ?Object): boolean`;
+ if (t.NODE_FIELDS[realName]) {
+ decl += ` %checks (node instanceof ${NODE_PREFIX}${realName})`;
+ }
+ lines.push(decl);
+
+ lines.push(
+ `declare export function assert${typeName}(node: ?Object, opts?: ?Object): void`
+ );
+}
+
+lines.push(
+ `declare export var VISITOR_KEYS: { [type: string]: string[] }`,
+
+ // assert/
+ `declare export function assertNode(obj: any): void`,
+
+ // builders/
+ // eslint-disable-next-line max-len
+ `declare export function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): ${NODE_PREFIX}TypeAnnotation`,
+ // eslint-disable-next-line max-len
+ `declare export function createUnionTypeAnnotation(types: Array<${NODE_PREFIX}FlowType>): ${NODE_PREFIX}UnionTypeAnnotation`,
+ // eslint-disable-next-line max-len
+ `declare export function createFlowUnionType(types: Array<${NODE_PREFIX}FlowType>): ${NODE_PREFIX}UnionTypeAnnotation`,
+ // this smells like "internal API"
+ // eslint-disable-next-line max-len
+ `declare export function buildChildren(node: { children: Array<${NODE_PREFIX}JSXText | ${NODE_PREFIX}JSXExpressionContainer | ${NODE_PREFIX}JSXSpreadChild | ${NODE_PREFIX}JSXElement | ${NODE_PREFIX}JSXFragment | ${NODE_PREFIX}JSXEmptyExpression> }): Array<${NODE_PREFIX}JSXText | ${NODE_PREFIX}JSXExpressionContainer | ${NODE_PREFIX}JSXSpreadChild | ${NODE_PREFIX}JSXElement | ${NODE_PREFIX}JSXFragment>`,
+
+ // clone/
+ `declare export function clone<T>(n: T): T;`,
+ `declare export function cloneDeep<T>(n: T): T;`,
+ `declare export function cloneDeepWithoutLoc<T>(n: T): T;`,
+ `declare export function cloneNode<T>(n: T, deep?: boolean, withoutLoc?: boolean): T;`,
+ `declare export function cloneWithoutLoc<T>(n: T): T;`,
+
+ // comments/
+ `declare type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'`,
+ // eslint-disable-next-line max-len
+ `declare export function addComment<T: BabelNode>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T`,
+ // eslint-disable-next-line max-len
+ `declare export function addComments<T: BabelNode>(node: T, type: CommentTypeShorthand, comments: Array<Comment>): T`,
+ `declare export function inheritInnerComments(node: BabelNode, parent: BabelNode): void`,
+ `declare export function inheritLeadingComments(node: BabelNode, parent: BabelNode): void`,
+ `declare export function inheritsComments<T: BabelNode>(node: T, parent: BabelNode): void`,
+ `declare export function inheritTrailingComments(node: BabelNode, parent: BabelNode): void`,
+ `declare export function removeComments<T: BabelNode>(node: T): T`,
+
+ // converters/
+ `declare export function ensureBlock(node: ${NODE_PREFIX}, key: string): ${NODE_PREFIX}BlockStatement`,
+ `declare export function toBindingIdentifierName(name?: ?string): string`,
+ // eslint-disable-next-line max-len
+ `declare export function toBlock(node: ${NODE_PREFIX}Statement | ${NODE_PREFIX}Expression, parent?: ${NODE_PREFIX}Function | null): ${NODE_PREFIX}BlockStatement`,
+ // eslint-disable-next-line max-len
+ `declare export function toComputedKey(node: ${NODE_PREFIX}Method | ${NODE_PREFIX}Property, key?: ${NODE_PREFIX}Expression | ${NODE_PREFIX}Identifier): ${NODE_PREFIX}Expression`,
+ // eslint-disable-next-line max-len
+ `declare export function toExpression(node: ${NODE_PREFIX}ExpressionStatement | ${NODE_PREFIX}Expression | ${NODE_PREFIX}Class | ${NODE_PREFIX}Function): ${NODE_PREFIX}Expression`,
+ `declare export function toIdentifier(name?: ?string): string`,
+ // eslint-disable-next-line max-len
+ `declare export function toKeyAlias(node: ${NODE_PREFIX}Method | ${NODE_PREFIX}Property, key?: ${NODE_PREFIX}): string`,
+ // toSequenceExpression relies on types that aren't declared in flow
+ // eslint-disable-next-line max-len
+ `declare export function toStatement(node: ${NODE_PREFIX}Statement | ${NODE_PREFIX}Class | ${NODE_PREFIX}Function | ${NODE_PREFIX}AssignmentExpression, ignore?: boolean): ${NODE_PREFIX}Statement | void`,
+ `declare export function valueToNode(value: any): ${NODE_PREFIX}Expression`,
+
+ // modifications/
+ // eslint-disable-next-line max-len
+ `declare export function removeTypeDuplicates(types: Array<${NODE_PREFIX}FlowType>): Array<${NODE_PREFIX}FlowType>`,
+ // eslint-disable-next-line max-len
+ `declare export function appendToMemberExpression(member: ${NODE_PREFIX}MemberExpression, append: ${NODE_PREFIX}, computed?: boolean): ${NODE_PREFIX}MemberExpression`,
+ // eslint-disable-next-line max-len
+ `declare export function inherits<T: BabelNode>(child: T, parent: ${NODE_PREFIX} | null | void): T`,
+ // eslint-disable-next-line max-len
+ `declare export function prependToMemberExpression(member: ${NODE_PREFIX}MemberExpression, prepend: ${NODE_PREFIX}Expression): ${NODE_PREFIX}MemberExpression`,
+ `declare export function removeProperties<T>(n: T, opts: ?{}): void;`,
+ `declare export function removePropertiesDeep<T>(n: T, opts: ?{}): T;`,
+
+ // retrievers/
+ // eslint-disable-next-line max-len
+ `declare export var getBindingIdentifiers: {
+ (node: ${NODE_PREFIX}, duplicates?: boolean, outerOnly?: boolean): { [key: string]: ${NODE_PREFIX}Identifier | Array<${NODE_PREFIX}Identifier> },
+ keys: { [type: string]: string[] }
+ }`,
+ // eslint-disable-next-line max-len
+ `declare export function getOuterBindingIdentifiers(node: BabelNode, duplicates?: boolean): { [key: string]: ${NODE_PREFIX}Identifier | Array<${NODE_PREFIX}Identifier> }`,
+
+ // traverse/
+ `declare type TraversalAncestors = Array<{
+ node: BabelNode,
+ key: string,
+ index?: number,
+ }>;
+ declare type TraversalHandler<T> = (BabelNode, TraversalAncestors, T) => void;
+ declare type TraversalHandlers<T> = {
+ enter?: TraversalHandler<T>,
+ exit?: TraversalHandler<T>,
+ };`.replace(/(^|\n) {2}/g, "$1"),
+ // eslint-disable-next-line
+ `declare export function traverse<T>(n: BabelNode, TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;`,
+ `declare export function traverseFast<T>(n: BabelNode, h: TraversalHandler<T>, state?: T): void;`,
+
+ // utils/
+ // cleanJSXElementLiteralChild is not exported
+ // inherit is not exported
+ `declare export function shallowEqual(actual: Object, expected: Object): boolean`,
+
+ // validators/
+ // eslint-disable-next-line max-len
+ `declare export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (?BabelNode) => boolean`,
+ `declare export function is(type: string, n: BabelNode, opts: Object): boolean;`,
+ `declare export function isBinding(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean`,
+ `declare export function isBlockScoped(node: BabelNode): boolean`,
+ `declare export function isImmutable(node: BabelNode): boolean`,
+ `declare export function isLet(node: BabelNode): boolean`,
+ `declare export function isNode(node: ?Object): boolean`,
+ `declare export function isNodesEquivalent(a: any, b: any): boolean`,
+ `declare export function isPlaceholderType(placeholderType: string, targetType: string): boolean`,
+ `declare export function isReferenced(node: BabelNode, parent: BabelNode, grandparent?: BabelNode): boolean`,
+ `declare export function isScope(node: BabelNode, parent: BabelNode): boolean`,
+ `declare export function isSpecifierDefault(specifier: BabelNodeModuleSpecifier): boolean`,
+ `declare export function isType(nodetype: ?string, targetType: string): boolean`,
+ `declare export function isValidES3Identifier(name: string): boolean`,
+ `declare export function isValidES3Identifier(name: string): boolean`,
+ `declare export function isValidIdentifier(name: string): boolean`,
+ `declare export function isVar(node: BabelNode): boolean`,
+ // eslint-disable-next-line max-len
+ `declare export function matchesPattern(node: ?BabelNode, match: string | Array<string>, allowPartial?: boolean): boolean`,
+ `declare export function validate(n: BabelNode, key: string, value: mixed): void;`
+);
+
+for (const type in t.FLIPPED_ALIAS_KEYS) {
+ const types = t.FLIPPED_ALIAS_KEYS[type];
+ code += `type ${NODE_PREFIX}${type} = ${types
+ .map(type => `${NODE_PREFIX}${type}`)
+ .join(" | ")};\n`;
+}
+
+code += `\ndeclare module "@babel/types" {
+ ${lines.join("\n").replace(/\n/g, "\n ").trim()}
+}\n`;
+
+//
+
+process.stdout.write(code);
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js
new file mode 100644
index 0000000000..40da48f4e7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/typescript-legacy.js
@@ -0,0 +1,369 @@
+import t from "../../lib/index.js";
+import stringifyValidator from "../utils/stringifyValidator.js";
+import toFunctionName from "../utils/toFunctionName.js";
+
+let code = `// NOTE: This file is autogenerated. Do not modify.
+// See packages/babel-types/scripts/generators/typescript-legacy.js for script used.
+
+interface BaseComment {
+ value: string;
+ start: number;
+ end: number;
+ loc: SourceLocation;
+ type: "CommentBlock" | "CommentLine";
+}
+
+export interface CommentBlock extends BaseComment {
+ type: "CommentBlock";
+}
+
+export interface CommentLine extends BaseComment {
+ type: "CommentLine";
+}
+
+export type Comment = CommentBlock | CommentLine;
+
+export interface SourceLocation {
+ start: {
+ line: number;
+ column: number;
+ };
+
+ end: {
+ line: number;
+ column: number;
+ };
+}
+
+interface BaseNode {
+ leadingComments: ReadonlyArray<Comment> | null;
+ innerComments: ReadonlyArray<Comment> | null;
+ trailingComments: ReadonlyArray<Comment> | null;
+ start: number | null;
+ end: number | null;
+ loc: SourceLocation | null;
+ type: Node["type"];
+ extra?: Record<string, unknown>;
+}
+
+export type Node = ${t.TYPES.sort().join(" | ")};\n\n`;
+
+//
+
+const lines = [];
+
+for (const type in t.NODE_FIELDS) {
+ const fields = t.NODE_FIELDS[type];
+ const fieldNames = sortFieldNames(Object.keys(t.NODE_FIELDS[type]), type);
+ const builderNames = t.BUILDER_KEYS[type];
+
+ const struct = ['type: "' + type + '";'];
+ const args = [];
+
+ fieldNames.forEach(fieldName => {
+ const field = fields[fieldName];
+ // Future / annoying TODO:
+ // MemberExpression.property, ObjectProperty.key and ObjectMethod.key need special cases; either:
+ // - convert the declaration to chain() like ClassProperty.key and ClassMethod.key,
+ // - declare an alias type for valid keys, detect the case and reuse it here,
+ // - declare a disjoint union with, for example, ObjectPropertyBase,
+ // ObjectPropertyLiteralKey and ObjectPropertyComputedKey, and declare ObjectProperty
+ // as "ObjectPropertyBase & (ObjectPropertyLiteralKey | ObjectPropertyComputedKey)"
+ let typeAnnotation = stringifyValidator(field.validate, "");
+
+ if (isNullable(field) && !hasDefault(field)) {
+ typeAnnotation += " | null";
+ }
+
+ if (builderNames.includes(fieldName)) {
+ if (areAllRemainingFieldsNullable(fieldName, builderNames, fields)) {
+ args.push(
+ `${t.toBindingIdentifierName(fieldName)}${
+ isNullable(field) ? "?:" : ":"
+ } ${typeAnnotation}`
+ );
+ } else {
+ args.push(
+ `${t.toBindingIdentifierName(fieldName)}: ${typeAnnotation}${
+ isNullable(field) ? " | undefined" : ""
+ }`
+ );
+ }
+ }
+
+ const alphaNumeric = /^\w+$/;
+
+ if (t.isValidIdentifier(fieldName) || alphaNumeric.test(fieldName)) {
+ struct.push(`${fieldName}: ${typeAnnotation};`);
+ } else {
+ struct.push(`"${fieldName}": ${typeAnnotation};`);
+ }
+ });
+
+ code += `export interface ${type} extends BaseNode {
+ ${struct.join("\n ").trim()}
+}\n\n`;
+
+ // super and import are reserved words in JavaScript
+ if (type !== "Super" && type !== "Import") {
+ lines.push(
+ `export function ${toFunctionName(type)}(${args.join(", ")}): ${type};`
+ );
+ } else {
+ const functionName = toFunctionName(type);
+ lines.push(
+ `declare function _${functionName}(${args.join(", ")}): ${type};`,
+ `export { _${functionName} as ${functionName}}`
+ );
+ }
+}
+
+for (const typeName of t.TYPES) {
+ const isDeprecated = !!t.DEPRECATED_KEYS[typeName];
+ const realName = isDeprecated ? t.DEPRECATED_KEYS[typeName] : typeName;
+
+ const result =
+ t.NODE_FIELDS[realName] || t.FLIPPED_ALIAS_KEYS[realName]
+ ? `node is ${realName}`
+ : "boolean";
+
+ if (isDeprecated) {
+ lines.push(`/** @deprecated Use \`is${realName}\` */`);
+ }
+ lines.push(
+ `export function is${typeName}(node: object | null | undefined, opts?: object | null): ${result};`
+ );
+
+ if (isDeprecated) {
+ lines.push(`/** @deprecated Use \`assert${realName}\` */`);
+ }
+ lines.push(
+ `export function assert${typeName}(node: object | null | undefined, opts?: object | null): void;`
+ );
+}
+
+lines.push(
+ // assert/
+ `export function assertNode(obj: any): void`,
+
+ // builders/
+ // eslint-disable-next-line max-len
+ `export function createTypeAnnotationBasedOnTypeof(type: 'string' | 'number' | 'undefined' | 'boolean' | 'function' | 'object' | 'symbol'): StringTypeAnnotation | VoidTypeAnnotation | NumberTypeAnnotation | BooleanTypeAnnotation | GenericTypeAnnotation`,
+ `export function createUnionTypeAnnotation<T extends FlowType>(types: [T]): T`,
+ `export function createFlowUnionType<T extends FlowType>(types: [T]): T`,
+ // this probably misbehaves if there are 0 elements, and it's not a UnionTypeAnnotation if there's only 1
+ // it is possible to require "2 or more" for this overload ([T, T, ...T[]]) but it requires typescript 3.0
+ `export function createUnionTypeAnnotation(types: ReadonlyArray<FlowType>): UnionTypeAnnotation`,
+ `export function createFlowUnionType(types: ReadonlyArray<FlowType>): UnionTypeAnnotation`,
+ // this smells like "internal API"
+ // eslint-disable-next-line max-len
+ `export function buildChildren(node: { children: ReadonlyArray<JSXText | JSXExpressionContainer | JSXSpreadChild | JSXElement | JSXFragment | JSXEmptyExpression> }): JSXElement['children']`,
+
+ // clone/
+ `export function clone<T extends Node>(n: T): T;`,
+ `export function cloneDeep<T extends Node>(n: T): T;`,
+ `export function cloneDeepWithoutLoc<T extends Node>(n: T): T;`,
+ `export function cloneNode<T extends Node>(n: T, deep?: boolean, withoutLoc?: boolean): T;`,
+ `export function cloneWithoutLoc<T extends Node>(n: T): T;`,
+
+ // comments/
+ `export type CommentTypeShorthand = 'leading' | 'inner' | 'trailing'`,
+ // eslint-disable-next-line max-len
+ `export function addComment<T extends Node>(node: T, type: CommentTypeShorthand, content: string, line?: boolean): T`,
+ // eslint-disable-next-line max-len
+ `export function addComments<T extends Node>(node: T, type: CommentTypeShorthand, comments: ReadonlyArray<Comment>): T`,
+ `export function inheritInnerComments(node: Node, parent: Node): void`,
+ `export function inheritLeadingComments(node: Node, parent: Node): void`,
+ `export function inheritsComments<T extends Node>(node: T, parent: Node): void`,
+ `export function inheritTrailingComments(node: Node, parent: Node): void`,
+ `export function removeComments<T extends Node>(node: T): T`,
+
+ // converters/
+ // eslint-disable-next-line max-len
+ `export function ensureBlock(node: Extract<Node, { body: BlockStatement | Statement | Expression }>): BlockStatement`,
+ // too complex?
+ // eslint-disable-next-line max-len
+ `export function ensureBlock<K extends keyof Extract<Node, { body: BlockStatement | Statement | Expression }> = 'body'>(node: Extract<Node, Record<K, BlockStatement | Statement | Expression>>, key: K): BlockStatement`,
+ // gatherSequenceExpressions is not exported
+ `export function toBindingIdentifierName(name: { toString(): string } | null | undefined): string`,
+ `export function toBlock(node: Statement | Expression, parent?: Function | null): BlockStatement`,
+ // it is possible for `node` to be an arbitrary object if `key` is always provided,
+ // but that doesn't look like intended API
+ // eslint-disable-next-line max-len
+ `export function toComputedKey<T extends Extract<Node, { computed: boolean | null }>>(node: T, key?: Expression | Identifier): Expression`,
+ `export function toExpression(node: Function): FunctionExpression`,
+ `export function toExpression(node: Class): ClassExpression`,
+ `export function toExpression(node: ExpressionStatement | Expression | Class | Function): Expression`,
+ `export function toIdentifier(name: { toString(): string } | null | undefined): string`,
+ `export function toKeyAlias(node: Method | Property, key?: Node): string`,
+ // NOTE: this actually uses Scope from @babel/traverse, but we can't add a dependency on its types,
+ // as they live in @types. Declare the structural subset that is required.
+ // eslint-disable-next-line max-len
+ `export function toSequenceExpression(nodes: ReadonlyArray<Node>, scope: { push(value: { id: LVal; kind: 'var'; init?: Expression}): void; buildUndefinedNode(): Node }): SequenceExpression | undefined`,
+ `export function toStatement(node: AssignmentExpression, ignore?: boolean): ExpressionStatement`,
+ `export function toStatement(node: Statement | AssignmentExpression, ignore?: boolean): Statement`,
+ `export function toStatement(node: Class, ignore: true): ClassDeclaration | undefined`,
+ `export function toStatement(node: Class, ignore?: boolean): ClassDeclaration`,
+ `export function toStatement(node: Function, ignore: true): FunctionDeclaration | undefined`,
+ `export function toStatement(node: Function, ignore?: boolean): FunctionDeclaration`,
+ // eslint-disable-next-line max-len
+ `export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore: true): Statement | undefined`,
+ // eslint-disable-next-line max-len
+ `export function toStatement(node: Statement | Class | Function | AssignmentExpression, ignore?: boolean): Statement`,
+ // eslint-disable-next-line max-len
+ `export function valueToNode(value: undefined): Identifier`, // (should this not be a UnaryExpression to avoid shadowing?)
+ `export function valueToNode(value: boolean): BooleanLiteral`,
+ `export function valueToNode(value: null): NullLiteral`,
+ `export function valueToNode(value: string): StringLiteral`,
+ // Infinities and NaN need to use a BinaryExpression; negative values must be wrapped in UnaryExpression
+ `export function valueToNode(value: number): NumericLiteral | BinaryExpression | UnaryExpression`,
+ `export function valueToNode(value: RegExp): RegExpLiteral`,
+ // eslint-disable-next-line max-len
+ `export function valueToNode(value: ReadonlyArray<undefined | boolean | null | string | number | RegExp | object>): ArrayExpression`,
+ // this throws with objects that are not PlainObject according to lodash,
+ // or if there are non-valueToNode-able values
+ `export function valueToNode(value: object): ObjectExpression`,
+ // eslint-disable-next-line max-len
+ `export function valueToNode(value: undefined | boolean | null | string | number | RegExp | object): Expression`,
+
+ // modifications/
+ // eslint-disable-next-line max-len
+ `export function removeTypeDuplicates(types: ReadonlyArray<FlowType | false | null | undefined>): FlowType[]`,
+ // eslint-disable-next-line max-len
+ `export function appendToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, append: MemberExpression['property'], computed?: boolean): T`,
+ // eslint-disable-next-line max-len
+ `export function inherits<T extends Node | null | undefined>(child: T, parent: Node | null | undefined): T`,
+ // eslint-disable-next-line max-len
+ `export function prependToMemberExpression<T extends Pick<MemberExpression, 'object' | 'property'>>(member: T, prepend: MemberExpression['object']): T`,
+ `export function removeProperties(
+ n: Node,
+ opts?: { preserveComments: boolean } | null
+): void;`,
+ `export function removePropertiesDeep<T extends Node>(
+ n: T,
+ opts?: { preserveComments: boolean } | null
+): T;`,
+
+ // retrievers/
+ // eslint-disable-next-line max-len
+ `export function getBindingIdentifiers(node: Node, duplicates: true, outerOnly?: boolean): Record<string, Array<Identifier>>`,
+ // eslint-disable-next-line max-len
+ `export function getBindingIdentifiers(node: Node, duplicates?: false, outerOnly?: boolean): Record<string, Identifier>`,
+ // eslint-disable-next-line max-len
+ `export function getBindingIdentifiers(node: Node, duplicates: boolean, outerOnly?: boolean): Record<string, Identifier | Array<Identifier>>`,
+ // eslint-disable-next-line max-len
+ `export function getOuterBindingIdentifiers(node: Node, duplicates: true): Record<string, Array<Identifier>>`,
+ `export function getOuterBindingIdentifiers(node: Node, duplicates?: false): Record<string, Identifier>`,
+ // eslint-disable-next-line max-len
+ `export function getOuterBindingIdentifiers(node: Node, duplicates: boolean): Record<string, Identifier | Array<Identifier>>`,
+
+ // traverse/
+ `export type TraversalAncestors = ReadonlyArray<{
+ node: Node,
+ key: string,
+ index?: number,
+ }>;
+ export type TraversalHandler<T> = (
+ this: undefined, node: Node, parent: TraversalAncestors, type: T
+ ) => void;
+ export type TraversalHandlers<T> = {
+ enter?: TraversalHandler<T>,
+ exit?: TraversalHandler<T>,
+ };`.replace(/(^|\n) {2}/g, "$1"),
+ // eslint-disable-next-line
+ `export function traverse<T>(n: Node, h: TraversalHandler<T> | TraversalHandlers<T>, state?: T): void;`,
+ `export function traverseFast<T>(n: Node, h: TraversalHandler<T>, state?: T): void;`,
+
+ // utils/
+ // cleanJSXElementLiteralChild is not exported
+ // inherit is not exported
+ `export function shallowEqual<T extends object>(actual: object, expected: T): actual is T`,
+
+ // validators/
+ // eslint-disable-next-line max-len
+ `export function buildMatchMemberExpression(match: string, allowPartial?: boolean): (node: Node | null | undefined) => node is MemberExpression`,
+ // eslint-disable-next-line max-len
+ `export function is<T extends Node['type']>(type: T, n: Node | null | undefined, required?: undefined): n is Extract<Node, { type: T }>`,
+ // eslint-disable-next-line max-len
+ `export function is<T extends Node['type'], P extends Extract<Node, { type: T }>>(type: T, n: Node | null | undefined, required: Partial<P>): n is P`,
+ // eslint-disable-next-line max-len
+ `export function is<P extends Node>(type: string, n: Node | null | undefined, required: Partial<P>): n is P`,
+ `export function is(type: string, n: Node | null | undefined, required?: Partial<Node>): n is Node`,
+ `export function isBinding(node: Node, parent: Node, grandparent?: Node): boolean`,
+ // eslint-disable-next-line max-len
+ `export function isBlockScoped(node: Node): node is FunctionDeclaration | ClassDeclaration | VariableDeclaration`,
+ `export function isImmutable(node: Node): node is Immutable`,
+ `export function isLet(node: Node): node is VariableDeclaration`,
+ `export function isNode(node: object | null | undefined): node is Node`,
+ `export function isNodesEquivalent<T extends Partial<Node>>(a: T, b: any): b is T`,
+ `export function isNodesEquivalent(a: any, b: any): boolean`,
+ `export function isPlaceholderType(placeholderType: Node['type'], targetType: Node['type']): boolean`,
+ `export function isReferenced(node: Node, parent: Node, grandparent?: Node): boolean`,
+ `export function isScope(node: Node, parent: Node): node is Scopable`,
+ `export function isSpecifierDefault(specifier: ModuleSpecifier): boolean`,
+ `export function isType<T extends Node['type']>(nodetype: string, targetType: T): nodetype is T`,
+ `export function isType(nodetype: string | null | undefined, targetType: string): boolean`,
+ `export function isValidES3Identifier(name: string): boolean`,
+ `export function isValidIdentifier(name: string): boolean`,
+ `export function isVar(node: Node): node is VariableDeclaration`,
+ // the MemberExpression implication is incidental, but it follows from the implementation
+ // eslint-disable-next-line max-len
+ `export function matchesPattern(node: Node | null | undefined, match: string | ReadonlyArray<string>, allowPartial?: boolean): node is MemberExpression`,
+ // eslint-disable-next-line max-len
+ `export function validate<T extends Node, K extends keyof T>(n: Node | null | undefined, key: K, value: T[K]): void;`,
+ `export function validate(n: Node, key: string, value: any): void;`
+);
+
+for (const type in t.DEPRECATED_KEYS) {
+ code += `/**
+ * @deprecated Use \`${t.DEPRECATED_KEYS[type]}\`
+ */
+export type ${type} = ${t.DEPRECATED_KEYS[type]};\n
+`;
+}
+
+for (const type in t.FLIPPED_ALIAS_KEYS) {
+ const types = t.FLIPPED_ALIAS_KEYS[type];
+ code += `export type ${type} = ${types
+ .map(type => `${type}`)
+ .join(" | ")};\n`;
+}
+code += "\n";
+
+code += "export interface Aliases {\n";
+for (const type in t.FLIPPED_ALIAS_KEYS) {
+ code += ` ${type}: ${type};\n`;
+}
+code += "}\n\n";
+
+code += lines.join("\n") + "\n";
+
+//
+
+process.stdout.write(code);
+
+//
+
+function areAllRemainingFieldsNullable(fieldName, fieldNames, fields) {
+ const index = fieldNames.indexOf(fieldName);
+ return fieldNames.slice(index).every(_ => isNullable(fields[_]));
+}
+
+function hasDefault(field) {
+ return field.default != null;
+}
+
+function isNullable(field) {
+ return field.optional || hasDefault(field);
+}
+
+function sortFieldNames(fields, type) {
+ return fields.sort((fieldA, fieldB) => {
+ const indexA = t.BUILDER_KEYS[type].indexOf(fieldA);
+ const indexB = t.BUILDER_KEYS[type].indexOf(fieldB);
+ if (indexA === indexB) return fieldA < fieldB ? -1 : 1;
+ if (indexA === -1) return 1;
+ if (indexB === -1) return -1;
+ return indexA - indexB;
+ });
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js
new file mode 100644
index 0000000000..acd6da6575
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/generators/validators.js
@@ -0,0 +1,87 @@
+import definitions from "../../lib/definitions/index.js";
+
+const has = Function.call.bind(Object.prototype.hasOwnProperty);
+
+function joinComparisons(leftArr, right) {
+ return (
+ leftArr.map(JSON.stringify).join(` === ${right} || `) + ` === ${right}`
+ );
+}
+
+function addIsHelper(type, aliasKeys, deprecated) {
+ const targetType = JSON.stringify(type);
+ let aliasSource = "";
+ if (aliasKeys) {
+ aliasSource = joinComparisons(aliasKeys, "nodeType");
+ }
+
+ let placeholderSource = "";
+ const placeholderTypes = [];
+ if (
+ definitions.PLACEHOLDERS.includes(type) &&
+ has(definitions.FLIPPED_ALIAS_KEYS, type)
+ ) {
+ placeholderTypes.push(type);
+ }
+ if (has(definitions.PLACEHOLDERS_FLIPPED_ALIAS, type)) {
+ placeholderTypes.push(...definitions.PLACEHOLDERS_FLIPPED_ALIAS[type]);
+ }
+ if (placeholderTypes.length > 0) {
+ placeholderSource =
+ ' || nodeType === "Placeholder" && (' +
+ joinComparisons(
+ placeholderTypes,
+ "(node as t.Placeholder).expectedNode"
+ ) +
+ ")";
+ }
+
+ const result =
+ definitions.NODE_FIELDS[type] || definitions.FLIPPED_ALIAS_KEYS[type]
+ ? `node is t.${type}`
+ : "boolean";
+
+ return `export function is${type}(node: object | null | undefined, opts?: object | null): ${result} {
+ ${deprecated || ""}
+ if (!node) return false;
+
+ const nodeType = (node as t.Node).type;
+ if (${
+ aliasSource ? aliasSource : `nodeType === ${targetType}`
+ }${placeholderSource}) {
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return shallowEqual(node, opts);
+ }
+ }
+
+ return false;
+ }
+ `;
+}
+
+export default function generateValidators() {
+ let output = `/*
+ * This file is auto-generated! Do not modify it directly.
+ * To re-generate run 'make build'
+ */
+import shallowEqual from "../../utils/shallowEqual";
+import type * as t from "../..";\n\n`;
+
+ Object.keys(definitions.VISITOR_KEYS).forEach(type => {
+ output += addIsHelper(type);
+ });
+
+ Object.keys(definitions.FLIPPED_ALIAS_KEYS).forEach(type => {
+ output += addIsHelper(type, definitions.FLIPPED_ALIAS_KEYS[type]);
+ });
+
+ Object.keys(definitions.DEPRECATED_KEYS).forEach(type => {
+ const newType = definitions.DEPRECATED_KEYS[type];
+ const deprecated = `console.trace("The node type ${type} has been renamed to ${newType}");`;
+ output += addIsHelper(type, null, deprecated);
+ });
+
+ return output;
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/package.json b/tools/node_modules/eslint/node_modules/@babel/types/scripts/package.json
new file mode 100644
index 0000000000..5ffd9800b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/package.json
@@ -0,0 +1 @@
+{ "type": "module" }
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/formatBuilderName.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/formatBuilderName.js
new file mode 100644
index 0000000000..f00a3c4a61
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/formatBuilderName.js
@@ -0,0 +1,8 @@
+const toLowerCase = Function.call.bind("".toLowerCase);
+
+export default function formatBuilderName(type) {
+ // FunctionExpression -> functionExpression
+ // JSXIdentifier -> jsxIdentifier
+ // V8IntrinsicIdentifier -> v8IntrinsicIdentifier
+ return type.replace(/^([A-Z](?=[a-z0-9])|[A-Z]+(?=[A-Z]))/, toLowerCase);
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/lowerFirst.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/lowerFirst.js
new file mode 100644
index 0000000000..012f252a7f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/lowerFirst.js
@@ -0,0 +1,3 @@
+export default function lowerFirst(string) {
+ return string[0].toLowerCase() + string.slice(1);
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/stringifyValidator.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/stringifyValidator.js
new file mode 100644
index 0000000000..4b8d29c12c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/stringifyValidator.js
@@ -0,0 +1,66 @@
+export default function stringifyValidator(validator, nodePrefix) {
+ if (validator === undefined) {
+ return "any";
+ }
+
+ if (validator.each) {
+ return `Array<${stringifyValidator(validator.each, nodePrefix)}>`;
+ }
+
+ if (validator.chainOf) {
+ return stringifyValidator(validator.chainOf[1], nodePrefix);
+ }
+
+ if (validator.oneOf) {
+ return validator.oneOf.map(JSON.stringify).join(" | ");
+ }
+
+ if (validator.oneOfNodeTypes) {
+ return validator.oneOfNodeTypes.map(_ => nodePrefix + _).join(" | ");
+ }
+
+ if (validator.oneOfNodeOrValueTypes) {
+ return validator.oneOfNodeOrValueTypes
+ .map(_ => {
+ return isValueType(_) ? _ : nodePrefix + _;
+ })
+ .join(" | ");
+ }
+
+ if (validator.type) {
+ return validator.type;
+ }
+
+ if (validator.shapeOf) {
+ return (
+ "{ " +
+ Object.keys(validator.shapeOf)
+ .map(shapeKey => {
+ const propertyDefinition = validator.shapeOf[shapeKey];
+ if (propertyDefinition.validate) {
+ const isOptional =
+ propertyDefinition.optional || propertyDefinition.default != null;
+ return (
+ shapeKey +
+ (isOptional ? "?: " : ": ") +
+ stringifyValidator(propertyDefinition.validate)
+ );
+ }
+ return null;
+ })
+ .filter(Boolean)
+ .join(", ") +
+ " }"
+ );
+ }
+
+ return ["any"];
+}
+
+/**
+ * Heuristic to decide whether or not the given type is a value type (eg. "null")
+ * or a Node type (eg. "Expression").
+ */
+function isValueType(type) {
+ return type.charAt(0).toLowerCase() === type.charAt(0);
+}
diff --git a/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/toFunctionName.js b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/toFunctionName.js
new file mode 100644
index 0000000000..2b645780ec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@babel/types/scripts/utils/toFunctionName.js
@@ -0,0 +1,4 @@
+export default function toFunctionName(typeName) {
+ const _ = typeName.replace(/^TS/, "ts").replace(/^JSX/, "jsx");
+ return _.slice(0, 1).toLowerCase() + _.slice(1);
+}
diff --git a/tools/node_modules/eslint/node_modules/@types/mdast/LICENSE b/tools/node_modules/eslint/node_modules/@types/mdast/LICENSE
new file mode 100755
index 0000000000..9e841e7a26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@types/mdast/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/tools/node_modules/eslint/node_modules/@types/mdast/README.md b/tools/node_modules/eslint/node_modules/@types/mdast/README.md
new file mode 100755
index 0000000000..45df54e56e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@types/mdast/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/mdast`
+
+# Summary
+This package contains type definitions for Mdast (https://github.com/syntax-tree/mdast).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdast.
+
+### Additional Details
+ * Last updated: Mon, 23 Aug 2021 20:18:29 GMT
+ * Dependencies: [@types/unist](https://npmjs.com/package/@types/unist)
+ * Global values: none
+
+# Credits
+These definitions were written by [Christian Murphy](https://github.com/ChristianMurphy), [Jun Lu](https://github.com/lujun2), [Remco Haszing](https://github.com/remcohaszing), and [Titus Wormer](https://github.com/wooorm).
diff --git a/tools/node_modules/eslint/node_modules/@types/mdast/package.json b/tools/node_modules/eslint/node_modules/@types/mdast/package.json
new file mode 100755
index 0000000000..a61222d2af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@types/mdast/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "@types/mdast",
+ "version": "3.0.10",
+ "description": "TypeScript definitions for Mdast",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdast",
+ "license": "MIT",
+ "contributors": [
+ {
+ "name": "Christian Murphy",
+ "url": "https://github.com/ChristianMurphy",
+ "githubUsername": "ChristianMurphy"
+ },
+ {
+ "name": "Jun Lu",
+ "url": "https://github.com/lujun2",
+ "githubUsername": "lujun2"
+ },
+ {
+ "name": "Remco Haszing",
+ "url": "https://github.com/remcohaszing",
+ "githubUsername": "remcohaszing"
+ },
+ {
+ "name": "Titus Wormer",
+ "url": "https://github.com/wooorm",
+ "githubUsername": "wooorm"
+ }
+ ],
+ "main": "",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+ "directory": "types/mdast"
+ },
+ "scripts": {},
+ "dependencies": {
+ "@types/unist": "*"
+ },
+ "typesPublisherContentHash": "87d2054120bead1983528802563a50cbb2f2efd6677d446e5ec34071f50bddcc",
+ "typeScriptVersion": "3.7"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/@types/unist/LICENSE b/tools/node_modules/eslint/node_modules/@types/unist/LICENSE
new file mode 100755
index 0000000000..9e841e7a26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@types/unist/LICENSE
@@ -0,0 +1,21 @@
+ MIT License
+
+ Copyright (c) Microsoft Corporation.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all
+ copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ SOFTWARE
diff --git a/tools/node_modules/eslint/node_modules/@types/unist/README.md b/tools/node_modules/eslint/node_modules/@types/unist/README.md
new file mode 100755
index 0000000000..283ae4d3bf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@types/unist/README.md
@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/unist`
+
+# Summary
+This package contains type definitions for Unist (https://github.com/syntax-tree/unist).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/unist.
+
+### Additional Details
+ * Last updated: Thu, 15 Jul 2021 00:31:23 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by [bizen241](https://github.com/bizen241), [Jun Lu](https://github.com/lujun2), [Hernan Rajchert](https://github.com/hrajchert), [Titus Wormer](https://github.com/wooorm), [Junyoung Choi](https://github.com/rokt33r), [Ben Moon](https://github.com/GuiltyDolphin), and [JounQin](https://github.com/JounQin).
diff --git a/tools/node_modules/eslint/node_modules/@types/unist/package.json b/tools/node_modules/eslint/node_modules/@types/unist/package.json
new file mode 100755
index 0000000000..ab4403f506
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/@types/unist/package.json
@@ -0,0 +1,55 @@
+{
+ "name": "@types/unist",
+ "version": "2.0.6",
+ "description": "TypeScript definitions for Unist",
+ "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/unist",
+ "license": "MIT",
+ "contributors": [
+ {
+ "name": "bizen241",
+ "url": "https://github.com/bizen241",
+ "githubUsername": "bizen241"
+ },
+ {
+ "name": "Jun Lu",
+ "url": "https://github.com/lujun2",
+ "githubUsername": "lujun2"
+ },
+ {
+ "name": "Hernan Rajchert",
+ "url": "https://github.com/hrajchert",
+ "githubUsername": "hrajchert"
+ },
+ {
+ "name": "Titus Wormer",
+ "url": "https://github.com/wooorm",
+ "githubUsername": "wooorm"
+ },
+ {
+ "name": "Junyoung Choi",
+ "url": "https://github.com/rokt33r",
+ "githubUsername": "rokt33r"
+ },
+ {
+ "name": "Ben Moon",
+ "url": "https://github.com/GuiltyDolphin",
+ "githubUsername": "GuiltyDolphin"
+ },
+ {
+ "name": "JounQin",
+ "url": "https://github.com/JounQin",
+ "githubUsername": "JounQin"
+ }
+ ],
+ "main": "",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+ "directory": "types/unist"
+ },
+ "scripts": {},
+ "dependencies": {},
+ "typesPublisherContentHash": "da5f2c3f967fa07869161991244bb7f9a237ac20494b902ffcb9108deb9b4e12",
+ "typeScriptVersion": "3.6"
+} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/browserslist/LICENSE b/tools/node_modules/eslint/node_modules/browserslist/LICENSE
new file mode 100644
index 0000000000..90b6b91673
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright 2014 Andrey Sitnik <andrey@sitnik.ru> and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/browserslist/README.md b/tools/node_modules/eslint/node_modules/browserslist/README.md
new file mode 100644
index 0000000000..b1cde150e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/README.md
@@ -0,0 +1,66 @@
+# Browserslist [![Cult Of Martians][cult-img]][cult]
+
+<img width="120" height="120" alt="Browserslist logo by Anton Lovchikov"
+ src="https://browserslist.github.io/browserslist/logo.svg" align="right">
+
+The config to share target browsers and Node.js versions between different
+front-end tools. It is used in:
+
+* [Autoprefixer]
+* [Babel]
+* [postcss-preset-env]
+* [eslint-plugin-compat]
+* [stylelint-no-unsupported-browser-features]
+* [postcss-normalize]
+* [obsolete-webpack-plugin]
+
+All tools will find target browsers automatically,
+when you add the following to `package.json`:
+
+```json
+ "browserslist": [
+ "defaults",
+ "not IE 11",
+ "maintained node versions"
+ ]
+```
+
+Or in `.browserslistrc` config:
+
+```yaml
+# Browsers that we support
+
+defaults
+not IE 11
+maintained node versions
+```
+
+Developers set their version lists using queries like `last 2 versions`
+to be free from updating versions manually.
+Browserslist will use [`caniuse-lite`] with [Can I Use] data for this queries.
+
+Browserslist will take queries from tool option,
+`browserslist` config, `.browserslistrc` config,
+`browserslist` section in `package.json` or environment variables.
+
+[cult-img]: https://cultofmartians.com/assets/badges/badge.svg
+[cult]: https://cultofmartians.com/done.html
+
+<a href="https://evilmartians.com/?utm_source=browserslist">
+ <img src="https://evilmartians.com/badges/sponsored-by-evil-martians.svg"
+ alt="Sponsored by Evil Martians" width="236" height="54">
+</a>
+
+[stylelint-no-unsupported-browser-features]: https://github.com/ismay/stylelint-no-unsupported-browser-features
+[eslint-plugin-compat]: https://github.com/amilajack/eslint-plugin-compat
+[Browserslist Example]: https://github.com/browserslist/browserslist-example
+[postcss-preset-env]: https://github.com/jonathantneal/postcss-preset-env
+[postcss-normalize]: https://github.com/jonathantneal/postcss-normalize
+[`caniuse-lite`]: https://github.com/ben-eb/caniuse-lite
+[Autoprefixer]: https://github.com/postcss/autoprefixer
+[Can I Use]: https://caniuse.com/
+[Babel]: https://github.com/babel/babel/tree/master/packages/babel-preset-env
+[obsolete-webpack-plugin]: https://github.com/ElemeFE/obsolete-webpack-plugin
+
+## Docs
+Read **[full docs](https://github.com/browserslist/browserslist#readme)** on GitHub.
diff --git a/tools/node_modules/eslint/node_modules/browserslist/browser.js b/tools/node_modules/eslint/node_modules/browserslist/browser.js
new file mode 100644
index 0000000000..4e9d8decd4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/browser.js
@@ -0,0 +1,50 @@
+var BrowserslistError = require('./error')
+
+function noop() {}
+
+module.exports = {
+ loadQueries: function loadQueries() {
+ throw new BrowserslistError(
+ 'Sharable configs are not supported in client-side build of Browserslist'
+ )
+ },
+
+ getStat: function getStat(opts) {
+ return opts.stats
+ },
+
+ loadConfig: function loadConfig(opts) {
+ if (opts.config) {
+ throw new BrowserslistError(
+ 'Browserslist config are not supported in client-side build'
+ )
+ }
+ },
+
+ loadCountry: function loadCountry() {
+ throw new BrowserslistError(
+ 'Country statistics are not supported ' +
+ 'in client-side build of Browserslist'
+ )
+ },
+
+ loadFeature: function loadFeature() {
+ throw new BrowserslistError(
+ 'Supports queries are not available in client-side build of Browserslist'
+ )
+ },
+
+ currentNode: function currentNode(resolve, context) {
+ return resolve(['maintained node versions'], context)[0]
+ },
+
+ parseConfig: noop,
+
+ readConfig: noop,
+
+ findConfig: noop,
+
+ clearCaches: noop,
+
+ oldDataWarning: noop
+}
diff --git a/tools/node_modules/eslint/node_modules/browserslist/cli.js b/tools/node_modules/eslint/node_modules/browserslist/cli.js
new file mode 100755
index 0000000000..3cf04949aa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/cli.js
@@ -0,0 +1,149 @@
+#!/usr/bin/env node
+
+var fs = require('fs')
+
+var browserslist = require('./')
+var updateDb = require('./update-db')
+var pkg = require('./package.json')
+
+var args = process.argv.slice(2)
+
+var USAGE =
+ 'Usage:\n' +
+ ' npx browserslist\n' +
+ ' npx browserslist "QUERIES"\n' +
+ ' npx browserslist --json "QUERIES"\n' +
+ ' npx browserslist --config="path/to/browserlist/file"\n' +
+ ' npx browserslist --coverage "QUERIES"\n' +
+ ' npx browserslist --coverage=US "QUERIES"\n' +
+ ' npx browserslist --coverage=US,RU,global "QUERIES"\n' +
+ ' npx browserslist --env="environment name defined in config"\n' +
+ ' npx browserslist --stats="path/to/browserlist/stats/file"\n' +
+ ' npx browserslist --mobile-to-desktop\n' +
+ ' npx browserslist --ignore-unknown-versions' +
+ ' npx browserslist --update-db'
+
+function isArg(arg) {
+ return args.some(function (str) {
+ return str === arg || str.indexOf(arg + '=') === 0
+ })
+}
+
+function error(msg) {
+ process.stderr.write('browserslist: ' + msg + '\n')
+ process.exit(1)
+}
+
+if (isArg('--help') || isArg('-h')) {
+ process.stdout.write(pkg.description + '.\n\n' + USAGE + '\n')
+} else if (isArg('--version') || isArg('-v')) {
+ process.stdout.write('browserslist ' + pkg.version + '\n')
+} else if (isArg('--update-db')) {
+ updateDb(function (str) {
+ process.stdout.write(str)
+ })
+} else {
+ var mode = 'browsers'
+ var opts = {}
+ var queries
+ var areas
+
+ for (var i = 0; i < args.length; i++) {
+ if (args[i][0] !== '-') {
+ queries = args[i].replace(/^["']|["']$/g, '')
+ continue
+ }
+
+ var arg = args[i].split('=')
+ var name = arg[0]
+ var value = arg[1]
+
+ if (value) value = value.replace(/^["']|["']$/g, '')
+
+ if (name === '--config' || name === '-b') {
+ opts.config = value
+ } else if (name === '--env' || name === '-e') {
+ opts.env = value
+ } else if (name === '--stats' || name === '-s') {
+ opts.stats = value
+ } else if (name === '--coverage' || name === '-c') {
+ if (mode !== 'json') mode = 'coverage'
+ if (value) {
+ areas = value.split(',')
+ } else {
+ areas = ['global']
+ }
+ } else if (name === '--json') {
+ mode = 'json'
+ } else if (name === '--mobile-to-desktop') {
+ opts.mobileToDesktop = true
+ } else if (name === '--ignore-unknown-versions') {
+ opts.ignoreUnknownVersions = true
+ } else {
+ error('Unknown arguments ' + args[i] + '.\n\n' + USAGE)
+ }
+ }
+
+ var browsers
+ try {
+ browsers = browserslist(queries, opts)
+ } catch (e) {
+ if (e.name === 'BrowserslistError') {
+ error(e.message)
+ } else {
+ throw e
+ }
+ }
+
+ var coverage
+ if (mode === 'browsers') {
+ browsers.forEach(function (browser) {
+ process.stdout.write(browser + '\n')
+ })
+ } else if (areas) {
+ coverage = areas.map(function (area) {
+ var stats
+ if (area !== 'global') {
+ stats = area
+ } else if (opts.stats) {
+ stats = JSON.parse(fs.readFileSync(opts.stats))
+ }
+ var result = browserslist.coverage(browsers, stats)
+ var round = Math.round(result * 100) / 100.0
+
+ return [area, round]
+ })
+
+ if (mode === 'coverage') {
+ var prefix = 'These browsers account for '
+ process.stdout.write(prefix)
+ coverage.forEach(function (data, index) {
+ var area = data[0]
+ var round = data[1]
+ var end = 'globally'
+ if (area && area !== 'global') {
+ end = 'in the ' + area.toUpperCase()
+ } else if (opts.stats) {
+ end = 'in custom statistics'
+ }
+
+ if (index !== 0) {
+ process.stdout.write(prefix.replace(/./g, ' '))
+ }
+
+ process.stdout.write(round + '% of all users ' + end + '\n')
+ })
+ }
+ }
+
+ if (mode === 'json') {
+ var data = { browsers: browsers }
+ if (coverage) {
+ data.coverage = coverage.reduce(function (object, j) {
+ object[j[0]] = j[1]
+ return object
+ }, {})
+ }
+ process.stdout.write(JSON.stringify(data, null, ' ') + '\n')
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/browserslist/error.js b/tools/node_modules/eslint/node_modules/browserslist/error.js
new file mode 100644
index 0000000000..6e5da7a823
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/error.js
@@ -0,0 +1,12 @@
+function BrowserslistError(message) {
+ this.name = 'BrowserslistError'
+ this.message = message
+ this.browserslist = true
+ if (Error.captureStackTrace) {
+ Error.captureStackTrace(this, BrowserslistError)
+ }
+}
+
+BrowserslistError.prototype = Error.prototype
+
+module.exports = BrowserslistError
diff --git a/tools/node_modules/eslint/node_modules/browserslist/index.js b/tools/node_modules/eslint/node_modules/browserslist/index.js
new file mode 100644
index 0000000000..af5fe8bade
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/index.js
@@ -0,0 +1,1214 @@
+var jsReleases = require('node-releases/data/processed/envs.json')
+var agents = require('caniuse-lite/dist/unpacker/agents').agents
+var jsEOL = require('node-releases/data/release-schedule/release-schedule.json')
+var path = require('path')
+var e2c = require('electron-to-chromium/versions')
+
+var BrowserslistError = require('./error')
+var env = require('./node') // Will load browser.js in webpack
+
+var YEAR = 365.259641 * 24 * 60 * 60 * 1000
+var ANDROID_EVERGREEN_FIRST = 37
+
+var QUERY_OR = 1
+var QUERY_AND = 2
+
+function isVersionsMatch(versionA, versionB) {
+ return (versionA + '.').indexOf(versionB + '.') === 0
+}
+
+function isEolReleased(name) {
+ var version = name.slice(1)
+ return jsReleases.some(function (i) {
+ return isVersionsMatch(i.version, version)
+ })
+}
+
+function normalize(versions) {
+ return versions.filter(function (version) {
+ return typeof version === 'string'
+ })
+}
+
+function normalizeElectron(version) {
+ var versionToUse = version
+ if (version.split('.').length === 3) {
+ versionToUse = version.split('.').slice(0, -1).join('.')
+ }
+ return versionToUse
+}
+
+function nameMapper(name) {
+ return function mapName(version) {
+ return name + ' ' + version
+ }
+}
+
+function getMajor(version) {
+ return parseInt(version.split('.')[0])
+}
+
+function getMajorVersions(released, number) {
+ if (released.length === 0) return []
+ var majorVersions = uniq(released.map(getMajor))
+ var minimum = majorVersions[majorVersions.length - number]
+ if (!minimum) {
+ return released
+ }
+ var selected = []
+ for (var i = released.length - 1; i >= 0; i--) {
+ if (minimum > getMajor(released[i])) break
+ selected.unshift(released[i])
+ }
+ return selected
+}
+
+function uniq(array) {
+ var filtered = []
+ for (var i = 0; i < array.length; i++) {
+ if (filtered.indexOf(array[i]) === -1) filtered.push(array[i])
+ }
+ return filtered
+}
+
+// Helpers
+
+function fillUsage(result, name, data) {
+ for (var i in data) {
+ result[name + ' ' + i] = data[i]
+ }
+}
+
+function generateFilter(sign, version) {
+ version = parseFloat(version)
+ if (sign === '>') {
+ return function (v) {
+ return parseFloat(v) > version
+ }
+ } else if (sign === '>=') {
+ return function (v) {
+ return parseFloat(v) >= version
+ }
+ } else if (sign === '<') {
+ return function (v) {
+ return parseFloat(v) < version
+ }
+ } else {
+ return function (v) {
+ return parseFloat(v) <= version
+ }
+ }
+}
+
+function generateSemverFilter(sign, version) {
+ version = version.split('.').map(parseSimpleInt)
+ version[1] = version[1] || 0
+ version[2] = version[2] || 0
+ if (sign === '>') {
+ return function (v) {
+ v = v.split('.').map(parseSimpleInt)
+ return compareSemver(v, version) > 0
+ }
+ } else if (sign === '>=') {
+ return function (v) {
+ v = v.split('.').map(parseSimpleInt)
+ return compareSemver(v, version) >= 0
+ }
+ } else if (sign === '<') {
+ return function (v) {
+ v = v.split('.').map(parseSimpleInt)
+ return compareSemver(version, v) > 0
+ }
+ } else {
+ return function (v) {
+ v = v.split('.').map(parseSimpleInt)
+ return compareSemver(version, v) >= 0
+ }
+ }
+}
+
+function parseSimpleInt(x) {
+ return parseInt(x)
+}
+
+function compare(a, b) {
+ if (a < b) return -1
+ if (a > b) return +1
+ return 0
+}
+
+function compareSemver(a, b) {
+ return (
+ compare(parseInt(a[0]), parseInt(b[0])) ||
+ compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) ||
+ compare(parseInt(a[2] || '0'), parseInt(b[2] || '0'))
+ )
+}
+
+// this follows the npm-like semver behavior
+function semverFilterLoose(operator, range) {
+ range = range.split('.').map(parseSimpleInt)
+ if (typeof range[1] === 'undefined') {
+ range[1] = 'x'
+ }
+ // ignore any patch version because we only return minor versions
+ // range[2] = 'x'
+ switch (operator) {
+ case '<=':
+ return function (version) {
+ version = version.split('.').map(parseSimpleInt)
+ return compareSemverLoose(version, range) <= 0
+ }
+ case '>=':
+ default:
+ return function (version) {
+ version = version.split('.').map(parseSimpleInt)
+ return compareSemverLoose(version, range) >= 0
+ }
+ }
+}
+
+// this follows the npm-like semver behavior
+function compareSemverLoose(version, range) {
+ if (version[0] !== range[0]) {
+ return version[0] < range[0] ? -1 : +1
+ }
+ if (range[1] === 'x') {
+ return 0
+ }
+ if (version[1] !== range[1]) {
+ return version[1] < range[1] ? -1 : +1
+ }
+ return 0
+}
+
+function resolveVersion(data, version) {
+ if (data.versions.indexOf(version) !== -1) {
+ return version
+ } else if (browserslist.versionAliases[data.name][version]) {
+ return browserslist.versionAliases[data.name][version]
+ } else {
+ return false
+ }
+}
+
+function normalizeVersion(data, version) {
+ var resolved = resolveVersion(data, version)
+ if (resolved) {
+ return resolved
+ } else if (data.versions.length === 1) {
+ return data.versions[0]
+ } else {
+ return false
+ }
+}
+
+function filterByYear(since, context) {
+ since = since / 1000
+ return Object.keys(agents).reduce(function (selected, name) {
+ var data = byName(name, context)
+ if (!data) return selected
+ var versions = Object.keys(data.releaseDate).filter(function (v) {
+ var date = data.releaseDate[v]
+ return date !== null && date >= since
+ })
+ return selected.concat(versions.map(nameMapper(data.name)))
+ }, [])
+}
+
+function cloneData(data) {
+ return {
+ name: data.name,
+ versions: data.versions,
+ released: data.released,
+ releaseDate: data.releaseDate
+ }
+}
+
+function mapVersions(data, map) {
+ data.versions = data.versions.map(function (i) {
+ return map[i] || i
+ })
+ data.released = data.versions.map(function (i) {
+ return map[i] || i
+ })
+ var fixedDate = {}
+ for (var i in data.releaseDate) {
+ fixedDate[map[i] || i] = data.releaseDate[i]
+ }
+ data.releaseDate = fixedDate
+ return data
+}
+
+function byName(name, context) {
+ name = name.toLowerCase()
+ name = browserslist.aliases[name] || name
+ if (context.mobileToDesktop && browserslist.desktopNames[name]) {
+ var desktop = browserslist.data[browserslist.desktopNames[name]]
+ if (name === 'android') {
+ return normalizeAndroidData(cloneData(browserslist.data[name]), desktop)
+ } else {
+ var cloned = cloneData(desktop)
+ cloned.name = name
+ if (name === 'op_mob') {
+ cloned = mapVersions(cloned, { '10.0-10.1': '10' })
+ }
+ return cloned
+ }
+ }
+ return browserslist.data[name]
+}
+
+function normalizeAndroidVersions(androidVersions, chromeVersions) {
+ var firstEvergreen = ANDROID_EVERGREEN_FIRST
+ var last = chromeVersions[chromeVersions.length - 1]
+ return androidVersions
+ .filter(function (version) {
+ return /^(?:[2-4]\.|[34]$)/.test(version)
+ })
+ .concat(chromeVersions.slice(firstEvergreen - last - 1))
+}
+
+function normalizeAndroidData(android, chrome) {
+ android.released = normalizeAndroidVersions(android.released, chrome.released)
+ android.versions = normalizeAndroidVersions(android.versions, chrome.versions)
+ return android
+}
+
+function checkName(name, context) {
+ var data = byName(name, context)
+ if (!data) throw new BrowserslistError('Unknown browser ' + name)
+ return data
+}
+
+function unknownQuery(query) {
+ return new BrowserslistError(
+ 'Unknown browser query `' +
+ query +
+ '`. ' +
+ 'Maybe you are using old Browserslist or made typo in query.'
+ )
+}
+
+function filterAndroid(list, versions, context) {
+ if (context.mobileToDesktop) return list
+ var released = browserslist.data.android.released
+ var last = released[released.length - 1]
+ var diff = last - ANDROID_EVERGREEN_FIRST - versions
+ if (diff > 0) {
+ return list.slice(-1)
+ } else {
+ return list.slice(diff - 1)
+ }
+}
+
+/**
+ * Resolves queries into a browser list.
+ * @param {string|string[]} queries Queries to combine.
+ * Either an array of queries or a long string of queries.
+ * @param {object} [context] Optional arguments to
+ * the select function in `queries`.
+ * @returns {string[]} A list of browsers
+ */
+function resolve(queries, context) {
+ if (Array.isArray(queries)) {
+ queries = flatten(queries.map(parse))
+ } else {
+ queries = parse(queries)
+ }
+
+ return queries.reduce(function (result, query, index) {
+ var selection = query.queryString
+
+ var isExclude = selection.indexOf('not ') === 0
+ if (isExclude) {
+ if (index === 0) {
+ throw new BrowserslistError(
+ 'Write any browsers query (for instance, `defaults`) ' +
+ 'before `' +
+ selection +
+ '`'
+ )
+ }
+ selection = selection.slice(4)
+ }
+
+ for (var i = 0; i < QUERIES.length; i++) {
+ var type = QUERIES[i]
+ var match = selection.match(type.regexp)
+ if (match) {
+ var args = [context].concat(match.slice(1))
+ var array = type.select.apply(browserslist, args).map(function (j) {
+ var parts = j.split(' ')
+ if (parts[1] === '0') {
+ return parts[0] + ' ' + byName(parts[0], context).versions[0]
+ } else {
+ return j
+ }
+ })
+
+ switch (query.type) {
+ case QUERY_AND:
+ if (isExclude) {
+ return result.filter(function (j) {
+ return array.indexOf(j) === -1
+ })
+ } else {
+ return result.filter(function (j) {
+ return array.indexOf(j) !== -1
+ })
+ }
+ case QUERY_OR:
+ default:
+ if (isExclude) {
+ var filter = {}
+ array.forEach(function (j) {
+ filter[j] = true
+ })
+ return result.filter(function (j) {
+ return !filter[j]
+ })
+ }
+ return result.concat(array)
+ }
+ }
+ }
+
+ throw unknownQuery(selection)
+ }, [])
+}
+
+var cache = {}
+
+/**
+ * Return array of browsers by selection queries.
+ *
+ * @param {(string|string[])} [queries=browserslist.defaults] Browser queries.
+ * @param {object} [opts] Options.
+ * @param {string} [opts.path="."] Path to processed file.
+ * It will be used to find config files.
+ * @param {string} [opts.env="production"] Processing environment.
+ * It will be used to take right
+ * queries from config file.
+ * @param {string} [opts.config] Path to config file with queries.
+ * @param {object} [opts.stats] Custom browser usage statistics
+ * for "> 1% in my stats" query.
+ * @param {boolean} [opts.ignoreUnknownVersions=false] Do not throw on unknown
+ * version in direct query.
+ * @param {boolean} [opts.dangerousExtend] Disable security checks
+ * for extend query.
+ * @param {boolean} [opts.mobileToDesktop] Alias mobile browsers to the desktop
+ * version when Can I Use doesn't have
+ * data about the specified version.
+ * @returns {string[]} Array with browser names in Can I Use.
+ *
+ * @example
+ * browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8']
+ */
+function browserslist(queries, opts) {
+ if (typeof opts === 'undefined') opts = {}
+
+ if (typeof opts.path === 'undefined') {
+ opts.path = path.resolve ? path.resolve('.') : '.'
+ }
+
+ if (typeof queries === 'undefined' || queries === null) {
+ var config = browserslist.loadConfig(opts)
+ if (config) {
+ queries = config
+ } else {
+ queries = browserslist.defaults
+ }
+ }
+
+ if (!(typeof queries === 'string' || Array.isArray(queries))) {
+ throw new BrowserslistError(
+ 'Browser queries must be an array or string. Got ' + typeof queries + '.'
+ )
+ }
+
+ var context = {
+ ignoreUnknownVersions: opts.ignoreUnknownVersions,
+ dangerousExtend: opts.dangerousExtend,
+ mobileToDesktop: opts.mobileToDesktop,
+ path: opts.path,
+ env: opts.env
+ }
+
+ env.oldDataWarning(browserslist.data)
+ var stats = env.getStat(opts, browserslist.data)
+ if (stats) {
+ context.customUsage = {}
+ for (var browser in stats) {
+ fillUsage(context.customUsage, browser, stats[browser])
+ }
+ }
+
+ var cacheKey = JSON.stringify([queries, context])
+ if (cache[cacheKey]) return cache[cacheKey]
+
+ var result = uniq(resolve(queries, context)).sort(function (name1, name2) {
+ name1 = name1.split(' ')
+ name2 = name2.split(' ')
+ if (name1[0] === name2[0]) {
+ // assumptions on caniuse data
+ // 1) version ranges never overlaps
+ // 2) if version is not a range, it never contains `-`
+ var version1 = name1[1].split('-')[0]
+ var version2 = name2[1].split('-')[0]
+ return compareSemver(version2.split('.'), version1.split('.'))
+ } else {
+ return compare(name1[0], name2[0])
+ }
+ })
+ if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
+ cache[cacheKey] = result
+ }
+ return result
+}
+
+function parse(queries) {
+ var qs = []
+ do {
+ queries = doMatch(queries, qs)
+ } while (queries)
+ return qs
+}
+
+function doMatch(string, qs) {
+ var or = /^(?:,\s*|\s+or\s+)(.*)/i
+ var and = /^\s+and\s+(.*)/i
+
+ return find(string, function (parsed, n, max) {
+ if (and.test(parsed)) {
+ qs.unshift({ type: QUERY_AND, queryString: parsed.match(and)[1] })
+ return true
+ } else if (or.test(parsed)) {
+ qs.unshift({ type: QUERY_OR, queryString: parsed.match(or)[1] })
+ return true
+ } else if (n === max) {
+ qs.unshift({ type: QUERY_OR, queryString: parsed.trim() })
+ return true
+ }
+ return false
+ })
+}
+
+function find(string, predicate) {
+ for (var n = 1, max = string.length; n <= max; n++) {
+ var parsed = string.substr(-n, n)
+ if (predicate(parsed, n, max)) {
+ return string.slice(0, -n)
+ }
+ }
+ return ''
+}
+
+function flatten(array) {
+ if (!Array.isArray(array)) return [array]
+ return array.reduce(function (a, b) {
+ return a.concat(flatten(b))
+ }, [])
+}
+
+// Will be filled by Can I Use data below
+browserslist.cache = {}
+browserslist.data = {}
+browserslist.usage = {
+ global: {},
+ custom: null
+}
+
+// Default browsers query
+browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead']
+
+// Browser names aliases
+browserslist.aliases = {
+ fx: 'firefox',
+ ff: 'firefox',
+ ios: 'ios_saf',
+ explorer: 'ie',
+ blackberry: 'bb',
+ explorermobile: 'ie_mob',
+ operamini: 'op_mini',
+ operamobile: 'op_mob',
+ chromeandroid: 'and_chr',
+ firefoxandroid: 'and_ff',
+ ucandroid: 'and_uc',
+ qqandroid: 'and_qq'
+}
+
+// Can I Use only provides a few versions for some browsers (e.g. and_chr).
+// Fallback to a similar browser for unknown versions
+browserslist.desktopNames = {
+ and_chr: 'chrome',
+ and_ff: 'firefox',
+ ie_mob: 'ie',
+ op_mob: 'opera',
+ android: 'chrome' // has extra processing logic
+}
+
+// Aliases to work with joined versions like `ios_saf 7.0-7.1`
+browserslist.versionAliases = {}
+
+browserslist.clearCaches = env.clearCaches
+browserslist.parseConfig = env.parseConfig
+browserslist.readConfig = env.readConfig
+browserslist.findConfig = env.findConfig
+browserslist.loadConfig = env.loadConfig
+
+/**
+ * Return browsers market coverage.
+ *
+ * @param {string[]} browsers Browsers names in Can I Use.
+ * @param {string|object} [stats="global"] Which statistics should be used.
+ * Country code or custom statistics.
+ * Pass `"my stats"` to load statistics
+ * from Browserslist files.
+ *
+ * @return {number} Total market coverage for all selected browsers.
+ *
+ * @example
+ * browserslist.coverage(browserslist('> 1% in US'), 'US') //=> 83.1
+ */
+browserslist.coverage = function (browsers, stats) {
+ var data
+ if (typeof stats === 'undefined') {
+ data = browserslist.usage.global
+ } else if (stats === 'my stats') {
+ var opts = {}
+ opts.path = path.resolve ? path.resolve('.') : '.'
+ var customStats = env.getStat(opts)
+ if (!customStats) {
+ throw new BrowserslistError('Custom usage statistics was not provided')
+ }
+ data = {}
+ for (var browser in customStats) {
+ fillUsage(data, browser, customStats[browser])
+ }
+ } else if (typeof stats === 'string') {
+ if (stats.length > 2) {
+ stats = stats.toLowerCase()
+ } else {
+ stats = stats.toUpperCase()
+ }
+ env.loadCountry(browserslist.usage, stats, browserslist.data)
+ data = browserslist.usage[stats]
+ } else {
+ if ('dataByBrowser' in stats) {
+ stats = stats.dataByBrowser
+ }
+ data = {}
+ for (var name in stats) {
+ for (var version in stats[name]) {
+ data[name + ' ' + version] = stats[name][version]
+ }
+ }
+ }
+
+ return browsers.reduce(function (all, i) {
+ var usage = data[i]
+ if (usage === undefined) {
+ usage = data[i.replace(/ \S+$/, ' 0')]
+ }
+ return all + (usage || 0)
+ }, 0)
+}
+
+function nodeQuery(context, version) {
+ var nodeReleases = jsReleases.filter(function (i) {
+ return i.name === 'nodejs'
+ })
+ var matched = nodeReleases.filter(function (i) {
+ return isVersionsMatch(i.version, version)
+ })
+ if (matched.length === 0) {
+ if (context.ignoreUnknownVersions) {
+ return []
+ } else {
+ throw new BrowserslistError('Unknown version ' + version + ' of Node.js')
+ }
+ }
+ return ['node ' + matched[matched.length - 1].version]
+}
+
+function sinceQuery(context, year, month, date) {
+ year = parseInt(year)
+ month = parseInt(month || '01') - 1
+ date = parseInt(date || '01')
+ return filterByYear(Date.UTC(year, month, date, 0, 0, 0), context)
+}
+
+function coverQuery(context, coverage, statMode) {
+ coverage = parseFloat(coverage)
+ var usage = browserslist.usage.global
+ if (statMode) {
+ if (statMode.match(/^my\s+stats$/i)) {
+ if (!context.customUsage) {
+ throw new BrowserslistError('Custom usage statistics was not provided')
+ }
+ usage = context.customUsage
+ } else {
+ var place
+ if (statMode.length === 2) {
+ place = statMode.toUpperCase()
+ } else {
+ place = statMode.toLowerCase()
+ }
+ env.loadCountry(browserslist.usage, place, browserslist.data)
+ usage = browserslist.usage[place]
+ }
+ }
+ var versions = Object.keys(usage).sort(function (a, b) {
+ return usage[b] - usage[a]
+ })
+ var coveraged = 0
+ var result = []
+ var version
+ for (var i = 0; i <= versions.length; i++) {
+ version = versions[i]
+ if (usage[version] === 0) break
+ coveraged += usage[version]
+ result.push(version)
+ if (coveraged >= coverage) break
+ }
+ return result
+}
+
+var QUERIES = [
+ {
+ regexp: /^last\s+(\d+)\s+major\s+versions?$/i,
+ select: function (context, versions) {
+ return Object.keys(agents).reduce(function (selected, name) {
+ var data = byName(name, context)
+ if (!data) return selected
+ var list = getMajorVersions(data.released, versions)
+ list = list.map(nameMapper(data.name))
+ if (data.name === 'android') {
+ list = filterAndroid(list, versions, context)
+ }
+ return selected.concat(list)
+ }, [])
+ }
+ },
+ {
+ regexp: /^last\s+(\d+)\s+versions?$/i,
+ select: function (context, versions) {
+ return Object.keys(agents).reduce(function (selected, name) {
+ var data = byName(name, context)
+ if (!data) return selected
+ var list = data.released.slice(-versions)
+ list = list.map(nameMapper(data.name))
+ if (data.name === 'android') {
+ list = filterAndroid(list, versions, context)
+ }
+ return selected.concat(list)
+ }, [])
+ }
+ },
+ {
+ regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i,
+ select: function (context, versions) {
+ var validVersions = getMajorVersions(Object.keys(e2c), versions)
+ return validVersions.map(function (i) {
+ return 'chrome ' + e2c[i]
+ })
+ }
+ },
+ {
+ regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i,
+ select: function (context, versions, name) {
+ var data = checkName(name, context)
+ var validVersions = getMajorVersions(data.released, versions)
+ var list = validVersions.map(nameMapper(data.name))
+ if (data.name === 'android') {
+ list = filterAndroid(list, versions, context)
+ }
+ return list
+ }
+ },
+ {
+ regexp: /^last\s+(\d+)\s+electron\s+versions?$/i,
+ select: function (context, versions) {
+ return Object.keys(e2c)
+ .slice(-versions)
+ .map(function (i) {
+ return 'chrome ' + e2c[i]
+ })
+ }
+ },
+ {
+ regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i,
+ select: function (context, versions, name) {
+ var data = checkName(name, context)
+ var list = data.released.slice(-versions).map(nameMapper(data.name))
+ if (data.name === 'android') {
+ list = filterAndroid(list, versions, context)
+ }
+ return list
+ }
+ },
+ {
+ regexp: /^unreleased\s+versions$/i,
+ select: function (context) {
+ return Object.keys(agents).reduce(function (selected, name) {
+ var data = byName(name, context)
+ if (!data) return selected
+ var list = data.versions.filter(function (v) {
+ return data.released.indexOf(v) === -1
+ })
+ list = list.map(nameMapper(data.name))
+ return selected.concat(list)
+ }, [])
+ }
+ },
+ {
+ regexp: /^unreleased\s+electron\s+versions?$/i,
+ select: function () {
+ return []
+ }
+ },
+ {
+ regexp: /^unreleased\s+(\w+)\s+versions?$/i,
+ select: function (context, name) {
+ var data = checkName(name, context)
+ return data.versions
+ .filter(function (v) {
+ return data.released.indexOf(v) === -1
+ })
+ .map(nameMapper(data.name))
+ }
+ },
+ {
+ regexp: /^last\s+(\d*.?\d+)\s+years?$/i,
+ select: function (context, years) {
+ return filterByYear(Date.now() - YEAR * years, context)
+ }
+ },
+ {
+ regexp: /^since (\d+)$/i,
+ select: sinceQuery
+ },
+ {
+ regexp: /^since (\d+)-(\d+)$/i,
+ select: sinceQuery
+ },
+ {
+ regexp: /^since (\d+)-(\d+)-(\d+)$/i,
+ select: sinceQuery
+ },
+ {
+ regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/,
+ select: function (context, sign, popularity) {
+ popularity = parseFloat(popularity)
+ var usage = browserslist.usage.global
+ return Object.keys(usage).reduce(function (result, version) {
+ if (sign === '>') {
+ if (usage[version] > popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<') {
+ if (usage[version] < popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<=') {
+ if (usage[version] <= popularity) {
+ result.push(version)
+ }
+ } else if (usage[version] >= popularity) {
+ result.push(version)
+ }
+ return result
+ }, [])
+ }
+ },
+ {
+ regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/,
+ select: function (context, sign, popularity) {
+ popularity = parseFloat(popularity)
+ if (!context.customUsage) {
+ throw new BrowserslistError('Custom usage statistics was not provided')
+ }
+ var usage = context.customUsage
+ return Object.keys(usage).reduce(function (result, version) {
+ if (sign === '>') {
+ if (usage[version] > popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<') {
+ if (usage[version] < popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<=') {
+ if (usage[version] <= popularity) {
+ result.push(version)
+ }
+ } else if (usage[version] >= popularity) {
+ result.push(version)
+ }
+ return result
+ }, [])
+ }
+ },
+ {
+ regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/,
+ select: function (context, sign, popularity, name) {
+ popularity = parseFloat(popularity)
+ var stats = env.loadStat(context, name, browserslist.data)
+ if (stats) {
+ context.customUsage = {}
+ for (var browser in stats) {
+ fillUsage(context.customUsage, browser, stats[browser])
+ }
+ }
+ if (!context.customUsage) {
+ throw new BrowserslistError('Custom usage statistics was not provided')
+ }
+ var usage = context.customUsage
+ return Object.keys(usage).reduce(function (result, version) {
+ if (sign === '>') {
+ if (usage[version] > popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<') {
+ if (usage[version] < popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<=') {
+ if (usage[version] <= popularity) {
+ result.push(version)
+ }
+ } else if (usage[version] >= popularity) {
+ result.push(version)
+ }
+ return result
+ }, [])
+ }
+ },
+ {
+ regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/,
+ select: function (context, sign, popularity, place) {
+ popularity = parseFloat(popularity)
+ if (place.length === 2) {
+ place = place.toUpperCase()
+ } else {
+ place = place.toLowerCase()
+ }
+ env.loadCountry(browserslist.usage, place, browserslist.data)
+ var usage = browserslist.usage[place]
+ return Object.keys(usage).reduce(function (result, version) {
+ if (sign === '>') {
+ if (usage[version] > popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<') {
+ if (usage[version] < popularity) {
+ result.push(version)
+ }
+ } else if (sign === '<=') {
+ if (usage[version] <= popularity) {
+ result.push(version)
+ }
+ } else if (usage[version] >= popularity) {
+ result.push(version)
+ }
+ return result
+ }, [])
+ }
+ },
+ {
+ regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
+ select: coverQuery
+ },
+ {
+ regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
+ select: coverQuery
+ },
+ {
+ regexp: /^supports\s+([\w-]+)$/,
+ select: function (context, feature) {
+ env.loadFeature(browserslist.cache, feature)
+ var features = browserslist.cache[feature]
+ return Object.keys(features).reduce(function (result, version) {
+ var flags = features[version]
+ if (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0) {
+ result.push(version)
+ }
+ return result
+ }, [])
+ }
+ },
+ {
+ regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i,
+ select: function (context, from, to) {
+ var fromToUse = normalizeElectron(from)
+ var toToUse = normalizeElectron(to)
+ if (!e2c[fromToUse]) {
+ throw new BrowserslistError('Unknown version ' + from + ' of electron')
+ }
+ if (!e2c[toToUse]) {
+ throw new BrowserslistError('Unknown version ' + to + ' of electron')
+ }
+ from = parseFloat(from)
+ to = parseFloat(to)
+ return Object.keys(e2c)
+ .filter(function (i) {
+ var parsed = parseFloat(i)
+ return parsed >= from && parsed <= to
+ })
+ .map(function (i) {
+ return 'chrome ' + e2c[i]
+ })
+ }
+ },
+ {
+ regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i,
+ select: function (context, from, to) {
+ var nodeVersions = jsReleases
+ .filter(function (i) {
+ return i.name === 'nodejs'
+ })
+ .map(function (i) {
+ return i.version
+ })
+ return nodeVersions
+ .filter(semverFilterLoose('>=', from))
+ .filter(semverFilterLoose('<=', to))
+ .map(function (v) {
+ return 'node ' + v
+ })
+ }
+ },
+ {
+ regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i,
+ select: function (context, name, from, to) {
+ var data = checkName(name, context)
+ from = parseFloat(normalizeVersion(data, from) || from)
+ to = parseFloat(normalizeVersion(data, to) || to)
+ function filter(v) {
+ var parsed = parseFloat(v)
+ return parsed >= from && parsed <= to
+ }
+ return data.released.filter(filter).map(nameMapper(data.name))
+ }
+ },
+ {
+ regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i,
+ select: function (context, sign, version) {
+ var versionToUse = normalizeElectron(version)
+ return Object.keys(e2c)
+ .filter(generateFilter(sign, versionToUse))
+ .map(function (i) {
+ return 'chrome ' + e2c[i]
+ })
+ }
+ },
+ {
+ regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i,
+ select: function (context, sign, version) {
+ var nodeVersions = jsReleases
+ .filter(function (i) {
+ return i.name === 'nodejs'
+ })
+ .map(function (i) {
+ return i.version
+ })
+ return nodeVersions
+ .filter(generateSemverFilter(sign, version))
+ .map(function (v) {
+ return 'node ' + v
+ })
+ }
+ },
+ {
+ regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/,
+ select: function (context, name, sign, version) {
+ var data = checkName(name, context)
+ var alias = browserslist.versionAliases[data.name][version]
+ if (alias) {
+ version = alias
+ }
+ return data.released
+ .filter(generateFilter(sign, version))
+ .map(function (v) {
+ return data.name + ' ' + v
+ })
+ }
+ },
+ {
+ regexp: /^(firefox|ff|fx)\s+esr$/i,
+ select: function () {
+ return ['firefox 78', 'firefox 91']
+ }
+ },
+ {
+ regexp: /(operamini|op_mini)\s+all/i,
+ select: function () {
+ return ['op_mini all']
+ }
+ },
+ {
+ regexp: /^electron\s+([\d.]+)$/i,
+ select: function (context, version) {
+ var versionToUse = normalizeElectron(version)
+ var chrome = e2c[versionToUse]
+ if (!chrome) {
+ throw new BrowserslistError(
+ 'Unknown version ' + version + ' of electron'
+ )
+ }
+ return ['chrome ' + chrome]
+ }
+ },
+ {
+ regexp: /^node\s+(\d+)$/i,
+ select: nodeQuery
+ },
+ {
+ regexp: /^node\s+(\d+\.\d+)$/i,
+ select: nodeQuery
+ },
+ {
+ regexp: /^node\s+(\d+\.\d+\.\d+)$/i,
+ select: nodeQuery
+ },
+ {
+ regexp: /^current\s+node$/i,
+ select: function (context) {
+ return [env.currentNode(resolve, context)]
+ }
+ },
+ {
+ regexp: /^maintained\s+node\s+versions$/i,
+ select: function (context) {
+ var now = Date.now()
+ var queries = Object.keys(jsEOL)
+ .filter(function (key) {
+ return (
+ now < Date.parse(jsEOL[key].end) &&
+ now > Date.parse(jsEOL[key].start) &&
+ isEolReleased(key)
+ )
+ })
+ .map(function (key) {
+ return 'node ' + key.slice(1)
+ })
+ return resolve(queries, context)
+ }
+ },
+ {
+ regexp: /^phantomjs\s+1.9$/i,
+ select: function () {
+ return ['safari 5']
+ }
+ },
+ {
+ regexp: /^phantomjs\s+2.1$/i,
+ select: function () {
+ return ['safari 6']
+ }
+ },
+ {
+ regexp: /^(\w+)\s+(tp|[\d.]+)$/i,
+ select: function (context, name, version) {
+ if (/^tp$/i.test(version)) version = 'TP'
+ var data = checkName(name, context)
+ var alias = normalizeVersion(data, version)
+ if (alias) {
+ version = alias
+ } else {
+ if (version.indexOf('.') === -1) {
+ alias = version + '.0'
+ } else {
+ alias = version.replace(/\.0$/, '')
+ }
+ alias = normalizeVersion(data, alias)
+ if (alias) {
+ version = alias
+ } else if (context.ignoreUnknownVersions) {
+ return []
+ } else {
+ throw new BrowserslistError(
+ 'Unknown version ' + version + ' of ' + name
+ )
+ }
+ }
+ return [data.name + ' ' + version]
+ }
+ },
+ {
+ regexp: /^browserslist config$/i,
+ select: function (context) {
+ return browserslist(undefined, context)
+ }
+ },
+ {
+ regexp: /^extends (.+)$/i,
+ select: function (context, name) {
+ return resolve(env.loadQueries(context, name), context)
+ }
+ },
+ {
+ regexp: /^defaults$/i,
+ select: function (context) {
+ return resolve(browserslist.defaults, context)
+ }
+ },
+ {
+ regexp: /^dead$/i,
+ select: function (context) {
+ var dead = [
+ 'ie <= 10',
+ 'ie_mob <= 11',
+ 'bb <= 10',
+ 'op_mob <= 12.1',
+ 'samsung 4'
+ ]
+ return resolve(dead, context)
+ }
+ },
+ {
+ regexp: /^(\w+)$/i,
+ select: function (context, name) {
+ if (byName(name, context)) {
+ throw new BrowserslistError(
+ 'Specify versions in Browserslist query for browser ' + name
+ )
+ } else {
+ throw unknownQuery(name)
+ }
+ }
+ }
+]
+
+// Get and convert Can I Use data
+
+;(function () {
+ for (var name in agents) {
+ var browser = agents[name]
+ browserslist.data[name] = {
+ name: name,
+ versions: normalize(agents[name].versions),
+ released: normalize(agents[name].versions.slice(0, -3)),
+ releaseDate: agents[name].release_date
+ }
+ fillUsage(browserslist.usage.global, name, browser.usage_global)
+
+ browserslist.versionAliases[name] = {}
+ for (var i = 0; i < browser.versions.length; i++) {
+ var full = browser.versions[i]
+ if (!full) continue
+
+ if (full.indexOf('-') !== -1) {
+ var interval = full.split('-')
+ for (var j = 0; j < interval.length; j++) {
+ browserslist.versionAliases[name][interval[j]] = full
+ }
+ }
+ }
+ }
+
+ browserslist.versionAliases.op_mob['59'] = '58'
+})()
+
+module.exports = browserslist
diff --git a/tools/node_modules/eslint/node_modules/browserslist/node.js b/tools/node_modules/eslint/node_modules/browserslist/node.js
new file mode 100644
index 0000000000..0e869d3662
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/node.js
@@ -0,0 +1,385 @@
+var feature = require('caniuse-lite/dist/unpacker/feature').default
+var region = require('caniuse-lite/dist/unpacker/region').default
+var path = require('path')
+var fs = require('fs')
+
+var BrowserslistError = require('./error')
+
+var IS_SECTION = /^\s*\[(.+)]\s*$/
+var CONFIG_PATTERN = /^browserslist-config-/
+var SCOPED_CONFIG__PATTERN = /@[^/]+\/browserslist-config(-|$|\/)/
+var TIME_TO_UPDATE_CANIUSE = 6 * 30 * 24 * 60 * 60 * 1000
+var FORMAT =
+ 'Browserslist config should be a string or an array ' +
+ 'of strings with browser queries'
+
+var dataTimeChecked = false
+var filenessCache = {}
+var configCache = {}
+function checkExtend(name) {
+ var use = ' Use `dangerousExtend` option to disable.'
+ if (!CONFIG_PATTERN.test(name) && !SCOPED_CONFIG__PATTERN.test(name)) {
+ throw new BrowserslistError(
+ 'Browserslist config needs `browserslist-config-` prefix. ' + use
+ )
+ }
+ if (name.replace(/^@[^/]+\//, '').indexOf('.') !== -1) {
+ throw new BrowserslistError(
+ '`.` not allowed in Browserslist config name. ' + use
+ )
+ }
+ if (name.indexOf('node_modules') !== -1) {
+ throw new BrowserslistError(
+ '`node_modules` not allowed in Browserslist config.' + use
+ )
+ }
+}
+
+function isFile(file) {
+ if (file in filenessCache) {
+ return filenessCache[file]
+ }
+ var result = fs.existsSync(file) && fs.statSync(file).isFile()
+ if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
+ filenessCache[file] = result
+ }
+ return result
+}
+
+function eachParent(file, callback) {
+ var dir = isFile(file) ? path.dirname(file) : file
+ var loc = path.resolve(dir)
+ do {
+ var result = callback(loc)
+ if (typeof result !== 'undefined') return result
+ } while (loc !== (loc = path.dirname(loc)))
+ return undefined
+}
+
+function check(section) {
+ if (Array.isArray(section)) {
+ for (var i = 0; i < section.length; i++) {
+ if (typeof section[i] !== 'string') {
+ throw new BrowserslistError(FORMAT)
+ }
+ }
+ } else if (typeof section !== 'string') {
+ throw new BrowserslistError(FORMAT)
+ }
+}
+
+function pickEnv(config, opts) {
+ if (typeof config !== 'object') return config
+
+ var name
+ if (typeof opts.env === 'string') {
+ name = opts.env
+ } else if (process.env.BROWSERSLIST_ENV) {
+ name = process.env.BROWSERSLIST_ENV
+ } else if (process.env.NODE_ENV) {
+ name = process.env.NODE_ENV
+ } else {
+ name = 'production'
+ }
+
+ return config[name] || config.defaults
+}
+
+function parsePackage(file) {
+ var config = JSON.parse(fs.readFileSync(file))
+ if (config.browserlist && !config.browserslist) {
+ throw new BrowserslistError(
+ '`browserlist` key instead of `browserslist` in ' + file
+ )
+ }
+ var list = config.browserslist
+ if (Array.isArray(list) || typeof list === 'string') {
+ list = { defaults: list }
+ }
+ for (var i in list) {
+ check(list[i])
+ }
+
+ return list
+}
+
+function latestReleaseTime(agents) {
+ var latest = 0
+ for (var name in agents) {
+ var dates = agents[name].releaseDate || {}
+ for (var key in dates) {
+ if (latest < dates[key]) {
+ latest = dates[key]
+ }
+ }
+ }
+ return latest * 1000
+}
+
+function normalizeStats(data, stats) {
+ if (!data) {
+ data = {}
+ }
+ if (stats && 'dataByBrowser' in stats) {
+ stats = stats.dataByBrowser
+ }
+
+ if (typeof stats !== 'object') return undefined
+
+ var normalized = {}
+ for (var i in stats) {
+ var versions = Object.keys(stats[i])
+ if (versions.length === 1 && data[i] && data[i].versions.length === 1) {
+ var normal = data[i].versions[0]
+ normalized[i] = {}
+ normalized[i][normal] = stats[i][versions[0]]
+ } else {
+ normalized[i] = stats[i]
+ }
+ }
+
+ return normalized
+}
+
+function normalizeUsageData(usageData, data) {
+ for (var browser in usageData) {
+ var browserUsage = usageData[browser]
+ // eslint-disable-next-line max-len
+ // https://github.com/browserslist/browserslist/issues/431#issuecomment-565230615
+ // caniuse-db returns { 0: "percentage" } for `and_*` regional stats
+ if ('0' in browserUsage) {
+ var versions = data[browser].versions
+ browserUsage[versions[versions.length - 1]] = browserUsage[0]
+ delete browserUsage[0]
+ }
+ }
+}
+
+module.exports = {
+ loadQueries: function loadQueries(ctx, name) {
+ if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
+ checkExtend(name)
+ }
+ var queries = require(require.resolve(name, { paths: ['.', ctx.path] }))
+ if (queries) {
+ if (Array.isArray(queries)) {
+ return queries
+ } else if (typeof queries === 'object') {
+ if (!queries.defaults) queries.defaults = []
+ return pickEnv(queries, ctx, name)
+ }
+ }
+ throw new BrowserslistError(
+ '`' +
+ name +
+ '` config exports not an array of queries' +
+ ' or an object of envs'
+ )
+ },
+
+ loadStat: function loadStat(ctx, name, data) {
+ if (!ctx.dangerousExtend && !process.env.BROWSERSLIST_DANGEROUS_EXTEND) {
+ checkExtend(name)
+ }
+ var stats = require(require.resolve(
+ path.join(name, 'browserslist-stats.json'),
+ { paths: ['.'] }
+ ))
+ return normalizeStats(data, stats)
+ },
+
+ getStat: function getStat(opts, data) {
+ var stats
+ if (opts.stats) {
+ stats = opts.stats
+ } else if (process.env.BROWSERSLIST_STATS) {
+ stats = process.env.BROWSERSLIST_STATS
+ } else if (opts.path && path.resolve && fs.existsSync) {
+ stats = eachParent(opts.path, function (dir) {
+ var file = path.join(dir, 'browserslist-stats.json')
+ return isFile(file) ? file : undefined
+ })
+ }
+ if (typeof stats === 'string') {
+ try {
+ stats = JSON.parse(fs.readFileSync(stats))
+ } catch (e) {
+ throw new BrowserslistError("Can't read " + stats)
+ }
+ }
+ return normalizeStats(data, stats)
+ },
+
+ loadConfig: function loadConfig(opts) {
+ if (process.env.BROWSERSLIST) {
+ return process.env.BROWSERSLIST
+ } else if (opts.config || process.env.BROWSERSLIST_CONFIG) {
+ var file = opts.config || process.env.BROWSERSLIST_CONFIG
+ if (path.basename(file) === 'package.json') {
+ return pickEnv(parsePackage(file), opts)
+ } else {
+ return pickEnv(module.exports.readConfig(file), opts)
+ }
+ } else if (opts.path) {
+ return pickEnv(module.exports.findConfig(opts.path), opts)
+ } else {
+ return undefined
+ }
+ },
+
+ loadCountry: function loadCountry(usage, country, data) {
+ var code = country.replace(/[^\w-]/g, '')
+ if (!usage[code]) {
+ var compressed = require('caniuse-lite/data/regions/' + code + '.js')
+ var usageData = region(compressed)
+ normalizeUsageData(usageData, data)
+ usage[country] = {}
+ for (var i in usageData) {
+ for (var j in usageData[i]) {
+ usage[country][i + ' ' + j] = usageData[i][j]
+ }
+ }
+ }
+ },
+
+ loadFeature: function loadFeature(features, name) {
+ name = name.replace(/[^\w-]/g, '')
+ if (features[name]) return
+
+ var compressed = require('caniuse-lite/data/features/' + name + '.js')
+ var stats = feature(compressed).stats
+ features[name] = {}
+ for (var i in stats) {
+ for (var j in stats[i]) {
+ features[name][i + ' ' + j] = stats[i][j]
+ }
+ }
+ },
+
+ parseConfig: function parseConfig(string) {
+ var result = { defaults: [] }
+ var sections = ['defaults']
+
+ string
+ .toString()
+ .replace(/#[^\n]*/g, '')
+ .split(/\n|,/)
+ .map(function (line) {
+ return line.trim()
+ })
+ .filter(function (line) {
+ return line !== ''
+ })
+ .forEach(function (line) {
+ if (IS_SECTION.test(line)) {
+ sections = line.match(IS_SECTION)[1].trim().split(' ')
+ sections.forEach(function (section) {
+ if (result[section]) {
+ throw new BrowserslistError(
+ 'Duplicate section ' + section + ' in Browserslist config'
+ )
+ }
+ result[section] = []
+ })
+ } else {
+ sections.forEach(function (section) {
+ result[section].push(line)
+ })
+ }
+ })
+
+ return result
+ },
+
+ readConfig: function readConfig(file) {
+ if (!isFile(file)) {
+ throw new BrowserslistError("Can't read " + file + ' config')
+ }
+ return module.exports.parseConfig(fs.readFileSync(file))
+ },
+
+ findConfig: function findConfig(from) {
+ from = path.resolve(from)
+
+ var passed = []
+ var resolved = eachParent(from, function (dir) {
+ if (dir in configCache) {
+ return configCache[dir]
+ }
+
+ passed.push(dir)
+
+ var config = path.join(dir, 'browserslist')
+ var pkg = path.join(dir, 'package.json')
+ var rc = path.join(dir, '.browserslistrc')
+
+ var pkgBrowserslist
+ if (isFile(pkg)) {
+ try {
+ pkgBrowserslist = parsePackage(pkg)
+ } catch (e) {
+ if (e.name === 'BrowserslistError') throw e
+ console.warn(
+ '[Browserslist] Could not parse ' + pkg + '. Ignoring it.'
+ )
+ }
+ }
+
+ if (isFile(config) && pkgBrowserslist) {
+ throw new BrowserslistError(
+ dir + ' contains both browserslist and package.json with browsers'
+ )
+ } else if (isFile(rc) && pkgBrowserslist) {
+ throw new BrowserslistError(
+ dir + ' contains both .browserslistrc and package.json with browsers'
+ )
+ } else if (isFile(config) && isFile(rc)) {
+ throw new BrowserslistError(
+ dir + ' contains both .browserslistrc and browserslist'
+ )
+ } else if (isFile(config)) {
+ return module.exports.readConfig(config)
+ } else if (isFile(rc)) {
+ return module.exports.readConfig(rc)
+ } else {
+ return pkgBrowserslist
+ }
+ })
+ if (!process.env.BROWSERSLIST_DISABLE_CACHE) {
+ passed.forEach(function (dir) {
+ configCache[dir] = resolved
+ })
+ }
+ return resolved
+ },
+
+ clearCaches: function clearCaches() {
+ dataTimeChecked = false
+ filenessCache = {}
+ configCache = {}
+
+ this.cache = {}
+ },
+
+ oldDataWarning: function oldDataWarning(agentsObj) {
+ if (dataTimeChecked) return
+ dataTimeChecked = true
+ if (process.env.BROWSERSLIST_IGNORE_OLD_DATA) return
+
+ var latest = latestReleaseTime(agentsObj)
+ var halfYearAgo = Date.now() - TIME_TO_UPDATE_CANIUSE
+
+ if (latest !== 0 && latest < halfYearAgo) {
+ console.warn(
+ 'Browserslist: caniuse-lite is outdated. Please run:\n' +
+ ' npx browserslist@latest --update-db\n' +
+ ' Why you should do it regularly: ' +
+ 'https://github.com/browserslist/browserslist#browsers-data-updating'
+ )
+ }
+ },
+
+ currentNode: function currentNode() {
+ return 'node ' + process.versions.node
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/browserslist/package.json b/tools/node_modules/eslint/node_modules/browserslist/package.json
new file mode 100644
index 0000000000..15117ec1e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "browserslist",
+ "version": "4.18.1",
+ "description": "Share target browsers between different front-end tools, like Autoprefixer, Stylelint and babel-env-preset",
+ "keywords": [
+ "caniuse",
+ "browsers",
+ "target"
+ ],
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ "author": "Andrey Sitnik <andrey@sitnik.ru>",
+ "license": "MIT",
+ "repository": "browserslist/browserslist",
+ "dependencies": {
+ "caniuse-lite": "^1.0.30001280",
+ "electron-to-chromium": "^1.3.896",
+ "escalade": "^3.1.1",
+ "node-releases": "^2.0.1",
+ "picocolors": "^1.0.0"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "types": "./index.d.ts",
+ "browser": {
+ "./node.js": "./browser.js",
+ "path": false
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/browserslist/update-db.js b/tools/node_modules/eslint/node_modules/browserslist/update-db.js
new file mode 100644
index 0000000000..b02e0412a2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/browserslist/update-db.js
@@ -0,0 +1,363 @@
+var childProcess = require('child_process')
+var escalade = require('escalade/sync')
+var pico = require('picocolors')
+var path = require('path')
+var fs = require('fs')
+
+var BrowserslistError = require('./error')
+
+function detectLockfile() {
+ var packageDir = escalade('.', function (dir, names) {
+ return names.indexOf('package.json') !== -1 ? dir : ''
+ })
+
+ if (!packageDir) {
+ throw new BrowserslistError(
+ 'Cannot find package.json. ' +
+ 'Is this the right directory to run `npx browserslist --update-db` in?'
+ )
+ }
+
+ var lockfileNpm = path.join(packageDir, 'package-lock.json')
+ var lockfileShrinkwrap = path.join(packageDir, 'npm-shrinkwrap.json')
+ var lockfileYarn = path.join(packageDir, 'yarn.lock')
+ var lockfilePnpm = path.join(packageDir, 'pnpm-lock.yaml')
+
+ if (fs.existsSync(lockfilePnpm)) {
+ return { mode: 'pnpm', file: lockfilePnpm }
+ } else if (fs.existsSync(lockfileNpm)) {
+ return { mode: 'npm', file: lockfileNpm }
+ } else if (fs.existsSync(lockfileYarn)) {
+ var lock = { mode: 'yarn', file: lockfileYarn }
+ lock.content = fs.readFileSync(lock.file).toString()
+ lock.version = /# yarn lockfile v1/.test(lock.content) ? 1 : 2
+ return lock
+ } else if (fs.existsSync(lockfileShrinkwrap)) {
+ return { mode: 'npm', file: lockfileShrinkwrap }
+ }
+ throw new BrowserslistError(
+ 'No lockfile found. Run "npm install", "yarn install" or "pnpm install"'
+ )
+}
+
+function getLatestInfo(lock) {
+ if (lock.mode === 'yarn') {
+ if (lock.version === 1) {
+ return JSON.parse(
+ childProcess.execSync('yarn info caniuse-lite --json').toString()
+ ).data
+ } else {
+ return JSON.parse(
+ childProcess.execSync('yarn npm info caniuse-lite --json').toString()
+ )
+ }
+ }
+ return JSON.parse(
+ childProcess.execSync('npm show caniuse-lite --json').toString()
+ )
+}
+
+function getBrowsersList() {
+ return childProcess
+ .execSync('npx browserslist')
+ .toString()
+ .trim()
+ .split('\n')
+ .map(function (line) {
+ return line.trim().split(' ')
+ })
+ .reduce(function (result, entry) {
+ if (!result[entry[0]]) {
+ result[entry[0]] = []
+ }
+ result[entry[0]].push(entry[1])
+ return result
+ }, {})
+}
+
+function diffBrowsersLists(old, current) {
+ var browsers = Object.keys(old).concat(
+ Object.keys(current).filter(function (browser) {
+ return old[browser] === undefined
+ })
+ )
+ return browsers
+ .map(function (browser) {
+ var oldVersions = old[browser] || []
+ var currentVersions = current[browser] || []
+ var intersection = oldVersions.filter(function (version) {
+ return currentVersions.indexOf(version) !== -1
+ })
+ var addedVersions = currentVersions.filter(function (version) {
+ return intersection.indexOf(version) === -1
+ })
+ var removedVersions = oldVersions.filter(function (version) {
+ return intersection.indexOf(version) === -1
+ })
+ return removedVersions
+ .map(function (version) {
+ return pico.red('- ' + browser + ' ' + version)
+ })
+ .concat(
+ addedVersions.map(function (version) {
+ return pico.green('+ ' + browser + ' ' + version)
+ })
+ )
+ })
+ .reduce(function (result, array) {
+ return result.concat(array)
+ }, [])
+ .join('\n')
+}
+
+function updateNpmLockfile(lock, latest) {
+ var metadata = { latest: latest, versions: [] }
+ var content = deletePackage(JSON.parse(lock.content), metadata)
+ metadata.content = JSON.stringify(content, null, ' ')
+ return metadata
+}
+
+function deletePackage(node, metadata) {
+ if (node.dependencies) {
+ if (node.dependencies['caniuse-lite']) {
+ var version = node.dependencies['caniuse-lite'].version
+ metadata.versions[version] = true
+ delete node.dependencies['caniuse-lite']
+ }
+ for (var i in node.dependencies) {
+ node.dependencies[i] = deletePackage(node.dependencies[i], metadata)
+ }
+ }
+ return node
+}
+
+var yarnVersionRe = /version "(.*?)"/
+
+function updateYarnLockfile(lock, latest) {
+ var blocks = lock.content.split(/(\n{2,})/).map(function (block) {
+ return block.split('\n')
+ })
+ var versions = {}
+ blocks.forEach(function (lines) {
+ if (lines[0].indexOf('caniuse-lite@') !== -1) {
+ var match = yarnVersionRe.exec(lines[1])
+ versions[match[1]] = true
+ if (match[1] !== latest.version) {
+ lines[1] = lines[1].replace(
+ /version "[^"]+"/,
+ 'version "' + latest.version + '"'
+ )
+ lines[2] = lines[2].replace(
+ /resolved "[^"]+"/,
+ 'resolved "' + latest.dist.tarball + '"'
+ )
+ lines[3] = latest.dist.integrity
+ ? lines[3].replace(
+ /integrity .+/,
+ 'integrity ' + latest.dist.integrity
+ )
+ : ''
+ }
+ }
+ })
+ var content = blocks
+ .map(function (lines) {
+ return lines.join('\n')
+ })
+ .join('')
+ return { content: content, versions: versions }
+}
+
+function updatePnpmLockfile(lock, latest) {
+ var versions = {}
+ var lines = lock.content.split('\n')
+ var i
+ var j
+ var lineParts
+
+ for (i = 0; i < lines.length; i++) {
+ if (lines[i].indexOf('caniuse-lite:') >= 0) {
+ lineParts = lines[i].split(/:\s?/, 2)
+ if (lineParts[1].indexOf('/') >= 0) {
+ var sublineParts = lineParts[1].split(/([/:])/)
+ for (j = 0; j < sublineParts.length; j++) {
+ if (sublineParts[j].indexOf('caniuse-lite') >= 0) {
+ versions[sublineParts[j + 2]] = true
+ sublineParts[j + 2] = latest.version
+ break
+ }
+ }
+ lineParts[1] = sublineParts.join('')
+ } else {
+ versions[lineParts[1]] = true
+ }
+ lines[i] = lineParts[0] + ': ' + latest.version
+ } else if (lines[i].indexOf('/caniuse-lite') >= 0) {
+ lineParts = lines[i].split(/([/:])/)
+ for (j = 0; j < lineParts.length; j++) {
+ if (lineParts[j].indexOf('caniuse-lite') >= 0) {
+ versions[lineParts[j + 2]] = true
+ lineParts[j + 2] = latest.version
+ break
+ }
+ }
+ lines[i] = lineParts.join('')
+ for (i = i + 1; i < lines.length; i++) {
+ if (lines[i].indexOf('integrity: ') !== -1) {
+ lines[i] = lines[i].replace(
+ /integrity: .+/,
+ 'integrity: ' + latest.dist.integrity
+ )
+ } else if (lines[i].indexOf(' /') !== -1) {
+ break
+ }
+ }
+ }
+ }
+ return { content: lines.join('\n'), versions: versions }
+}
+
+function updateLockfile(lock, latest) {
+ if (!lock.content) lock.content = fs.readFileSync(lock.file).toString()
+
+ if (lock.mode === 'npm') {
+ return updateNpmLockfile(lock, latest)
+ } else if (lock.mode === 'yarn') {
+ return updateYarnLockfile(lock, latest)
+ }
+ return updatePnpmLockfile(lock, latest)
+}
+
+function updatePackageManually(print, lock, latest) {
+ var lockfileData = updateLockfile(lock, latest)
+ var caniuseVersions = Object.keys(lockfileData.versions).sort()
+ if (caniuseVersions.length === 1 && caniuseVersions[0] === latest.version) {
+ print(
+ 'Installed version: ' +
+ pico.bold(pico.green(latest.version)) +
+ '\n' +
+ pico.bold(pico.green('caniuse-lite is up to date')) +
+ '\n'
+ )
+ return
+ }
+
+ if (caniuseVersions.length === 0) {
+ caniuseVersions[0] = 'none'
+ }
+ print(
+ 'Installed version' +
+ (caniuseVersions.length === 1 ? ': ' : 's: ') +
+ pico.bold(pico.red(caniuseVersions.join(', '))) +
+ '\n' +
+ 'Removing old caniuse-lite from lock file\n'
+ )
+ fs.writeFileSync(lock.file, lockfileData.content)
+
+ var install = lock.mode === 'yarn' ? 'yarn add -W' : lock.mode + ' install'
+ print(
+ 'Installing new caniuse-lite version\n' +
+ pico.yellow('$ ' + install + ' caniuse-lite') +
+ '\n'
+ )
+ try {
+ childProcess.execSync(install + ' caniuse-lite')
+ } catch (e) /* istanbul ignore next */ {
+ print(
+ pico.red(
+ '\n' +
+ e.stack +
+ '\n\n' +
+ 'Problem with `' +
+ install +
+ ' caniuse-lite` call. ' +
+ 'Run it manually.\n'
+ )
+ )
+ process.exit(1)
+ }
+
+ var del = lock.mode === 'yarn' ? 'yarn remove -W' : lock.mode + ' uninstall'
+ print(
+ 'Cleaning package.json dependencies from caniuse-lite\n' +
+ pico.yellow('$ ' + del + ' caniuse-lite') +
+ '\n'
+ )
+ childProcess.execSync(del + ' caniuse-lite')
+}
+
+module.exports = function updateDB(print) {
+ var lock = detectLockfile()
+ var latest = getLatestInfo(lock)
+
+ var browsersListRetrievalError
+ var oldBrowsersList
+ try {
+ oldBrowsersList = getBrowsersList()
+ } catch (e) {
+ browsersListRetrievalError = e
+ }
+
+ print('Latest version: ' + pico.bold(pico.green(latest.version)) + '\n')
+
+ if (lock.mode === 'yarn' && lock.version !== 1) {
+ var update = 'yarn up -R'
+ print(
+ 'Updating caniuse-lite version\n' +
+ pico.yellow('$ ' + update + ' caniuse-lite') +
+ '\n'
+ )
+ try {
+ childProcess.execSync(update + ' caniuse-lite')
+ } catch (e) /* istanbul ignore next */ {
+ print(
+ pico.red(
+ '\n' +
+ e.stack +
+ '\n\n' +
+ 'Problem with `' +
+ update +
+ ' caniuse-lite` call. ' +
+ 'Run it manually.\n'
+ )
+ )
+ process.exit(1)
+ }
+ } else {
+ updatePackageManually(print, lock, latest)
+ }
+
+ print('caniuse-lite has been successfully updated\n')
+
+ var currentBrowsersList
+ if (!browsersListRetrievalError) {
+ try {
+ currentBrowsersList = getBrowsersList()
+ } catch (e) /* istanbul ignore next */ {
+ browsersListRetrievalError = e
+ }
+ }
+
+ if (browsersListRetrievalError) {
+ print(
+ pico.red(
+ '\n' +
+ browsersListRetrievalError.stack +
+ '\n\n' +
+ 'Problem with browser list retrieval.\n' +
+ 'Target browser changes won’t be shown.\n'
+ )
+ )
+ } else {
+ var targetBrowserChanges = diffBrowsersLists(
+ oldBrowsersList,
+ currentBrowsersList
+ )
+ if (targetBrowserChanges) {
+ print('\nTarget browser changes:\n')
+ print(targetBrowserChanges + '\n')
+ } else {
+ print('\n' + pico.green('No target browser changes') + '\n')
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/LICENSE b/tools/node_modules/eslint/node_modules/caniuse-lite/LICENSE
new file mode 100644
index 0000000000..06c608dcf4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/LICENSE
@@ -0,0 +1,395 @@
+Attribution 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More_considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution 4.0 International Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution 4.0 International Public License ("Public License"). To the
+extent this Public License may be interpreted as a contract, You are
+granted the Licensed Rights in consideration of Your acceptance of
+these terms and conditions, and the Licensor grants You such rights in
+consideration of benefits the Licensor receives from making the
+Licensed Material available under these terms and conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ d. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ e. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ f. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ g. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ h. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ i. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ j. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ k. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ 4. If You Share Adapted Material You produce, the Adapter's
+ License You apply must not prevent recipients of the Adapted
+ Material from complying with this Public License.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material; and
+
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the “Licensor.” The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/README.md b/tools/node_modules/eslint/node_modules/caniuse-lite/README.md
new file mode 100644
index 0000000000..f4878abf43
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/README.md
@@ -0,0 +1,92 @@
+# caniuse-lite
+
+A smaller version of caniuse-db, with only the essentials!
+
+## Why?
+
+The full data behind [Can I use][1] is incredibly useful for any front end
+developer, and on the website all of the details from the database are displayed
+to the user. However in automated tools, [many of these fields go unused][2];
+it's not a problem for server side consumption but client side, the less
+JavaScript that we send to the end user the better.
+
+caniuse-lite then, is a smaller dataset that keeps essential parts of the data
+in a compact format. It does this in multiple ways, such as converting `null`
+array entries into empty strings, representing support data as an integer rather
+than a string, and using base62 references instead of longer human-readable
+keys.
+
+This packed data is then reassembled (via functions exposed by this module) into
+a larger format which is mostly compatible with caniuse-db, and so it can be
+used as an almost drop-in replacement for caniuse-db for contexts where size on
+disk is important; for example, usage in web browsers. The API differences are
+very small and are detailed in the section below.
+
+
+## API
+
+```js
+import * as lite from 'caniuse-lite';
+```
+
+
+### `lite.agents`
+
+caniuse-db provides a full `data.json` file which contains all of the features
+data. Instead of this large file, caniuse-lite provides this data subset
+instead, which has the `browser`, `prefix`, `prefix_exceptions`, `usage_global`
+and `versions` keys from the original.
+
+In addition, the subset contains the `release_date` key with release dates (as timestamps) for each version:
+```json
+{
+ "release_date": {
+ "6": 998870400,
+ "7": 1161129600,
+ "8": 1237420800,
+ "9": 1300060800,
+ "10": 1346716800,
+ "11": 1381968000,
+ "5.5": 962323200
+ }
+}
+```
+
+
+### `lite.feature(js)`
+
+The `feature` method takes a file from `data/features` and converts it into
+something that more closely represents the `caniuse-db` format. Note that only
+the `title`, `stats` and `status` keys are kept from the original data.
+
+
+### `lite.features`
+
+The `features` index is provided as a way to query all of the features that
+are listed in the `caniuse-db` dataset. Note that you will need to use the
+`feature` method on values from this index to get a human-readable format.
+
+
+### `lite.region(js)`
+
+The `region` method takes a file from `data/regions` and converts it into
+something that more closely represents the `caniuse-db` format. Note that *only*
+the usage data is exposed here (the `data` key in the original files).
+
+
+## License
+
+The data in this repo is available for use under a CC BY 4.0 license
+(http://creativecommons.org/licenses/by/4.0/). For attribution just mention
+somewhere that the source is caniuse.com. If you have any questions about using
+the data for your project please contact me here: http://a.deveria.com/contact
+
+[1]: http://caniuse.com/
+[2]: https://github.com/Fyrd/caniuse/issues/1827
+
+
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js
new file mode 100644
index 0000000000..9d05594601
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js
@@ -0,0 +1 @@
+module.exports={A:{A:{J:0.0131217,E:0.00621152,F:0.0376392,G:0.0903341,A:0.0225835,B:0.700089,lB:0.009298},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","lB","J","E","F","G","A","B","","",""],E:"IE",F:{lB:962323200,J:998870400,E:1161129600,F:1237420800,G:1300060800,A:1346716800,B:1381968000}},B:{A:{C:0.008636,K:0.004267,L:0.004318,D:0.008636,M:0.008636,N:0.012954,O:0.038862,P:0,Q:0.004298,R:0.00944,U:0.004043,V:0.008636,W:0.008636,X:0.008636,Y:0.012954,Z:0.004318,a:0.017272,b:0.008636,c:0.017272,d:0.034544,e:0.164084,S:2.75057,f:0.898144,H:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","D","M","N","O","P","Q","R","U","V","W","X","Y","Z","a","b","c","d","e","S","f","H","","",""],E:"Edge",F:{C:1438128000,K:1447286400,L:1470096000,D:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,Q:1581033600,R:1586736000,U:1590019200,V:1594857600,W:1598486400,X:1602201600,Y:1605830400,Z:1611360000,a:1614816000,b:1618358400,c:1622073600,d:1626912000,e:1630627200,S:1632441600,f:1634774400,H:1637539200},D:{C:"ms",K:"ms",L:"ms",D:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0.004271,"1":0.004783,"2":0.00487,"3":0.005029,"4":0.0047,"5":0.038862,"6":0.004318,"7":0.004318,"8":0.004525,"9":0.004293,mB:0.004318,eB:0.004271,I:0.017272,g:0.004879,J:0.020136,E:0.005725,F:0.004525,G:0.00533,A:0.004283,B:0.004318,C:0.004471,K:0.004486,L:0.00453,D:0.004293,M:0.004417,N:0.004425,O:0.004293,h:0.004443,i:0.004283,j:0.004293,k:0.013698,l:0.004293,m:0.008786,n:0.004318,o:0.004317,p:0.004393,q:0.004418,r:0.008834,s:0.004293,t:0.008928,u:0.004471,v:0.009284,w:0.004707,x:0.009076,y:0.004425,z:0.004783,AB:0.008636,BB:0.004538,CB:0.008282,DB:0.004318,EB:0.069088,FB:0.004335,GB:0.008586,HB:0.004318,IB:0.008636,JB:0.004425,KB:0.004318,fB:0.004318,LB:0.008636,gB:0.004318,MB:0.004425,NB:0.008636,T:0.00415,OB:0.004267,PB:0.004318,QB:0.004267,RB:0.008636,SB:0.00415,TB:0.004293,UB:0.004425,VB:0.008636,WB:0.00415,XB:0.00415,YB:0.004318,ZB:0.004043,aB:0.008636,bB:0.142494,P:0.008636,Q:0.008636,R:0.017272,nB:0.008636,U:0.008636,V:0.017272,W:0.008636,X:0.008636,Y:0.008636,Z:0.025908,a:0.025908,b:0.025908,c:0.051816,d:0.75565,e:1.90424,S:0.025908,f:0,H:0,oB:0.008786,pB:0.00487},B:"moz",C:["mB","eB","oB","pB","I","g","J","E","F","G","A","B","C","K","L","D","M","N","O","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","fB","LB","gB","MB","NB","T","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","P","Q","R","nB","U","V","W","X","Y","Z","a","b","c","d","e","S","f","H",""],E:"Firefox",F:{"0":1431475200,"1":1435881600,"2":1439251200,"3":1442880000,"4":1446508800,"5":1450137600,"6":1453852800,"7":1457395200,"8":1461628800,"9":1465257600,mB:1161648000,eB:1213660800,oB:1246320000,pB:1264032000,I:1300752000,g:1308614400,J:1313452800,E:1317081600,F:1317081600,G:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,D:1342483200,M:1346112000,N:1349740800,O:1353628800,h:1357603200,i:1361232000,j:1364860800,k:1368489600,l:1372118400,m:1375747200,n:1379376000,o:1386633600,p:1391472000,q:1395100800,r:1398729600,s:1402358400,t:1405987200,u:1409616000,v:1413244800,w:1417392000,x:1421107200,y:1424736000,z:1428278400,AB:1470096000,BB:1474329600,CB:1479168000,DB:1485216000,EB:1488844800,FB:1492560000,GB:1497312000,HB:1502150400,IB:1506556800,JB:1510617600,KB:1516665600,fB:1520985600,LB:1525824000,gB:1529971200,MB:1536105600,NB:1540252800,T:1544486400,OB:1548720000,PB:1552953600,QB:1558396800,RB:1562630400,SB:1567468800,TB:1571788800,UB:1575331200,VB:1578355200,WB:1581379200,XB:1583798400,YB:1586304000,ZB:1588636800,aB:1591056000,bB:1593475200,P:1595894400,Q:1598313600,R:1600732800,nB:1603152000,U:1605571200,V:1607990400,W:1611619200,X:1614038400,Y:1616457600,Z:1618790400,a:1622505600,b:1626134400,c:1628553600,d:1630972800,e:1633392000,S:1635811200,f:null,H:null}},D:{A:{"0":0.02159,"1":0.004464,"2":0.012954,"3":0.0236,"4":0.004293,"5":0.008636,"6":0.004465,"7":0.004642,"8":0.004891,"9":0.012954,I:0.004706,g:0.004879,J:0.004879,E:0.005591,F:0.005591,G:0.005591,A:0.004534,B:0.004464,C:0.010424,K:0.0083,L:0.004706,D:0.015087,M:0.004393,N:0.004393,O:0.008652,h:0.004293,i:0.004393,j:0.004317,k:0.008636,l:0.008786,m:0.008636,n:0.004461,o:0.004141,p:0.004326,q:0.0047,r:0.004538,s:0.004293,t:0.008596,u:0.004566,v:0.004318,w:0.008636,x:0.012954,y:0.004335,z:0.004464,AB:0.02159,BB:0.177038,CB:0.004293,DB:0.004318,EB:0.004318,FB:0.012954,GB:0.008636,HB:0.008636,IB:0.047498,JB:0.008636,KB:0.008636,fB:0.008636,LB:0.008636,gB:0.060452,MB:0.008636,NB:0.012954,T:0.02159,OB:0.02159,PB:0.02159,QB:0.017272,RB:0.012954,SB:0.06477,TB:0.047498,UB:0.02159,VB:0.047498,WB:0.012954,XB:0.056134,YB:0.077724,ZB:0.056134,aB:0.02159,bB:0.047498,P:0.164084,Q:0.073406,R:0.047498,U:0.077724,V:0.099314,W:0.112268,X:0.10795,Y:0.319532,Z:0.094996,a:0.177038,b:0.116586,c:0.32385,d:0.617474,e:1.66243,S:17.5829,f:4.74116,H:0.02159,qB:0.012954,rB:0,sB:0},B:"webkit",C:["","","","I","g","J","E","F","G","A","B","C","K","L","D","M","N","O","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","fB","LB","gB","MB","NB","T","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","P","Q","R","U","V","W","X","Y","Z","a","b","c","d","e","S","f","H","qB","rB","sB"],E:"Chrome",F:{"0":1412640000,"1":1416268800,"2":1421798400,"3":1425513600,"4":1429401600,"5":1432080000,"6":1437523200,"7":1441152000,"8":1444780800,"9":1449014400,I:1264377600,g:1274745600,J:1283385600,E:1287619200,F:1291248000,G:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,D:1316131200,M:1319500800,N:1323734400,O:1328659200,h:1332892800,i:1337040000,j:1340668800,k:1343692800,l:1348531200,m:1352246400,n:1357862400,o:1361404800,p:1364428800,q:1369094400,r:1374105600,s:1376956800,t:1384214400,u:1389657600,v:1392940800,w:1397001600,x:1400544000,y:1405468800,z:1409011200,AB:1453248000,BB:1456963200,CB:1460592000,DB:1464134400,EB:1469059200,FB:1472601600,GB:1476230400,HB:1480550400,IB:1485302400,JB:1489017600,KB:1492560000,fB:1496707200,LB:1500940800,gB:1504569600,MB:1508198400,NB:1512518400,T:1516752000,OB:1520294400,PB:1523923200,QB:1527552000,RB:1532390400,SB:1536019200,TB:1539648000,UB:1543968000,VB:1548720000,WB:1552348800,XB:1555977600,YB:1559606400,ZB:1564444800,aB:1568073600,bB:1571702400,P:1575936000,Q:1580860800,R:1586304000,U:1589846400,V:1594684800,W:1598313600,X:1601942400,Y:1605571200,Z:1611014400,a:1614556800,b:1618272000,c:1621987200,d:1626739200,e:1630368000,S:1632268800,f:1634601600,H:1637020800,qB:null,rB:null,sB:null}},E:{A:{I:0,g:0.004293,J:0.004656,E:0.004465,F:0.004043,G:0.004891,A:0.004425,B:0.004318,C:0.008636,K:0.069088,L:0.375666,D:0.90678,tB:0,hB:0.008692,uB:0.012954,vB:0.00456,wB:0.004283,xB:0.025908,iB:0.012954,cB:0.04318,dB:0.077724,yB:0.526796,zB:1.98196,"0B":0,"1B":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","tB","hB","I","g","uB","J","vB","E","wB","F","G","xB","A","iB","B","cB","C","dB","K","yB","L","zB","D","0B","1B","",""],E:"Safari",F:{tB:1205798400,hB:1226534400,I:1244419200,g:1275868800,uB:1311120000,J:1343174400,vB:1382400000,E:1382400000,wB:1410998400,F:1413417600,G:1443657600,xB:1458518400,A:1474329600,iB:1490572800,B:1505779200,cB:1522281600,C:1537142400,dB:1553472000,K:1568851200,yB:1585008000,L:1600214400,zB:1619395200,D:1632096000,"0B":1635292800,"1B":null}},F:{A:{"0":0.004367,"1":0.004534,"2":0.008636,"3":0.004227,"4":0.004418,"5":0.004293,"6":0.004227,"7":0.004725,"8":0.008636,"9":0.008942,G:0.0082,B:0.016581,C:0.004317,D:0.00685,M:0.00685,N:0.00685,O:0.005014,h:0.006015,i:0.004879,j:0.006597,k:0.006597,l:0.013434,m:0.006702,n:0.006015,o:0.005595,p:0.004393,q:0.008652,r:0.004879,s:0.004879,t:0.004318,u:0.005152,v:0.005014,w:0.009758,x:0.004879,y:0.008636,z:0.004283,AB:0.004707,BB:0.004827,CB:0.004707,DB:0.004707,EB:0.004326,FB:0.008922,GB:0.014349,HB:0.004425,IB:0.00472,JB:0.004425,KB:0.004425,LB:0.00472,MB:0.004532,NB:0.004566,T:0.02283,OB:0.00867,PB:0.004656,QB:0.004642,RB:0.004318,SB:0.00944,TB:0.004293,UB:0.004293,VB:0.004298,WB:0.096692,XB:0.004201,YB:0.004141,ZB:0.004043,aB:0.004318,bB:0.060452,P:0.695198,Q:0.358394,R:0,"2B":0.00685,"3B":0,"4B":0.008392,"5B":0.004706,cB:0.006229,jB:0.004879,"6B":0.008786,dB:0.00472},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","G","2B","3B","4B","5B","B","cB","jB","6B","C","dB","D","M","N","O","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","T","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","P","Q","R","","",""],E:"Opera",F:{"0":1465344000,"1":1470096000,"2":1474329600,"3":1477267200,"4":1481587200,"5":1486425600,"6":1490054400,"7":1494374400,"8":1498003200,"9":1502236800,G:1150761600,"2B":1223424000,"3B":1251763200,"4B":1267488000,"5B":1277942400,B:1292457600,cB:1302566400,jB:1309219200,"6B":1323129600,C:1323129600,dB:1352073600,D:1372723200,M:1377561600,N:1381104000,O:1386288000,h:1390867200,i:1393891200,j:1399334400,k:1401753600,l:1405987200,m:1409616000,n:1413331200,o:1417132800,p:1422316800,q:1425945600,r:1430179200,s:1433808000,t:1438646400,u:1442448000,v:1445904000,w:1449100800,x:1454371200,y:1457308800,z:1462320000,AB:1506470400,BB:1510099200,CB:1515024000,DB:1517961600,EB:1521676800,FB:1525910400,GB:1530144000,HB:1534982400,IB:1537833600,JB:1543363200,KB:1548201600,LB:1554768000,MB:1561593600,NB:1566259200,T:1570406400,OB:1573689600,PB:1578441600,QB:1583971200,RB:1587513600,SB:1592956800,TB:1595894400,UB:1600128000,VB:1603238400,WB:1613520000,XB:1612224000,YB:1616544000,ZB:1619568000,aB:1623715200,bB:1627948800,P:1631577600,Q:1633392000,R:1635984000},D:{G:"o",B:"o",C:"o","2B":"o","3B":"o","4B":"o","5B":"o",cB:"o",jB:"o","6B":"o",dB:"o"}},G:{A:{F:0.00145527,D:3.10555,hB:0,"7B":0,kB:0.00291054,"8B":0.00727635,"9B":0.0713083,AC:0.0232843,BC:0.0116422,CC:0.0203738,DC:0.106235,EC:0.037837,FC:0.129519,GC:0.0771293,HC:0.0480239,IC:0.0509345,JC:0.665059,KC:0.0422029,LC:0.0203738,MC:0.10769,NC:0.343444,OC:1.27918,PC:8.40273},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","hB","7B","kB","8B","9B","AC","F","BC","CC","DC","EC","FC","GC","HC","IC","JC","KC","LC","MC","NC","OC","PC","D","","",""],E:"Safari on iOS",F:{hB:1270252800,"7B":1283904000,kB:1299628800,"8B":1331078400,"9B":1359331200,AC:1394409600,F:1410912000,BC:1413763200,CC:1442361600,DC:1458518400,EC:1473724800,FC:1490572800,GC:1505779200,HC:1522281600,IC:1537142400,JC:1553472000,KC:1568851200,LC:1572220800,MC:1580169600,NC:1585008000,OC:1600214400,PC:1619395200,D:1632096000}},H:{A:{QC:1.08682},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","QC","","",""],E:"Opera Mini",F:{QC:1426464000}},I:{A:{eB:0,I:0.0202897,H:0,RC:0,SC:0,TC:0,UC:0.0112721,kB:0.0428338,VC:0,WC:0.198388},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","RC","SC","TC","eB","I","UC","kB","VC","WC","H","","",""],E:"Android Browser",F:{RC:1256515200,SC:1274313600,TC:1291593600,eB:1298332800,I:1318896000,UC:1341792000,kB:1374624000,VC:1386547200,WC:1401667200,H:1636934400}},J:{A:{E:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","E","A","","",""],E:"Blackberry Browser",F:{E:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,T:0.0111391,cB:0,jB:0,dB:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","cB","jB","C","dB","T","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,cB:1314835200,jB:1318291200,C:1330300800,dB:1349740800,T:1613433600},D:{T:"webkit"}},L:{A:{H:37.6597},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","H","","",""],E:"Chrome for Android",F:{H:1637020800}},M:{A:{S:0.278467},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","S","","",""],E:"Firefox for Android",F:{S:1635811200}},N:{A:{A:0.0115934,B:0.022664},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{XC:0.977476},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","XC","","",""],E:"UC Browser for Android",F:{XC:1471392000},D:{XC:"webkit"}},P:{A:{I:0.232512,YC:0.0103543,ZC:0.010304,aC:0.0739812,bC:0.0103584,cC:0.0317062,iB:0.0105043,dC:0.0951187,eC:0.042275,fC:0.147962,gC:0.211375,hC:2.10318},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","YC","ZC","aC","bC","cC","iB","dC","eC","fC","gC","hC","","",""],E:"Samsung Internet",F:{I:1461024000,YC:1481846400,ZC:1509408000,aC:1528329600,bC:1546128000,cC:1554163200,iB:1567900800,dC:1582588800,eC:1593475200,fC:1605657600,gC:1618531200,hC:1629072000}},Q:{A:{iC:0.164807},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","iC","","",""],E:"QQ Browser",F:{iC:1589846400}},R:{A:{jC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","jC","","",""],E:"Baidu Browser",F:{jC:1491004800}},S:{A:{kC:0.062513},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","kC","","",""],E:"KaiOS Browser",F:{kC:1527811200}}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js
new file mode 100644
index 0000000000..fe86cdabb4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js
@@ -0,0 +1 @@
+module.exports={"0":"38","1":"39","2":"40","3":"41","4":"42","5":"43","6":"44","7":"45","8":"46","9":"47",A:"10",B:"11",C:"12",D:"15",E:"7",F:"8",G:"9",H:"96",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"80",R:"81",S:"94",T:"64",U:"83",V:"84",W:"85",X:"86",Y:"87",Z:"88",a:"89",b:"90",c:"91",d:"92",e:"93",f:"95",g:"5",h:"19",i:"20",j:"21",k:"22",l:"23",m:"24",n:"25",o:"26",p:"27",q:"28",r:"29",s:"30",t:"31",u:"32",v:"33",w:"34",x:"35",y:"36",z:"37",AB:"48",BB:"49",CB:"50",DB:"51",EB:"52",FB:"53",GB:"54",HB:"55",IB:"56",JB:"57",KB:"58",LB:"60",MB:"62",NB:"63",OB:"65",PB:"66",QB:"67",RB:"68",SB:"69",TB:"70",UB:"71",VB:"72",WB:"73",XB:"74",YB:"75",ZB:"76",aB:"77",bB:"78",cB:"11.1",dB:"12.1",eB:"3",fB:"59",gB:"61",hB:"3.2",iB:"10.1",jB:"11.5",kB:"4.2-4.3",lB:"5.5",mB:"2",nB:"82",oB:"3.5",pB:"3.6",qB:"97",rB:"98",sB:"99",tB:"3.1",uB:"5.1",vB:"6.1",wB:"7.1",xB:"9.1",yB:"13.1",zB:"14.1","0B":"15.1","1B":"TP","2B":"9.5-9.6","3B":"10.0-10.1","4B":"10.5","5B":"10.6","6B":"11.6","7B":"4.0-4.1","8B":"5.0-5.1","9B":"6.0-6.1",AC:"7.0-7.1",BC:"8.1-8.4",CC:"9.0-9.2",DC:"9.3",EC:"10.0-10.2",FC:"10.3",GC:"11.0-11.2",HC:"11.3-11.4",IC:"12.0-12.1",JC:"12.2-12.5",KC:"13.0-13.1",LC:"13.2",MC:"13.3",NC:"13.4-13.7",OC:"14.0-14.4",PC:"14.5-14.8",QC:"all",RC:"2.1",SC:"2.2",TC:"2.3",UC:"4.1",VC:"4.4",WC:"4.4.3-4.4.4",XC:"12.12",YC:"5.0-5.4",ZC:"6.2-6.4",aC:"7.2-7.4",bC:"8.2",cC:"9.2",dC:"11.1-11.2",eC:"12.0",fC:"13.0",gC:"14.0",hC:"15.0",iC:"10.4",jC:"7.12",kC:"2.5"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/browsers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browsers.js
new file mode 100644
index 0000000000..04fbb50f7f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browsers.js
@@ -0,0 +1 @@
+module.exports={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js
new file mode 100644
index 0000000000..156c5d4438
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features.js
@@ -0,0 +1 @@
+module.exports={"aac":require("./features/aac"),"abortcontroller":require("./features/abortcontroller"),"ac3-ec3":require("./features/ac3-ec3"),"accelerometer":require("./features/accelerometer"),"addeventlistener":require("./features/addeventlistener"),"alternate-stylesheet":require("./features/alternate-stylesheet"),"ambient-light":require("./features/ambient-light"),"apng":require("./features/apng"),"array-find-index":require("./features/array-find-index"),"array-find":require("./features/array-find"),"array-flat":require("./features/array-flat"),"array-includes":require("./features/array-includes"),"arrow-functions":require("./features/arrow-functions"),"asmjs":require("./features/asmjs"),"async-clipboard":require("./features/async-clipboard"),"async-functions":require("./features/async-functions"),"atob-btoa":require("./features/atob-btoa"),"audio-api":require("./features/audio-api"),"audio":require("./features/audio"),"audiotracks":require("./features/audiotracks"),"autofocus":require("./features/autofocus"),"auxclick":require("./features/auxclick"),"av1":require("./features/av1"),"avif":require("./features/avif"),"background-attachment":require("./features/background-attachment"),"background-clip-text":require("./features/background-clip-text"),"background-img-opts":require("./features/background-img-opts"),"background-position-x-y":require("./features/background-position-x-y"),"background-repeat-round-space":require("./features/background-repeat-round-space"),"background-sync":require("./features/background-sync"),"battery-status":require("./features/battery-status"),"beacon":require("./features/beacon"),"beforeafterprint":require("./features/beforeafterprint"),"bigint":require("./features/bigint"),"blobbuilder":require("./features/blobbuilder"),"bloburls":require("./features/bloburls"),"border-image":require("./features/border-image"),"border-radius":require("./features/border-radius"),"broadcastchannel":require("./features/broadcastchannel"),"brotli":require("./features/brotli"),"calc":require("./features/calc"),"canvas-blending":require("./features/canvas-blending"),"canvas-text":require("./features/canvas-text"),"canvas":require("./features/canvas"),"ch-unit":require("./features/ch-unit"),"chacha20-poly1305":require("./features/chacha20-poly1305"),"channel-messaging":require("./features/channel-messaging"),"childnode-remove":require("./features/childnode-remove"),"classlist":require("./features/classlist"),"client-hints-dpr-width-viewport":require("./features/client-hints-dpr-width-viewport"),"clipboard":require("./features/clipboard"),"colr":require("./features/colr"),"comparedocumentposition":require("./features/comparedocumentposition"),"console-basic":require("./features/console-basic"),"console-time":require("./features/console-time"),"const":require("./features/const"),"constraint-validation":require("./features/constraint-validation"),"contenteditable":require("./features/contenteditable"),"contentsecuritypolicy":require("./features/contentsecuritypolicy"),"contentsecuritypolicy2":require("./features/contentsecuritypolicy2"),"cookie-store-api":require("./features/cookie-store-api"),"cors":require("./features/cors"),"createimagebitmap":require("./features/createimagebitmap"),"credential-management":require("./features/credential-management"),"cryptography":require("./features/cryptography"),"css-all":require("./features/css-all"),"css-animation":require("./features/css-animation"),"css-any-link":require("./features/css-any-link"),"css-appearance":require("./features/css-appearance"),"css-apply-rule":require("./features/css-apply-rule"),"css-at-counter-style":require("./features/css-at-counter-style"),"css-autofill":require("./features/css-autofill"),"css-backdrop-filter":require("./features/css-backdrop-filter"),"css-background-offsets":require("./features/css-background-offsets"),"css-backgroundblendmode":require("./features/css-backgroundblendmode"),"css-boxdecorationbreak":require("./features/css-boxdecorationbreak"),"css-boxshadow":require("./features/css-boxshadow"),"css-canvas":require("./features/css-canvas"),"css-caret-color":require("./features/css-caret-color"),"css-cascade-layers":require("./features/css-cascade-layers"),"css-case-insensitive":require("./features/css-case-insensitive"),"css-clip-path":require("./features/css-clip-path"),"css-color-adjust":require("./features/css-color-adjust"),"css-color-function":require("./features/css-color-function"),"css-conic-gradients":require("./features/css-conic-gradients"),"css-container-queries":require("./features/css-container-queries"),"css-containment":require("./features/css-containment"),"css-content-visibility":require("./features/css-content-visibility"),"css-counters":require("./features/css-counters"),"css-crisp-edges":require("./features/css-crisp-edges"),"css-cross-fade":require("./features/css-cross-fade"),"css-default-pseudo":require("./features/css-default-pseudo"),"css-descendant-gtgt":require("./features/css-descendant-gtgt"),"css-deviceadaptation":require("./features/css-deviceadaptation"),"css-dir-pseudo":require("./features/css-dir-pseudo"),"css-display-contents":require("./features/css-display-contents"),"css-element-function":require("./features/css-element-function"),"css-env-function":require("./features/css-env-function"),"css-exclusions":require("./features/css-exclusions"),"css-featurequeries":require("./features/css-featurequeries"),"css-filter-function":require("./features/css-filter-function"),"css-filters":require("./features/css-filters"),"css-first-letter":require("./features/css-first-letter"),"css-first-line":require("./features/css-first-line"),"css-fixed":require("./features/css-fixed"),"css-focus-visible":require("./features/css-focus-visible"),"css-focus-within":require("./features/css-focus-within"),"css-font-rendering-controls":require("./features/css-font-rendering-controls"),"css-font-stretch":require("./features/css-font-stretch"),"css-gencontent":require("./features/css-gencontent"),"css-gradients":require("./features/css-gradients"),"css-grid":require("./features/css-grid"),"css-hanging-punctuation":require("./features/css-hanging-punctuation"),"css-has":require("./features/css-has"),"css-hyphenate":require("./features/css-hyphenate"),"css-hyphens":require("./features/css-hyphens"),"css-image-orientation":require("./features/css-image-orientation"),"css-image-set":require("./features/css-image-set"),"css-in-out-of-range":require("./features/css-in-out-of-range"),"css-indeterminate-pseudo":require("./features/css-indeterminate-pseudo"),"css-initial-letter":require("./features/css-initial-letter"),"css-initial-value":require("./features/css-initial-value"),"css-lch-lab":require("./features/css-lch-lab"),"css-letter-spacing":require("./features/css-letter-spacing"),"css-line-clamp":require("./features/css-line-clamp"),"css-logical-props":require("./features/css-logical-props"),"css-marker-pseudo":require("./features/css-marker-pseudo"),"css-masks":require("./features/css-masks"),"css-matches-pseudo":require("./features/css-matches-pseudo"),"css-math-functions":require("./features/css-math-functions"),"css-media-interaction":require("./features/css-media-interaction"),"css-media-resolution":require("./features/css-media-resolution"),"css-media-scripting":require("./features/css-media-scripting"),"css-mediaqueries":require("./features/css-mediaqueries"),"css-mixblendmode":require("./features/css-mixblendmode"),"css-motion-paths":require("./features/css-motion-paths"),"css-namespaces":require("./features/css-namespaces"),"css-nesting":require("./features/css-nesting"),"css-not-sel-list":require("./features/css-not-sel-list"),"css-nth-child-of":require("./features/css-nth-child-of"),"css-opacity":require("./features/css-opacity"),"css-optional-pseudo":require("./features/css-optional-pseudo"),"css-overflow-anchor":require("./features/css-overflow-anchor"),"css-overflow-overlay":require("./features/css-overflow-overlay"),"css-overflow":require("./features/css-overflow"),"css-overscroll-behavior":require("./features/css-overscroll-behavior"),"css-page-break":require("./features/css-page-break"),"css-paged-media":require("./features/css-paged-media"),"css-paint-api":require("./features/css-paint-api"),"css-placeholder-shown":require("./features/css-placeholder-shown"),"css-placeholder":require("./features/css-placeholder"),"css-read-only-write":require("./features/css-read-only-write"),"css-rebeccapurple":require("./features/css-rebeccapurple"),"css-reflections":require("./features/css-reflections"),"css-regions":require("./features/css-regions"),"css-repeating-gradients":require("./features/css-repeating-gradients"),"css-resize":require("./features/css-resize"),"css-revert-value":require("./features/css-revert-value"),"css-rrggbbaa":require("./features/css-rrggbbaa"),"css-scroll-behavior":require("./features/css-scroll-behavior"),"css-scroll-timeline":require("./features/css-scroll-timeline"),"css-scrollbar":require("./features/css-scrollbar"),"css-sel2":require("./features/css-sel2"),"css-sel3":require("./features/css-sel3"),"css-selection":require("./features/css-selection"),"css-shapes":require("./features/css-shapes"),"css-snappoints":require("./features/css-snappoints"),"css-sticky":require("./features/css-sticky"),"css-subgrid":require("./features/css-subgrid"),"css-supports-api":require("./features/css-supports-api"),"css-table":require("./features/css-table"),"css-text-align-last":require("./features/css-text-align-last"),"css-text-indent":require("./features/css-text-indent"),"css-text-justify":require("./features/css-text-justify"),"css-text-orientation":require("./features/css-text-orientation"),"css-text-spacing":require("./features/css-text-spacing"),"css-textshadow":require("./features/css-textshadow"),"css-touch-action-2":require("./features/css-touch-action-2"),"css-touch-action":require("./features/css-touch-action"),"css-transitions":require("./features/css-transitions"),"css-unicode-bidi":require("./features/css-unicode-bidi"),"css-unset-value":require("./features/css-unset-value"),"css-variables":require("./features/css-variables"),"css-widows-orphans":require("./features/css-widows-orphans"),"css-writing-mode":require("./features/css-writing-mode"),"css-zoom":require("./features/css-zoom"),"css3-attr":require("./features/css3-attr"),"css3-boxsizing":require("./features/css3-boxsizing"),"css3-colors":require("./features/css3-colors"),"css3-cursors-grab":require("./features/css3-cursors-grab"),"css3-cursors-newer":require("./features/css3-cursors-newer"),"css3-cursors":require("./features/css3-cursors"),"css3-tabsize":require("./features/css3-tabsize"),"currentcolor":require("./features/currentcolor"),"custom-elements":require("./features/custom-elements"),"custom-elementsv1":require("./features/custom-elementsv1"),"customevent":require("./features/customevent"),"datalist":require("./features/datalist"),"dataset":require("./features/dataset"),"datauri":require("./features/datauri"),"date-tolocaledatestring":require("./features/date-tolocaledatestring"),"decorators":require("./features/decorators"),"details":require("./features/details"),"deviceorientation":require("./features/deviceorientation"),"devicepixelratio":require("./features/devicepixelratio"),"dialog":require("./features/dialog"),"dispatchevent":require("./features/dispatchevent"),"dnssec":require("./features/dnssec"),"do-not-track":require("./features/do-not-track"),"document-currentscript":require("./features/document-currentscript"),"document-evaluate-xpath":require("./features/document-evaluate-xpath"),"document-execcommand":require("./features/document-execcommand"),"document-policy":require("./features/document-policy"),"document-scrollingelement":require("./features/document-scrollingelement"),"documenthead":require("./features/documenthead"),"dom-manip-convenience":require("./features/dom-manip-convenience"),"dom-range":require("./features/dom-range"),"domcontentloaded":require("./features/domcontentloaded"),"domfocusin-domfocusout-events":require("./features/domfocusin-domfocusout-events"),"dommatrix":require("./features/dommatrix"),"download":require("./features/download"),"dragndrop":require("./features/dragndrop"),"element-closest":require("./features/element-closest"),"element-from-point":require("./features/element-from-point"),"element-scroll-methods":require("./features/element-scroll-methods"),"eme":require("./features/eme"),"eot":require("./features/eot"),"es5":require("./features/es5"),"es6-class":require("./features/es6-class"),"es6-generators":require("./features/es6-generators"),"es6-module-dynamic-import":require("./features/es6-module-dynamic-import"),"es6-module":require("./features/es6-module"),"es6-number":require("./features/es6-number"),"es6-string-includes":require("./features/es6-string-includes"),"es6":require("./features/es6"),"eventsource":require("./features/eventsource"),"extended-system-fonts":require("./features/extended-system-fonts"),"feature-policy":require("./features/feature-policy"),"fetch":require("./features/fetch"),"fieldset-disabled":require("./features/fieldset-disabled"),"fileapi":require("./features/fileapi"),"filereader":require("./features/filereader"),"filereadersync":require("./features/filereadersync"),"filesystem":require("./features/filesystem"),"flac":require("./features/flac"),"flexbox-gap":require("./features/flexbox-gap"),"flexbox":require("./features/flexbox"),"flow-root":require("./features/flow-root"),"focusin-focusout-events":require("./features/focusin-focusout-events"),"focusoptions-preventscroll":require("./features/focusoptions-preventscroll"),"font-family-system-ui":require("./features/font-family-system-ui"),"font-feature":require("./features/font-feature"),"font-kerning":require("./features/font-kerning"),"font-loading":require("./features/font-loading"),"font-metrics-overrides":require("./features/font-metrics-overrides"),"font-size-adjust":require("./features/font-size-adjust"),"font-smooth":require("./features/font-smooth"),"font-unicode-range":require("./features/font-unicode-range"),"font-variant-alternates":require("./features/font-variant-alternates"),"font-variant-east-asian":require("./features/font-variant-east-asian"),"font-variant-numeric":require("./features/font-variant-numeric"),"fontface":require("./features/fontface"),"form-attribute":require("./features/form-attribute"),"form-submit-attributes":require("./features/form-submit-attributes"),"form-validation":require("./features/form-validation"),"forms":require("./features/forms"),"fullscreen":require("./features/fullscreen"),"gamepad":require("./features/gamepad"),"geolocation":require("./features/geolocation"),"getboundingclientrect":require("./features/getboundingclientrect"),"getcomputedstyle":require("./features/getcomputedstyle"),"getelementsbyclassname":require("./features/getelementsbyclassname"),"getrandomvalues":require("./features/getrandomvalues"),"gyroscope":require("./features/gyroscope"),"hardwareconcurrency":require("./features/hardwareconcurrency"),"hashchange":require("./features/hashchange"),"heif":require("./features/heif"),"hevc":require("./features/hevc"),"hidden":require("./features/hidden"),"high-resolution-time":require("./features/high-resolution-time"),"history":require("./features/history"),"html-media-capture":require("./features/html-media-capture"),"html5semantic":require("./features/html5semantic"),"http-live-streaming":require("./features/http-live-streaming"),"http2":require("./features/http2"),"http3":require("./features/http3"),"iframe-sandbox":require("./features/iframe-sandbox"),"iframe-seamless":require("./features/iframe-seamless"),"iframe-srcdoc":require("./features/iframe-srcdoc"),"imagecapture":require("./features/imagecapture"),"ime":require("./features/ime"),"img-naturalwidth-naturalheight":require("./features/img-naturalwidth-naturalheight"),"import-maps":require("./features/import-maps"),"imports":require("./features/imports"),"indeterminate-checkbox":require("./features/indeterminate-checkbox"),"indexeddb":require("./features/indexeddb"),"indexeddb2":require("./features/indexeddb2"),"inline-block":require("./features/inline-block"),"innertext":require("./features/innertext"),"input-autocomplete-onoff":require("./features/input-autocomplete-onoff"),"input-color":require("./features/input-color"),"input-datetime":require("./features/input-datetime"),"input-email-tel-url":require("./features/input-email-tel-url"),"input-event":require("./features/input-event"),"input-file-accept":require("./features/input-file-accept"),"input-file-directory":require("./features/input-file-directory"),"input-file-multiple":require("./features/input-file-multiple"),"input-inputmode":require("./features/input-inputmode"),"input-minlength":require("./features/input-minlength"),"input-number":require("./features/input-number"),"input-pattern":require("./features/input-pattern"),"input-placeholder":require("./features/input-placeholder"),"input-range":require("./features/input-range"),"input-search":require("./features/input-search"),"input-selection":require("./features/input-selection"),"insert-adjacent":require("./features/insert-adjacent"),"insertadjacenthtml":require("./features/insertadjacenthtml"),"internationalization":require("./features/internationalization"),"intersectionobserver-v2":require("./features/intersectionobserver-v2"),"intersectionobserver":require("./features/intersectionobserver"),"intl-pluralrules":require("./features/intl-pluralrules"),"intrinsic-width":require("./features/intrinsic-width"),"jpeg2000":require("./features/jpeg2000"),"jpegxl":require("./features/jpegxl"),"jpegxr":require("./features/jpegxr"),"js-regexp-lookbehind":require("./features/js-regexp-lookbehind"),"json":require("./features/json"),"justify-content-space-evenly":require("./features/justify-content-space-evenly"),"kerning-pairs-ligatures":require("./features/kerning-pairs-ligatures"),"keyboardevent-charcode":require("./features/keyboardevent-charcode"),"keyboardevent-code":require("./features/keyboardevent-code"),"keyboardevent-getmodifierstate":require("./features/keyboardevent-getmodifierstate"),"keyboardevent-key":require("./features/keyboardevent-key"),"keyboardevent-location":require("./features/keyboardevent-location"),"keyboardevent-which":require("./features/keyboardevent-which"),"lazyload":require("./features/lazyload"),"let":require("./features/let"),"link-icon-png":require("./features/link-icon-png"),"link-icon-svg":require("./features/link-icon-svg"),"link-rel-dns-prefetch":require("./features/link-rel-dns-prefetch"),"link-rel-modulepreload":require("./features/link-rel-modulepreload"),"link-rel-preconnect":require("./features/link-rel-preconnect"),"link-rel-prefetch":require("./features/link-rel-prefetch"),"link-rel-preload":require("./features/link-rel-preload"),"link-rel-prerender":require("./features/link-rel-prerender"),"loading-lazy-attr":require("./features/loading-lazy-attr"),"localecompare":require("./features/localecompare"),"magnetometer":require("./features/magnetometer"),"matchesselector":require("./features/matchesselector"),"matchmedia":require("./features/matchmedia"),"mathml":require("./features/mathml"),"maxlength":require("./features/maxlength"),"media-attribute":require("./features/media-attribute"),"media-fragments":require("./features/media-fragments"),"media-session-api":require("./features/media-session-api"),"mediacapture-fromelement":require("./features/mediacapture-fromelement"),"mediarecorder":require("./features/mediarecorder"),"mediasource":require("./features/mediasource"),"menu":require("./features/menu"),"meta-theme-color":require("./features/meta-theme-color"),"meter":require("./features/meter"),"midi":require("./features/midi"),"minmaxwh":require("./features/minmaxwh"),"mp3":require("./features/mp3"),"mpeg-dash":require("./features/mpeg-dash"),"mpeg4":require("./features/mpeg4"),"multibackgrounds":require("./features/multibackgrounds"),"multicolumn":require("./features/multicolumn"),"mutation-events":require("./features/mutation-events"),"mutationobserver":require("./features/mutationobserver"),"namevalue-storage":require("./features/namevalue-storage"),"native-filesystem-api":require("./features/native-filesystem-api"),"nav-timing":require("./features/nav-timing"),"navigator-language":require("./features/navigator-language"),"netinfo":require("./features/netinfo"),"notifications":require("./features/notifications"),"object-entries":require("./features/object-entries"),"object-fit":require("./features/object-fit"),"object-observe":require("./features/object-observe"),"object-values":require("./features/object-values"),"objectrtc":require("./features/objectrtc"),"offline-apps":require("./features/offline-apps"),"offscreencanvas":require("./features/offscreencanvas"),"ogg-vorbis":require("./features/ogg-vorbis"),"ogv":require("./features/ogv"),"ol-reversed":require("./features/ol-reversed"),"once-event-listener":require("./features/once-event-listener"),"online-status":require("./features/online-status"),"opus":require("./features/opus"),"orientation-sensor":require("./features/orientation-sensor"),"outline":require("./features/outline"),"pad-start-end":require("./features/pad-start-end"),"page-transition-events":require("./features/page-transition-events"),"pagevisibility":require("./features/pagevisibility"),"passive-event-listener":require("./features/passive-event-listener"),"passwordrules":require("./features/passwordrules"),"path2d":require("./features/path2d"),"payment-request":require("./features/payment-request"),"pdf-viewer":require("./features/pdf-viewer"),"permissions-api":require("./features/permissions-api"),"permissions-policy":require("./features/permissions-policy"),"picture-in-picture":require("./features/picture-in-picture"),"picture":require("./features/picture"),"ping":require("./features/ping"),"png-alpha":require("./features/png-alpha"),"pointer-events":require("./features/pointer-events"),"pointer":require("./features/pointer"),"pointerlock":require("./features/pointerlock"),"portals":require("./features/portals"),"prefers-color-scheme":require("./features/prefers-color-scheme"),"prefers-reduced-motion":require("./features/prefers-reduced-motion"),"private-class-fields":require("./features/private-class-fields"),"private-methods-and-accessors":require("./features/private-methods-and-accessors"),"progress":require("./features/progress"),"promise-finally":require("./features/promise-finally"),"promises":require("./features/promises"),"proximity":require("./features/proximity"),"proxy":require("./features/proxy"),"public-class-fields":require("./features/public-class-fields"),"publickeypinning":require("./features/publickeypinning"),"push-api":require("./features/push-api"),"queryselector":require("./features/queryselector"),"readonly-attr":require("./features/readonly-attr"),"referrer-policy":require("./features/referrer-policy"),"registerprotocolhandler":require("./features/registerprotocolhandler"),"rel-noopener":require("./features/rel-noopener"),"rel-noreferrer":require("./features/rel-noreferrer"),"rellist":require("./features/rellist"),"rem":require("./features/rem"),"requestanimationframe":require("./features/requestanimationframe"),"requestidlecallback":require("./features/requestidlecallback"),"resizeobserver":require("./features/resizeobserver"),"resource-timing":require("./features/resource-timing"),"rest-parameters":require("./features/rest-parameters"),"rtcpeerconnection":require("./features/rtcpeerconnection"),"ruby":require("./features/ruby"),"run-in":require("./features/run-in"),"same-site-cookie-attribute":require("./features/same-site-cookie-attribute"),"screen-orientation":require("./features/screen-orientation"),"script-async":require("./features/script-async"),"script-defer":require("./features/script-defer"),"scrollintoview":require("./features/scrollintoview"),"scrollintoviewifneeded":require("./features/scrollintoviewifneeded"),"sdch":require("./features/sdch"),"selection-api":require("./features/selection-api"),"server-timing":require("./features/server-timing"),"serviceworkers":require("./features/serviceworkers"),"setimmediate":require("./features/setimmediate"),"sha-2":require("./features/sha-2"),"shadowdom":require("./features/shadowdom"),"shadowdomv1":require("./features/shadowdomv1"),"sharedarraybuffer":require("./features/sharedarraybuffer"),"sharedworkers":require("./features/sharedworkers"),"sni":require("./features/sni"),"spdy":require("./features/spdy"),"speech-recognition":require("./features/speech-recognition"),"speech-synthesis":require("./features/speech-synthesis"),"spellcheck-attribute":require("./features/spellcheck-attribute"),"sql-storage":require("./features/sql-storage"),"srcset":require("./features/srcset"),"stream":require("./features/stream"),"streams":require("./features/streams"),"stricttransportsecurity":require("./features/stricttransportsecurity"),"style-scoped":require("./features/style-scoped"),"subresource-integrity":require("./features/subresource-integrity"),"svg-css":require("./features/svg-css"),"svg-filters":require("./features/svg-filters"),"svg-fonts":require("./features/svg-fonts"),"svg-fragment":require("./features/svg-fragment"),"svg-html":require("./features/svg-html"),"svg-html5":require("./features/svg-html5"),"svg-img":require("./features/svg-img"),"svg-smil":require("./features/svg-smil"),"svg":require("./features/svg"),"sxg":require("./features/sxg"),"tabindex-attr":require("./features/tabindex-attr"),"template-literals":require("./features/template-literals"),"template":require("./features/template"),"temporal":require("./features/temporal"),"testfeat":require("./features/testfeat"),"text-decoration":require("./features/text-decoration"),"text-emphasis":require("./features/text-emphasis"),"text-overflow":require("./features/text-overflow"),"text-size-adjust":require("./features/text-size-adjust"),"text-stroke":require("./features/text-stroke"),"text-underline-offset":require("./features/text-underline-offset"),"textcontent":require("./features/textcontent"),"textencoder":require("./features/textencoder"),"tls1-1":require("./features/tls1-1"),"tls1-2":require("./features/tls1-2"),"tls1-3":require("./features/tls1-3"),"token-binding":require("./features/token-binding"),"touch":require("./features/touch"),"transforms2d":require("./features/transforms2d"),"transforms3d":require("./features/transforms3d"),"trusted-types":require("./features/trusted-types"),"ttf":require("./features/ttf"),"typedarrays":require("./features/typedarrays"),"u2f":require("./features/u2f"),"unhandledrejection":require("./features/unhandledrejection"),"upgradeinsecurerequests":require("./features/upgradeinsecurerequests"),"url-scroll-to-text-fragment":require("./features/url-scroll-to-text-fragment"),"url":require("./features/url"),"urlsearchparams":require("./features/urlsearchparams"),"use-strict":require("./features/use-strict"),"user-select-none":require("./features/user-select-none"),"user-timing":require("./features/user-timing"),"variable-fonts":require("./features/variable-fonts"),"vector-effect":require("./features/vector-effect"),"vibration":require("./features/vibration"),"video":require("./features/video"),"videotracks":require("./features/videotracks"),"viewport-unit-variants":require("./features/viewport-unit-variants"),"viewport-units":require("./features/viewport-units"),"wai-aria":require("./features/wai-aria"),"wake-lock":require("./features/wake-lock"),"wasm":require("./features/wasm"),"wav":require("./features/wav"),"wbr-element":require("./features/wbr-element"),"web-animation":require("./features/web-animation"),"web-app-manifest":require("./features/web-app-manifest"),"web-bluetooth":require("./features/web-bluetooth"),"web-serial":require("./features/web-serial"),"web-share":require("./features/web-share"),"webauthn":require("./features/webauthn"),"webgl":require("./features/webgl"),"webgl2":require("./features/webgl2"),"webgpu":require("./features/webgpu"),"webhid":require("./features/webhid"),"webkit-user-drag":require("./features/webkit-user-drag"),"webm":require("./features/webm"),"webnfc":require("./features/webnfc"),"webp":require("./features/webp"),"websockets":require("./features/websockets"),"webusb":require("./features/webusb"),"webvr":require("./features/webvr"),"webvtt":require("./features/webvtt"),"webworkers":require("./features/webworkers"),"webxr":require("./features/webxr"),"will-change":require("./features/will-change"),"woff":require("./features/woff"),"woff2":require("./features/woff2"),"word-break":require("./features/word-break"),"wordwrap":require("./features/wordwrap"),"x-doc-messaging":require("./features/x-doc-messaging"),"x-frame-options":require("./features/x-frame-options"),"xhr2":require("./features/xhr2"),"xhtml":require("./features/xhtml"),"xhtmlsmil":require("./features/xhtmlsmil"),"xml-serializer":require("./features/xml-serializer")};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js
new file mode 100644
index 0000000000..64cea31fc8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j oB pB","132":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G","16":"A B"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"132":"S"},N:{"1":"A","2":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"132":"kC"}},B:6,C:"AAC audio file format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js
new file mode 100644
index 0000000000..b500aa5189
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D"},C:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB oB pB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB","130":"C cB"},F:{"1":"FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I YC ZC aC bC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"AbortController & AbortSignal"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js
new file mode 100644
index 0000000000..221145c36f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O","2":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC","132":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E","132":"A"},K:{"2":"A B C T cB jB","132":"dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"132":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js
new file mode 100644
index 0000000000..54bb7a19ac
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","194":"KB fB LB gB MB NB T OB PB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Accelerometer"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js
new file mode 100644
index 0000000000..8b4f76c42e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","130":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","257":"mB eB I g J oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"EventTarget.addEventListener()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
new file mode 100644
index 0000000000..d335722e27
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","2":"J E lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"G B C 2B 3B 4B 5B cB jB 6B dB","16":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"2":"T","16":"A B C cB jB dB"},L:{"16":"H"},M:{"16":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"16":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"16":"jC"},S:{"1":"kC"}},B:1,C:"Alternate stylesheet"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js
new file mode 100644
index 0000000000..36e27c106d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K","132":"L D M N O","322":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j oB pB","132":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB","194":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","322":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 2B 3B 4B 5B cB jB 6B dB","322":"WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"132":"kC"}},B:4,C:"Ambient Light Sensor"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js
new file mode 100644
index 0000000000..1db26a47ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB"},D:{"1":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"F G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB wB"},F:{"1":"8 9 B C AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"0 1 2 3 4 5 6 7 G D M N O h i j k l m n o p q r s t u v w x y z"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:7,C:"Animated PNG (APNG)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js
new file mode 100644
index 0000000000..1578e7c4c3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","16":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Array.prototype.findIndex"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js
new file mode 100644
index 0000000000..aed75f1e2b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","16":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Array.prototype.find"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js
new file mode 100644
index 0000000000..9624e61741
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB oB pB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB"},E:{"1":"C K L D dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB cB"},F:{"1":"IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"flat & flatMap array methods"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js
new file mode 100644
index 0000000000..c5cc9808f8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Array.prototype.includes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js
new file mode 100644
index 0000000000..d753c6bc63
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j oB pB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Arrow functions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js
new file mode 100644
index 0000000000..32f573e8a5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O","132":"P Q R U V W X Y Z a b c d e S f H","322":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j oB pB"},D:{"2":"I g J E F G A B C K L D M N O h i j k l m n o p","132":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","132":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","132":"T"},L:{"132":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I","132":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"1":"kC"}},B:6,C:"asm.js"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js
new file mode 100644
index 0000000000..b5b4123fe4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB oB pB","132":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","66":"KB fB LB gB"},E:{"1":"L D yB zB 0B 1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC","260":"D OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","260":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","260":"T"},L:{"1":"H"},M:{"132":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC","260":"cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Asynchronous Clipboard API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js
new file mode 100644
index 0000000000..f3b61ac94d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K","194":"L"},C:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB"},D:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB","514":"iB"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC","514":"FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Async functions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js
new file mode 100644
index 0000000000..cdad0caa8d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","2":"G 2B 3B","16":"4B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","16":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Base64 encoding and decoding"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js
new file mode 100644
index 0000000000..09492bbdd7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K","33":"L D M N O h i j k l m n o p q r s t u v"},E:{"1":"D zB 0B 1B","2":"I g tB hB uB","33":"J E F G A B C K L vB wB xB iB cB dB yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j"},G:{"1":"D PC","2":"hB 7B kB 8B","33":"F 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Web Audio API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js
new file mode 100644
index 0000000000..b2baae20b6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","132":"I g J E F G A B C K L D M N O h oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G","4":"2B 3B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","2":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Audio element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js
new file mode 100644
index 0000000000..d696fbe1a5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O","322":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB","194":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","322":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB"},F:{"2":"G B C D M N O h i j k l m n o p q r s t 2B 3B 4B 5B cB jB 6B dB","322":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"322":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:1,C:"Audio Tracks"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js
new file mode 100644
index 0000000000..ca8d806122
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:1,C:"Autofocus attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js
new file mode 100644
index 0000000000..4f390c0cf1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB","129":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"Auxclick"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js
new file mode 100644
index 0000000000..d1f35f2ca0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N","194":"O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB oB pB","66":"HB IB JB KB fB LB gB MB NB T","260":"OB","516":"PB"},D:{"1":"TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB","66":"QB RB SB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1090":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"eC fC gC hC","2":"I YC ZC aC bC cC iB dC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"AV1 video format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js
new file mode 100644
index 0000000000..6623cf3d6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB oB pB","194":"aB bB P Q R nB U V W X Y Z a b c d","257":"e S f H"},D:{"1":"W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"194":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"AVIF image format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js
new file mode 100644
index 0000000000..50d5bc0294
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","132":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C uB vB wB xB iB cB dB","132":"I K tB hB yB","2050":"L D zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","132":"G 2B 3B"},G:{"2":"hB 7B kB","772":"F 8B 9B AC BC CC DC EC FC GC HC IC JC","2050":"D KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC VC WC","132":"UC kB"},J:{"260":"E A"},K:{"1":"B C cB jB dB","2":"T","132":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"2":"I","1028":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1028":"jC"},S:{"1":"kC"}},B:4,C:"CSS background-attachment"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js
new file mode 100644
index 0000000000..719541d100
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O","33":"C K L P Q R U V W X Y Z a b c d e S f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"16":"tB hB","33":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"16":"hB 7B kB 8B","33":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"16":"eB RC SC TC","33":"I H UC kB VC WC"},J:{"33":"E A"},K:{"16":"A B C cB jB dB","33":"T"},L:{"33":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"33":"XC"},P:{"33":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"33":"jC"},S:{"1":"kC"}},B:7,C:"Background-clip: text"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js
new file mode 100644
index 0000000000..1b4075bebd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB","36":"pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","516":"I g J E F G A B C K L"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","772":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B","36":"3B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","4":"hB 7B kB 9B","516":"8B"},H:{"132":"QC"},I:{"1":"H VC WC","36":"RC","516":"eB I UC kB","548":"SC TC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 Background-image options"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js
new file mode 100644
index 0000000000..3fae151b29
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"background-position-x & background-position-y"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
new file mode 100644
index 0000000000..4cb0ad39a8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F lB","132":"G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G D M N O 2B 3B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:4,C:"CSS background-repeat round and space"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js
new file mode 100644
index 0000000000..5f2ee67826
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S oB pB","16":"f H"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Background Sync API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js
new file mode 100644
index 0000000000..bb4e801a05
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB","2":"mB eB I g J E F G EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","132":"0 1 2 3 4 M N O h i j k l m n o p q r s t u v w x y z","164":"A B C K L D"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y","66":"z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Battery Status API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js
new file mode 100644
index 0000000000..5fc1f8c8ff
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Beacon API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js
new file mode 100644
index 0000000000..259fe5c6c1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","16":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB"},D:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"2":"YC ZC aC bC cC iB dC eC fC gC hC","16":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:1,C:"Printing Events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js
new file mode 100644
index 0000000000..db4d72652d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T oB pB","194":"OB PB QB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB"},E:{"1":"L D zB 0B 1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB yB"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I YC ZC aC bC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"BigInt"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js
new file mode 100644
index 0000000000..21e4131be3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB","36":"J E F G A B C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E","36":"F G A B C K L D M N O h"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B C 2B 3B 4B 5B cB jB 6B"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"H","2":"RC SC TC","36":"eB I UC kB VC WC"},J:{"1":"A","2":"E"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Blob constructing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js
new file mode 100644
index 0000000000..6ebdff32b7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","129":"A B"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E","33":"F G A B C K L D M N O h i j k"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","33":"9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB RC SC TC","33":"I UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Blob URLs"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js
new file mode 100644
index 0000000000..99c6616fe9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","129":"C K"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","260":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB","804":"I g J E F G A B C K L oB pB"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","260":"DB EB FB GB HB","388":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB","1412":"D M N O h i j k l m n o p q r","1956":"I g J E F G A B C K L"},E:{"129":"A B C K L D xB iB cB dB yB zB 0B 1B","1412":"J E F G vB wB","1956":"I g tB hB uB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B 3B","260":"0 1 2 3 4","388":"D M N O h i j k l m n o p q r s t u v w x y z","1796":"4B 5B","1828":"B C cB jB 6B dB"},G:{"129":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","1412":"F 9B AC BC CC","1956":"hB 7B kB 8B"},H:{"1828":"QC"},I:{"1":"H","388":"VC WC","1956":"eB I RC SC TC UC kB"},J:{"1412":"A","1924":"E"},K:{"1":"T","2":"A","1828":"B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"388":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","260":"YC ZC","388":"I"},Q:{"260":"iC"},R:{"260":"jC"},S:{"260":"kC"}},B:4,C:"CSS3 Border images"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js
new file mode 100644
index 0000000000..2d6d755d5e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","257":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB","289":"eB oB pB","292":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"I"},E:{"1":"g E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","33":"I tB hB","129":"J uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"hB"},H:{"2":"QC"},I:{"1":"eB I H SC TC UC kB VC WC","33":"RC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"257":"kC"}},B:4,C:"CSS3 Border-radius (rounded corners)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js
new file mode 100644
index 0000000000..cd680d1134
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"1B","2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:1,C:"BroadcastChannel"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js
new file mode 100644
index 0000000000..649f7b9f8a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB","194":"BB","257":"CB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","513":"B C cB dB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB","194":"y z"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js
new file mode 100644
index 0000000000..67a209a4b6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","260":"G","516":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","33":"I g J E F G A B C K L D"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O","33":"h i j k l m n"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","33":"9B"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB","132":"VC WC"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"calc() as CSS unit value"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js
new file mode 100644
index 0000000000..61b5d2a7c9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Canvas blend modes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js
new file mode 100644
index 0000000000..bb04c50fa5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","8":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","8":"G 2B 3B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","8":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Text API for Canvas"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js
new file mode 100644
index 0000000000..68237b9e76
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","132":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","132":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"260":"QC"},I:{"1":"eB I H UC kB VC WC","132":"RC SC TC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Canvas (basic support)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js
new file mode 100644
index 0000000000..70b462c98c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","132":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"ch (character) unit"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
new file mode 100644
index 0000000000..a8f190cf22
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u","129":"0 1 2 3 4 5 6 7 8 9 v w x y z AB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC","16":"WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js
new file mode 100644
index 0000000000..b51d8b0e61
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n oB pB","194":"0 1 2 o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","2":"G 2B 3B","16":"4B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Channel messaging"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js
new file mode 100644
index 0000000000..cc640a72ae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"ChildNode.remove()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js
new file mode 100644
index 0000000000..12a49cd06c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"8":"J E F G lB","1924":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB oB","516":"m n","772":"I g J E F G A B C K L D M N O h i j k l pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I g J E","516":"m n o p","772":"l","900":"F G A B C K L D M N O h i j k"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","8":"I g tB hB","900":"J uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","8":"G B 2B 3B 4B 5B cB","900":"C jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB","900":"8B 9B"},H:{"900":"QC"},I:{"1":"H VC WC","8":"RC SC TC","900":"eB I UC kB"},J:{"1":"A","900":"E"},K:{"1":"T","8":"A B","900":"C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"900":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"classList (DOMTokenList)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
new file mode 100644
index 0000000000..7d7713335f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js
new file mode 100644
index 0000000000..88eb6bda28
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2436":"J E F G A B lB"},B:{"260":"N O","2436":"C K L D M","8196":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j oB pB","772":"0 1 2 k l m n o p q r s t u v w x y z","4100":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"I g J E F G A B C","2564":"0 1 2 3 4 K L D M N O h i j k l m n o p q r s t u v w x y z","8196":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","10244":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB"},E:{"1":"C K L D dB yB zB 0B 1B","16":"tB hB","2308":"A B iB cB","2820":"I g J E F G uB vB wB xB"},F:{"2":"G B 2B 3B 4B 5B cB jB 6B","16":"C","516":"dB","2564":"D M N O h i j k l m n o p q r","8196":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","10244":"0 1 2 3 4 5 6 s t u v w x y z"},G:{"1":"D IC JC KC LC MC NC OC PC","2":"hB 7B kB","2820":"F 8B 9B AC BC CC DC EC FC GC HC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","260":"H","2308":"VC WC"},J:{"2":"E","2308":"A"},K:{"2":"A B C cB jB","16":"dB","260":"T"},L:{"8196":"H"},M:{"1028":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2052":"YC ZC","2308":"I","8196":"aC bC cC iB dC eC fC gC hC"},Q:{"10244":"iC"},R:{"2052":"jC"},S:{"4100":"kC"}},B:5,C:"Synchronous Clipboard API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js
new file mode 100644
index 0000000000..e6eac4b64e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","257":"G A B"},B:{"1":"C K L D M N O","513":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB","513":"UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"L D zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","129":"B C K cB dB yB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 2B 3B 4B 5B cB jB 6B dB","513":"KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"16":"A B"},O:{"1":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"COLR/CPAL(v0) Font Formats"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js
new file mode 100644
index 0000000000..40ed21e9eb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","132":"D M N O h i j k l m n o p q r"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","16":"I g J tB hB","132":"E F G vB wB xB","260":"uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","16":"G B 2B 3B 4B 5B cB jB","132":"D M"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB","132":"F 7B kB 8B 9B AC BC CC DC"},H:{"1":"QC"},I:{"1":"H VC WC","16":"RC SC","132":"eB I TC UC kB"},J:{"132":"E A"},K:{"1":"C T dB","16":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Node.compareDocumentPosition()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js
new file mode 100644
index 0000000000..74a8382826
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E lB","132":"F G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G 2B 3B 4B 5B"},G:{"1":"hB 7B kB 8B","513":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"4097":"QC"},I:{"1025":"eB I H RC SC TC UC kB VC WC"},J:{"258":"E A"},K:{"2":"A","258":"B C cB jB dB","1025":"T"},L:{"1025":"H"},M:{"2049":"S"},N:{"258":"A B"},O:{"258":"XC"},P:{"1025":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1025":"jC"},S:{"1":"kC"}},B:1,C:"Basic console logging functions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js
new file mode 100644
index 0000000000..7dc627b174
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G 2B 3B 4B 5B","16":"B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"T","16":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"console.time and console.timeEnd"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js
new file mode 100644
index 0000000000..f76202faab
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","2052":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"mB eB I g J E F G A B C oB pB","260":"K L D M N O h i j k l m n o p q r s t u v w x"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","260":"I g J E F G A B C K L D M N O h i","772":"0 1 2 j k l m n o p q r s t u v w x y z","1028":"3 4 5 6 7 8 9 AB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","260":"I g A tB hB iB","772":"J E F G uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B","132":"B 3B 4B 5B cB jB","644":"C 6B dB","772":"D M N O h i j k l m n o p","1028":"q r s t u v w x"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","260":"hB 7B kB EC FC","772":"F 8B 9B AC BC CC DC"},H:{"644":"QC"},I:{"1":"H","16":"RC SC","260":"TC","772":"eB I UC kB VC WC"},J:{"772":"E A"},K:{"1":"T","132":"A B cB jB","644":"C dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","1028":"I"},Q:{"1":"iC"},R:{"1028":"jC"},S:{"1":"kC"}},B:6,C:"const"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js
new file mode 100644
index 0000000000..baf1f0f9d8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","900":"A B"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","388":"L D M","900":"C K"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","260":"BB CB","388":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB","900":"I g J E F G A B C K L D M N O h i j k l m n o p q"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","388":"0 1 n o p q r s t u v w x y z","900":"D M N O h i j k l m"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","16":"I g tB hB","388":"F G wB xB","900":"J E uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G B 2B 3B 4B 5B cB jB","388":"D M N O h i j k l m n o","900":"C 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB","388":"F AC BC CC DC","900":"8B 9B"},H:{"2":"QC"},I:{"1":"H","16":"eB RC SC TC","388":"VC WC","900":"I UC kB"},J:{"16":"E","388":"A"},K:{"1":"T","16":"A B cB jB","900":"C dB"},L:{"1":"H"},M:{"1":"S"},N:{"900":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"388":"kC"}},B:1,C:"Constraint Validation API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js
new file mode 100644
index 0000000000..924c8e8e03
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB","4":"eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"contenteditable attribute (basic support)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
new file mode 100644
index 0000000000..2381648a4b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","129":"I g J E F G A B C K L D M N O h i j k"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K","257":"L D M N O h i j k l m"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB","257":"J vB","260":"uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","257":"9B","260":"8B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E","257":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"257":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Content Security Policy 1.0"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
new file mode 100644
index 0000000000..63ab799d09
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L","32772":"D M N O"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB","132":"t u v w","260":"x","516":"0 1 2 3 4 5 6 y z","8196":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x","1028":"0 y z","2052":"1"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k 2B 3B 4B 5B cB jB 6B dB","1028":"l m n","2052":"o"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"4100":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"8196":"kC"}},B:2,C:"Content Security Policy Level 2"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js
new file mode 100644
index 0000000000..eaf697f62c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"Y Z a b c d e S f H","2":"C K L D M N O","194":"P Q R U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB","194":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB 2B 3B 4B 5B cB jB 6B dB","194":"DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Cookie Store API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js
new file mode 100644
index 0000000000..b5fe7a44e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E lB","132":"A","260":"F G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB","1025":"gB MB NB T OB PB QB RB SB TB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C"},E:{"2":"tB hB","513":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","644":"I g uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B"},G:{"513":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","644":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"H VC WC","132":"eB I RC SC TC UC kB"},J:{"1":"A","132":"E"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","132":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Cross-Origin Resource Sharing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js
new file mode 100644
index 0000000000..5fabcaf0dd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","3076":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB","132":"CB DB","260":"EB FB","516":"GB HB IB JB KB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y 2B 3B 4B 5B cB jB 6B dB","132":"0 z","260":"1 2","516":"3 4 5 6 7"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"3076":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","16":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"3076":"kC"}},B:1,C:"createImageBitmap"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js
new file mode 100644
index 0000000000..2935333809
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","66":"AB BB CB","129":"DB EB FB GB HB IB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Credential Management API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js
new file mode 100644
index 0000000000..a350db595e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F G A","164":"B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","513":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t oB pB","66":"u v"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y"},E:{"1":"B C K L D cB dB yB zB 0B 1B","8":"I g J E tB hB uB vB","289":"F G A wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","8":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB 8B 9B AC","289":"F BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","8":"eB I RC SC TC UC kB VC WC"},J:{"8":"E A"},K:{"1":"T","8":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A","164":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Web Cryptography"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js
new file mode 100644
index 0000000000..b601fbbf75
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H WC","2":"eB I RC SC TC UC kB VC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS all property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js
new file mode 100644
index 0000000000..06f7983584
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I oB pB","33":"g J E F G A B C K L D"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"tB hB","33":"J E F uB vB wB","292":"I g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B","33":"C D M N O h i j k l m n o p q r"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"F 9B AC BC","164":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"H","33":"I UC kB VC WC","164":"eB RC SC TC"},J:{"33":"E A"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS Animation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js
new file mode 100644
index 0000000000..571df9cd6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB","33":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB oB pB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","16":"I g J tB hB uB","33":"E F vB wB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B","33":"F 9B AC BC"},H:{"2":"QC"},I:{"1":"H","16":"eB I RC SC TC UC kB","33":"VC WC"},J:{"16":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"33":"XC"},P:{"1":"cC iB dC eC fC gC hC","16":"I","33":"YC ZC aC bC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"33":"kC"}},B:5,C:"CSS :any-link selector"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js
new file mode 100644
index 0000000000..dc48cea53e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"V W X Y Z a b c d e S f H","33":"U","164":"P Q R","388":"C K L D M N O"},C:{"1":"Q R nB U V W X Y Z a b c d e S f H","164":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","676":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w oB pB"},D:{"1":"V W X Y Z a b c d e S f H qB rB sB","33":"U","164":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},E:{"1":"1B","164":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B"},F:{"1":"WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"TB UB VB","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB"},G:{"164":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","164":"eB I RC SC TC UC kB VC WC"},J:{"164":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A","388":"B"},O:{"164":"XC"},P:{"164":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"164":"iC"},R:{"164":"jC"},S:{"164":"kC"}},B:5,C:"CSS Appearance"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-apply-rule.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-apply-rule.js
new file mode 100644
index 0000000000..85ec5c2548
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-apply-rule.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","194":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","194":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"194":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I","194":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"194":"jC"},S:{"2":"kC"}},B:7,C:"CSS @apply rule"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js
new file mode 100644
index 0000000000..c200f876c6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b","132":"c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB","132":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b","132":"c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB 2B 3B 4B 5B cB jB 6B dB","132":"aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","132":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","132":"T"},L:{"132":"H"},M:{"132":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"132":"kC"}},B:4,C:"CSS Counter Styles"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js
new file mode 100644
index 0000000000..045e5e18b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js
@@ -0,0 +1 @@
+module.exports={A:{D:{"1":"H qB rB","33":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f"},L:{"1":"H qB rB","33":"0 1 2 3 4 5 6 7 8 9 O n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f"},B:{"1":"H qB rB","2":"C K L D M N O","33":"P Q R U V W X Y Z a b c d e S f"},C:{"1":"X Y Z a b c d e S f H qB rB","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W oB pB"},M:{"1":"X Y Z a b c d e S f H qB rB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB P Q R nB U V W"},A:{"2":"mB eB I g J E F G A B lB"},F:{"1":"nB U","2":"mB eB I g J E F G A B C oB pB uB wB xB cC iB 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},K:{"33":"3 4 5 6 7 8 9 L D M O h i j k m n o p q r s u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB","34":"B C iB cB jB dB"},E:{"33":"eB I g J E F G A B C K L D tB uB vB xB iB cB dB yB zB 0B","34":"mB"},G:{"33":"mB eB I g J E F G A B C K L D hB vB DC FC 0B"},P:{"33":"RC hB bC cC eC dB fC LC gC hC"},I:{"1":"H qB rB","33":"0 1 2 3 4 5 6 7 8 9 mB eB I z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f SC VC"}},B:6,C:":autofill CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
new file mode 100644
index 0000000000..f8cd364c89
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M","257":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB oB pB","578":"TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB"},E:{"2":"I g J E F tB hB uB vB wB","33":"G A B C K L D xB iB cB dB yB zB 0B 1B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v 2B 3B 4B 5B cB jB 6B dB","194":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"F hB 7B kB 8B 9B AC BC","33":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"578":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"eC fC gC hC","2":"I","194":"YC ZC aC bC cC iB dC"},Q:{"194":"iC"},R:{"194":"jC"},S:{"2":"kC"}},B:7,C:"CSS Backdrop Filter"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js
new file mode 100644
index 0000000000..ac065cea48
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS background-position edge offsets"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
new file mode 100644
index 0000000000..42a344910e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r oB pB"},D:{"1":"0 1 2 3 4 5 6 7 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w","260":"8"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB","132":"F G A wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j 2B 3B 4B 5B cB jB 6B dB","260":"v"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","132":"F BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS background-blend-mode"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
new file mode 100644
index 0000000000..9f1c5ac1f7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","164":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t oB pB"},D:{"2":"I g J E F G A B C K L D M N O h i j","164":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J tB hB uB","164":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G 2B 3B 4B 5B","129":"B C cB jB 6B dB","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B kB 8B 9B","164":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"132":"QC"},I:{"2":"eB I RC SC TC UC kB","164":"H VC WC"},J:{"2":"E","164":"A"},K:{"2":"A","129":"B C cB jB dB","164":"T"},L:{"164":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"164":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"164":"iC"},R:{"164":"jC"},S:{"1":"kC"}},B:5,C:"CSS box-decoration-break"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js
new file mode 100644
index 0000000000..3a1289d069
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","33":"oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"I g J E F G"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","33":"g","164":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"7B kB","164":"hB"},H:{"2":"QC"},I:{"1":"I H UC kB VC WC","164":"eB RC SC TC"},J:{"1":"A","33":"E"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 Box-shadow"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js
new file mode 100644
index 0000000000..932b644ce3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"tB hB","33":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j k l m n o p q r s t u v w"},G:{"33":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"H","33":"eB I RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"YC ZC aC bC cC iB dC eC fC gC hC","33":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS Canvas Drawings"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js
new file mode 100644
index 0000000000..deb58ab6a3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB"},D:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"CSS caret-color"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js
new file mode 100644
index 0000000000..62c39a5402
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f","322":"H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e oB pB","194":"S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f","322":"H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B","578":"1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Cascade Layers"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js
new file mode 100644
index 0000000000..0c6d1c2469
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:5,C:"Case-insensitive CSS attribute selectors"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js
new file mode 100644
index 0000000000..45657f69a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N","260":"P Q R U V W X Y Z a b c d e S f H","3138":"O"},C:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","132":"0 1 2 3 4 5 6 7 8 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","644":"9 AB BB CB DB EB FB"},D:{"2":"I g J E F G A B C K L D M N O h i j k l","260":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","292":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"2":"I g J tB hB uB vB","292":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","260":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","292":"0 1 2 3 D M N O h i j k l m n o p q r s t u v w x y z"},G:{"2":"hB 7B kB 8B 9B","292":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","260":"H","292":"VC WC"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","260":"T"},L:{"260":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"292":"XC"},P:{"292":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"292":"iC"},R:{"260":"jC"},S:{"644":"kC"}},B:4,C:"CSS clip-path property (for HTML)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js
new file mode 100644
index 0000000000..cbefaa3559
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","33":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"16":"I g J E F G A B C K L D M N O","33":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g tB hB uB","33":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"16":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"16":"eB I RC SC TC UC kB VC WC","33":"H"},J:{"16":"E A"},K:{"2":"A B C cB jB dB","33":"T"},L:{"16":"H"},M:{"1":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"16":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"16":"jC"},S:{"1":"kC"}},B:5,C:"CSS color-adjust"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js
new file mode 100644
index 0000000000..9d877318b4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"D 0B 1B","2":"I g J E F G A tB hB uB vB wB xB","132":"B C K L iB cB dB yB zB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D","2":"F hB 7B kB 8B 9B AC BC CC DC EC","132":"FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS color() function"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js
new file mode 100644
index 0000000000..43245ee778
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB oB pB","578":"YB ZB aB bB P Q R nB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","194":"fB LB gB MB NB T OB PB QB RB"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"1":"D JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Conical Gradients"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js
new file mode 100644
index 0000000000..7421427292
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d","194":"e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c","194":"e S f H qB rB sB","450":"d"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB 2B 3B 4B 5B cB jB 6B dB","194":"P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS Container Queries"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js
new file mode 100644
index 0000000000..68a921deba
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","194":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB"},D:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","66":"DB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","66":"0 1"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:2,C:"CSS Containment"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js
new file mode 100644
index 0000000000..1166af64d1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"W X Y Z a b c d e S f H","2":"C K L D M N O P Q R U V"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS content-visibility"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js
new file mode 100644
index 0000000000..7bbc6b7de7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","2":"J E lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS Counters"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js
new file mode 100644
index 0000000000..cae7cb1c26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J lB","2340":"E F G A B"},B:{"2":"C K L D M N O","1025":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"e S f H","2":"mB eB oB","513":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d","545":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T pB"},D:{"2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","1025":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g tB hB uB","164":"J","4644":"E F G vB wB xB"},F:{"2":"G B D M N O h i j k l m n o p 2B 3B 4B 5B cB jB","545":"C 6B dB","1025":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","4260":"8B 9B","4644":"F AC BC CC DC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","1025":"H"},J:{"2":"E","4260":"A"},K:{"2":"A B cB jB","545":"C dB","1025":"T"},L:{"1025":"H"},M:{"545":"S"},N:{"2340":"A B"},O:{"1":"XC"},P:{"1025":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1025":"iC"},R:{"1025":"jC"},S:{"4097":"kC"}},B:7,C:"Crisp edges/pixelated images"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js
new file mode 100644
index 0000000000..b1327eb2d5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","33":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"I g J E F G A B C K L D M","33":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g tB hB","33":"J E F G uB vB wB xB"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","33":"F 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","33":"H VC WC"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","33":"T"},L:{"33":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"33":"XC"},P:{"33":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"33":"jC"},S:{"2":"kC"}},B:4,C:"CSS Cross-Fade Function"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js
new file mode 100644
index 0000000000..d3cc7d5712
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB eB oB pB"},D:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","16":"I g tB hB","132":"J E F G A uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G B 2B 3B 4B 5B cB jB","132":"D M N O h i j k l m n o p q r s t u v w x y z","260":"C 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B 9B","132":"F AC BC CC DC EC"},H:{"260":"QC"},I:{"1":"H","16":"eB RC SC TC","132":"I UC kB VC WC"},J:{"16":"E","132":"A"},K:{"1":"T","16":"A B C cB jB","260":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"132":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","132":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:7,C:":default CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
new file mode 100644
index 0000000000..7f88fc9b7b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O Q R U V W X Y Z a b c d e S f H","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"B","2":"I g J E F G A C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Explicit descendant combinator >>"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
new file mode 100644
index 0000000000..2fed37a9a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","164":"A B"},B:{"66":"P Q R U V W X Y Z a b c d e S f H","164":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"I g J E F G A B C K L D M N O h i j k l m n o p q","66":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","66":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"292":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A T","292":"B C cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"164":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"66":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Device Adaptation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
new file mode 100644
index 0000000000..37ab2b8554
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M oB pB","33":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b","194":"c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"33":"kC"}},B:5,C:":dir() CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js
new file mode 100644
index 0000000000..0be2cb11cb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"a b c d e S f H","2":"C K L D M N O","260":"P Q R U V W X Y Z"},C:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y oB pB","260":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB"},D:{"1":"a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","194":"KB fB LB gB MB NB T","260":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z"},E:{"2":"I g J E F G A B tB hB uB vB wB xB iB","260":"L D yB zB 0B 1B","772":"C K cB dB"},F:{"1":"ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB 2B 3B 4B 5B cB jB 6B dB","260":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC","260":"D NC OC PC","772":"HC IC JC KC LC MC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"hC","2":"I YC ZC aC bC","260":"cC iB dC eC fC gC"},Q:{"260":"iC"},R:{"2":"jC"},S:{"260":"kC"}},B:5,C:"CSS display: contents"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js
new file mode 100644
index 0000000000..82b6cfb836
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","164":"mB eB oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"33":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"33":"kC"}},B:5,C:"CSS element() function"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js
new file mode 100644
index 0000000000..6b3bc94ef0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T oB pB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","132":"B"},F:{"1":"IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","132":"GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS Environment Variables env()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js
new file mode 100644
index 0000000000..7d9e9fdc65
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","33":"A B"},B:{"2":"P Q R U V W X Y Z a b c d e S f H","33":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"33":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Exclusions Level 1"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js
new file mode 100644
index 0000000000..824feb1807
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B C 2B 3B 4B 5B cB jB 6B"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS Feature Queries"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js
new file mode 100644
index 0000000000..0d497a2abb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB","33":"G"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC","33":"CC DC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS filter() function"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js
new file mode 100644
index 0000000000..d42776a580
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","1028":"K L D M N O","1346":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB","196":"w","516":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v pB"},D:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N","33":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","33":"J E F G vB wB"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 D M N O h i j k l m n o p q r s t u v w x y z"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","33":"F 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB","33":"VC WC"},J:{"2":"E","33":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","33":"I YC ZC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS Filter Effects"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js
new file mode 100644
index 0000000000..3be31c11ea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","16":"lB","516":"F","1540":"J E"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","132":"eB","260":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"g J E F","132":"I"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"g tB","132":"I hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","16":"G 2B","260":"B 3B 4B 5B cB jB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"1":"QC"},I:{"1":"eB I H UC kB VC WC","16":"RC SC","132":"TC"},J:{"1":"E A"},K:{"1":"C T dB","260":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"::first-letter CSS pseudo-element selector"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js
new file mode 100644
index 0000000000..3fa416fd44
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","132":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS first-line pseudo-element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js
new file mode 100644
index 0000000000..554731fbe9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"E F G A B","2":"lB","8":"J"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB iB cB dB yB zB 0B 1B","1025":"xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","132":"8B 9B AC"},H:{"2":"QC"},I:{"1":"eB H VC WC","260":"RC SC TC","513":"I UC kB"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS position:fixed"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js
new file mode 100644
index 0000000000..8ef19a48bf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"X Y Z a b c d e S f H","2":"C K L D M N O","328":"P Q R U V W"},C:{"1":"W X Y Z a b c d e S f H","2":"mB eB oB pB","161":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V"},D:{"1":"X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB","328":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W"},E:{"2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB zB","578":"D 0B 1B"},F:{"1":"VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB 2B 3B 4B 5B cB jB 6B dB","328":"PB QB RB SB TB UB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","578":"D"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"161":"kC"}},B:7,C:":focus-visible CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js
new file mode 100644
index 0000000000..86fa60e56a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB"},D:{"1":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","194":"fB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"8"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"16":"jC"},S:{"2":"kC"}},B:7,C:":focus-within CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
new file mode 100644
index 0000000000..fa9838137b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","194":"8 9 AB BB CB DB EB FB GB HB IB JB"},D:{"1":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB","66":"BB CB DB EB FB GB HB IB JB KB fB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB","66":"0 1 2 3 4 5 6 7 8 y z"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I","66":"YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:5,C:"CSS font-display"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js
new file mode 100644
index 0000000000..f88552f004
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F oB pB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS font-stretch"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js
new file mode 100644
index 0000000000..c94b5617d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E lB","132":"F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS Generated content for pseudo-elements"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js
new file mode 100644
index 0000000000..e7a52ccb8d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB","260":"M N O h i j k l m n o p q r s t u v w x","292":"I g J E F G A B C K L D pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"A B C K L D M N O h i j k l m n","548":"I g J E F G"},E:{"2":"tB hB","260":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","292":"J uB","804":"I g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B","33":"C 6B","164":"cB jB"},G:{"260":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","292":"8B 9B","804":"hB 7B kB"},H:{"2":"QC"},I:{"1":"H VC WC","33":"I UC kB","548":"eB RC SC TC"},J:{"1":"A","548":"E"},K:{"1":"T dB","2":"A B","33":"C","164":"cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS Gradients"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js
new file mode 100644
index 0000000000..f3cce9f713
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","8":"G","292":"A B"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","292":"C K L D"},C:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O oB pB","8":"0 1 h i j k l m n o p q r s t u v w x y z","584":"2 3 4 5 6 7 8 9 AB BB CB DB","1025":"EB FB"},D:{"1":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m","8":"n o p q","200":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB","1025":"JB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g tB hB uB","8":"J E F G A vB wB xB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB","200":"0 1 2 3 4 5 q r s t u v w x y z"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","8":"F 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC","8":"kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"292":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"YC","8":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:4,C:"CSS Grid Layout (level 1)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
new file mode 100644
index 0000000000..48646fab03
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS hanging-punctuation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js
new file mode 100644
index 0000000000..3f64e6f400
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:":has() CSS relational pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js
new file mode 100644
index 0000000000..bd28ace5ba
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphenate.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"16":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","16":"C K L D M N O"},C:{"16":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"16":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"16":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"16":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"16":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"16":"A B C T cB jB dB"},L:{"16":"H"},M:{"16":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"16":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"16":"iC"},R:{"16":"jC"},S:{"16":"kC"}},B:5,C:"CSS4 Hyphenation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js
new file mode 100644
index 0000000000..a0778fd715
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","33":"A B"},B:{"33":"C K L D M N O","132":"P Q R U V W X Y","260":"Z a b c d e S f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB","33":"0 1 2 3 4 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},D:{"1":"Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","132":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y"},E:{"2":"I g tB hB","33":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","132":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B","33":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"4":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I","132":"YC"},Q:{"2":"iC"},R:{"132":"jC"},S:{"1":"kC"}},B:5,C:"CSS Hyphenation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js
new file mode 100644
index 0000000000..aaf4cebe06
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"a b c d e S f H","2":"C K L D M N O P Q","257":"R U V W X Y Z"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n oB pB"},D:{"1":"a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q","257":"R U V W X Y Z"},E:{"1":"L D yB zB 0B 1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB"},F:{"1":"RB SB TB UB VB","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB 2B 3B 4B 5B cB jB 6B dB","257":"WB XB YB ZB aB bB P Q R"},G:{"1":"D OC PC","132":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"fC gC hC","2":"I YC ZC aC bC cC iB dC eC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 image-orientation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js
new file mode 100644
index 0000000000..f7d5dc9e41
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","164":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W oB pB","66":"X Y","257":"a b c d e S f H","772":"Z"},D:{"2":"I g J E F G A B C K L D M N O h i","164":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g tB hB uB","132":"A B C K iB cB dB yB","164":"J E F G vB wB xB","516":"L D zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B kB 8B","132":"EC FC GC HC IC JC KC LC MC NC","164":"F 9B AC BC CC DC","516":"D OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","164":"H VC WC"},J:{"2":"E","164":"A"},K:{"2":"A B C cB jB dB","164":"T"},L:{"164":"H"},M:{"257":"S"},N:{"2":"A B"},O:{"164":"XC"},P:{"164":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"164":"iC"},R:{"164":"jC"},S:{"2":"kC"}},B:5,C:"CSS image-set"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
new file mode 100644
index 0000000000..d22f8470f9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C","260":"K L D M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB","516":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB"},D:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I","16":"g J E F G A B C K L","260":"EB","772":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g","772":"J E F G A uB vB wB xB"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G 2B","260":"1 B C 3B 4B 5B cB jB 6B dB","772":"0 D M N O h i j k l m n o p q r s t u v w x y z"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","772":"F 8B 9B AC BC CC DC EC"},H:{"132":"QC"},I:{"1":"H","2":"eB RC SC TC","260":"I UC kB VC WC"},J:{"2":"E","260":"A"},K:{"1":"T","260":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","260":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"516":"kC"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
new file mode 100644
index 0000000000..b08dba5f3d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","132":"A B","388":"G"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB eB oB pB","132":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","388":"I g"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","132":"0 D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","16":"I g J tB hB","132":"E F G A vB wB xB","388":"uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G B 2B 3B 4B 5B cB jB","132":"D M N O h i j k l m n","516":"C 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B 9B","132":"F AC BC CC DC EC"},H:{"516":"QC"},I:{"1":"H","16":"eB RC SC TC WC","132":"VC","388":"I UC kB"},J:{"16":"E","132":"A"},K:{"1":"T","16":"A B C cB jB","516":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"132":"kC"}},B:7,C:":indeterminate CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js
new file mode 100644
index 0000000000..f628ed5498
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F tB hB uB vB wB","4":"G","164":"A B C K L D xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC","164":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Initial Letter"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js
new file mode 100644
index 0000000000..0dff251a28
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"I g J E F G A B C K L D M N O oB pB","164":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS initial value"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js
new file mode 100644
index 0000000000..6af97ae53c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"D 0B 1B","2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB zB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"LCH and Lab color values"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js
new file mode 100644
index 0000000000..df60da64e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","16":"lB","132":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l m n o p q r"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","16":"tB","132":"I g J hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G 2B","132":"B C D M 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"2":"QC"},I:{"1":"H VC WC","16":"RC SC","132":"eB I TC UC kB"},J:{"132":"E A"},K:{"1":"T","132":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"letter-spacing CSS property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js
new file mode 100644
index 0000000000..aa606c61ff
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M","33":"P Q R U V W X Y Z a b c d e S f H","129":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB oB pB","33":"RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"16":"I g J E F G A B C K","33":"0 1 2 3 4 5 6 7 8 9 L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I tB hB","33":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B kB","33":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"16":"RC SC","33":"eB I H TC UC kB VC WC"},J:{"33":"E A"},K:{"2":"A B C cB jB dB","33":"T"},L:{"33":"H"},M:{"33":"S"},N:{"2":"A B"},O:{"33":"XC"},P:{"33":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"33":"jC"},S:{"2":"kC"}},B:5,C:"CSS line-clamp"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js
new file mode 100644
index 0000000000..2316fdb085
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"a b c d e S f H","2":"C K L D M N O","2052":"Y Z","3588":"P Q R U V W X"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB","164":"0 1 2 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"a b c d e S f H qB rB sB","292":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB","2052":"Y Z","3588":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X"},E:{"1":"D 0B 1B","292":"I g J E F G A B C tB hB uB vB wB xB iB cB","2052":"zB","3588":"K L dB yB"},F:{"1":"ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","292":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB","2052":"XB YB","3588":"IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB"},G:{"1":"D","292":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC","2052":"PC","3588":"JC KC LC MC NC OC"},H:{"2":"QC"},I:{"1":"H","292":"eB I RC SC TC UC kB VC WC"},J:{"292":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"292":"XC"},P:{"1":"hC","292":"I YC ZC aC bC cC","3588":"iB dC eC fC gC"},Q:{"3588":"iC"},R:{"3588":"jC"},S:{"3588":"kC"}},B:5,C:"CSS Logical Properties"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
new file mode 100644
index 0000000000..905074bffa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"X Y Z a b c d e S f H","2":"C K L D M N O P Q R U V W"},C:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB oB pB"},D:{"1":"X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W"},E:{"1":"1B","2":"I g J E F G A B tB hB uB vB wB xB iB","129":"C K L D cB dB yB zB 0B"},F:{"1":"VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS ::marker pseudo-element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js
new file mode 100644
index 0000000000..ccaaf50af8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M","164":"P Q R U V W X Y Z a b c d e S f H","3138":"N","12292":"O"},C:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","260":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB"},D:{"164":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"tB hB","164":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"164":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"164":"H VC WC","676":"eB I RC SC TC UC kB"},J:{"164":"E A"},K:{"2":"A B C cB jB dB","164":"T"},L:{"164":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"164":"XC"},P:{"164":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"164":"iC"},R:{"164":"jC"},S:{"260":"kC"}},B:4,C:"CSS Masks"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
new file mode 100644
index 0000000000..44e324b4ac
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"Z a b c d e S f H","2":"C K L D M N O","1220":"P Q R U V W X Y"},C:{"1":"bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB eB oB pB","548":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB"},D:{"1":"Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T","196":"OB PB QB","1220":"RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y"},E:{"1":"L D zB 0B 1B","2":"I tB hB","16":"g","164":"J E F uB vB wB","260":"G A B C K xB iB cB dB yB"},F:{"1":"YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB","196":"EB FB GB","1220":"HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB"},G:{"1":"D OC PC","16":"hB 7B kB 8B 9B","164":"F AC BC","260":"CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"1":"H","16":"eB RC SC TC","164":"I UC kB VC WC"},J:{"16":"E","164":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"164":"XC"},P:{"1":"hC","164":"I YC ZC aC bC cC iB dC eC fC gC"},Q:{"1220":"iC"},R:{"164":"jC"},S:{"548":"kC"}},B:5,C:":is() CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js
new file mode 100644
index 0000000000..06e543c9c7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB oB pB"},D:{"1":"P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},E:{"1":"L D yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB","132":"C K cB dB"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC","132":"HC IC JC KC LC MC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"eC fC gC hC","2":"I YC ZC aC bC cC iB dC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS math functions min(), max() and clamp()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js
new file mode 100644
index 0000000000..da47e218e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB oB pB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"Media Queries: interaction media features"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js
new file mode 100644
index 0000000000..65ca4184bc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","132":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","260":"I g J E F G A B C K L D oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","548":"I g J E F G A B C K L D M N O h i j k l m n o p q"},E:{"2":"tB hB","548":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G","548":"B C 2B 3B 4B 5B cB jB 6B"},G:{"16":"hB","548":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"132":"QC"},I:{"1":"H VC WC","16":"RC SC","548":"eB I TC UC kB"},J:{"548":"E A"},K:{"1":"T dB","548":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Media Queries: resolution feature"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js
new file mode 100644
index 0000000000..5d1498eab1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"16":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB","16":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H","16":"qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Media Queries: scripting media feature"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js
new file mode 100644
index 0000000000..494e19987f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"8":"J E F lB","129":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","129":"I g J E F G A B C K L D M N O h i j k l m n"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","129":"I g J uB","388":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","129":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"1":"H VC WC","129":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"129":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS3 Media Queries"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js
new file mode 100644
index 0000000000..72c6e830df
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t oB pB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q","194":"0 1 2 r s t u v w x y z"},E:{"2":"I g J E tB hB uB vB","260":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"hB 7B kB 8B 9B AC","260":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Blending of HTML/SVG elements"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js
new file mode 100644
index 0000000000..e365665dec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB oB pB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"5 6 7"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB","194":"s t u"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"CSS Motion Path"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js
new file mode 100644
index 0000000000..0bbbf8b56a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS namespaces"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js
new file mode 100644
index 0000000000..c449706585
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Nesting"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js
new file mode 100644
index 0000000000..92bf4d5a39
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"Z a b c d e S f H","2":"C K L D M N O Q R U V W X Y","16":"P"},C:{"1":"V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U oB pB"},D:{"1":"Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"hC","2":"I YC ZC aC bC cC iB dC eC fC gC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"selector list argument of :not()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js
new file mode 100644
index 0000000000..e3a2998a21
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js
new file mode 100644
index 0000000000..4f29b16adb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","4":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS3 Opacity"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
new file mode 100644
index 0000000000..a403cb7376
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G 2B","132":"B C 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"132":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T","132":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:":optional CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
new file mode 100644
index 0000000000..95e058b9c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB oB pB"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js
new file mode 100644
index 0000000000..91b6cd7845
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"I g J E F G A B uB vB wB xB iB cB","16":"tB hB","130":"C K L D dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F 7B kB 8B 9B AC BC CC DC EC FC GC HC","16":"hB","130":"D IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"CSS overflow: overlay"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js
new file mode 100644
index 0000000000..9dc254f7c8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"388":"J E F G A B lB"},B:{"1":"b c d e S f H","260":"P Q R U V W X Y Z a","388":"C K L D M N O"},C:{"1":"R nB U V W X Y Z a b c d e S f H","260":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q","388":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB oB pB"},D:{"1":"b c d e S f H qB rB sB","260":"RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a","388":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB"},E:{"1":"1B","260":"L D yB zB 0B","388":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB"},F:{"260":"HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","388":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB 2B 3B 4B 5B cB jB 6B dB"},G:{"260":"D NC OC PC","388":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC"},H:{"388":"QC"},I:{"1":"H","388":"eB I RC SC TC UC kB VC WC"},J:{"388":"E A"},K:{"1":"T","388":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"388":"A B"},O:{"388":"XC"},P:{"1":"hC","388":"I YC ZC aC bC cC iB dC eC fC gC"},Q:{"388":"iC"},R:{"388":"jC"},S:{"388":"kC"}},B:5,C:"CSS overflow property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
new file mode 100644
index 0000000000..dc501dd7e7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N","516":"O"},C:{"1":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB oB pB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB","260":"NB T"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB 0B 1B","1090":"zB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB 2B 3B 4B 5B cB jB 6B dB","260":"CB DB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS overscroll-behavior"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js
new file mode 100644
index 0000000000..c3ffcc2961
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"388":"A B","900":"J E F G lB"},B:{"388":"C K L D M N O","900":"P Q R U V W X Y Z a b c d e S f H"},C:{"772":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","900":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T oB pB"},D:{"900":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"772":"A","900":"I g J E F G B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"16":"G 2B","129":"B C 3B 4B 5B cB jB 6B dB","900":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"900":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"129":"QC"},I:{"900":"eB I H RC SC TC UC kB VC WC"},J:{"900":"E A"},K:{"129":"A B C cB jB dB","900":"T"},L:{"900":"H"},M:{"900":"S"},N:{"388":"A B"},O:{"900":"XC"},P:{"900":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"900":"iC"},R:{"900":"jC"},S:{"900":"kC"}},B:2,C:"CSS page-break properties"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js
new file mode 100644
index 0000000000..8928d36fe8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","132":"F G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"2":"mB eB I g J E F G A B C K L D M N O oB pB","132":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","132":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"16":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"16":"A B C T cB jB dB"},L:{"1":"H"},M:{"132":"S"},N:{"258":"A B"},O:{"258":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"132":"kC"}},B:5,C:"CSS Paged Media (@page)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js
new file mode 100644
index 0000000000..5cea9989bd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T"},E:{"2":"I g J E F G A B C tB hB uB vB wB xB iB cB","194":"K L D dB yB zB 0B 1B"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Paint API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
new file mode 100644
index 0000000000..45d0383538
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","292":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","164":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"164":"kC"}},B:5,C:":placeholder-shown CSS pseudo-class"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js
new file mode 100644
index 0000000000..e184dcc897
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","36":"C K L D M N O"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O oB pB","33":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB"},D:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","36":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I tB hB","36":"g J E F G A uB vB wB xB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","36":"0 1 2 3 4 5 D M N O h i j k l m n o p q r s t u v w x y z"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B","36":"F kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","36":"eB I RC SC TC UC kB VC WC"},J:{"36":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"36":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","36":"I YC ZC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"33":"kC"}},B:5,C:"::placeholder CSS pseudo-element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js
new file mode 100644
index 0000000000..6b23cd5d01
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB","33":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","132":"D M N O h i j k l m n o p q r s t u v w x"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","16":"tB hB","132":"I g J E F uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G B 2B 3B 4B 5B cB","132":"C D M N O h i j k jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B","132":"F kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","16":"RC SC","132":"eB I TC UC kB VC WC"},J:{"1":"A","132":"E"},K:{"1":"T","2":"A B cB","132":"C jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"33":"kC"}},B:1,C:"CSS :read-only and :read-write selectors"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
new file mode 100644
index 0000000000..c2ff318b09
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB","16":"vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Rebeccapurple color"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js
new file mode 100644
index 0000000000..0093222cd2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","33":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"tB hB","33":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"33":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"33":"eB I H RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"2":"A B C cB jB dB","33":"T"},L:{"33":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"33":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"33":"jC"},S:{"2":"kC"}},B:7,C:"CSS Reflections"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js
new file mode 100644
index 0000000000..691c44a0fc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","420":"A B"},B:{"2":"P Q R U V W X Y Z a b c d e S f H","420":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","36":"D M N O","66":"h i j k l m n o p q r s t u v w"},E:{"2":"I g J C K L D tB hB uB cB dB yB zB 0B 1B","33":"E F G A B vB wB xB iB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"D hB 7B kB 8B 9B HC IC JC KC LC MC NC OC PC","33":"F AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"420":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Regions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
new file mode 100644
index 0000000000..5e3d8d2479
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB","33":"I g J E F G A B C K L D pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G","33":"A B C K L D M N O h i j k l m n"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB","33":"J uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B","33":"C 6B","36":"cB jB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","33":"8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB RC SC TC","33":"I UC kB"},J:{"1":"A","2":"E"},K:{"1":"T dB","2":"A B","33":"C","36":"cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS Repeating Gradients"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js
new file mode 100644
index 0000000000..62d4c9582f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B","132":"dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:4,C:"CSS resize property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js
new file mode 100644
index 0000000000..c3ee99884a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"V W X Y Z a b c d e S f H","2":"C K L D M N O P Q R U"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB oB pB"},D:{"1":"V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB"},F:{"1":"WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS revert value"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
new file mode 100644
index 0000000000..71ab6e430d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB","194":"EB FB GB HB IB JB KB fB LB gB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"1 2 3 4 5 6 7 8 9 AB BB CB DB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I","194":"YC ZC aC"},Q:{"2":"iC"},R:{"194":"jC"},S:{"2":"kC"}},B:7,C:"#rrggbbaa hex color notation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
new file mode 100644
index 0000000000..4206e74610
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","129":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB"},D:{"2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","129":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","450":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB"},E:{"1":"1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB yB","578":"L D zB 0B"},F:{"2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB","129":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","450":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC","578":"D PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"129":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"129":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSSOM Scroll-behavior"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js
new file mode 100644
index 0000000000..5f4fb4a665
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a","194":"b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V","194":"Z a b c d e S f H qB rB sB","322":"W X Y"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 2B 3B 4B 5B cB jB 6B dB","194":"YB ZB aB bB P Q R","322":"WB XB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS @scroll-timeline"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js
new file mode 100644
index 0000000000..7a485c6104
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"132":"J E F G A B lB"},B:{"2":"C K L D M N O","292":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB oB pB","3074":"NB","4100":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"292":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"16":"I g tB hB","292":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","292":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"D OC PC","16":"hB 7B kB 8B 9B","292":"AC","804":"F BC CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"16":"RC SC","292":"eB I H TC UC kB VC WC"},J:{"292":"E A"},K:{"2":"A B C cB jB dB","292":"T"},L:{"292":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"292":"XC"},P:{"292":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"292":"iC"},R:{"292":"jC"},S:{"2":"kC"}},B:7,C:"CSS scrollbar styling"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js
new file mode 100644
index 0000000000..70c1d4d195
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"E F G A B","2":"lB","8":"J"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS 2.1 selectors"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js
new file mode 100644
index 0000000000..8db7d6ce81
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J","132":"E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS3 selectors"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js
new file mode 100644
index 0000000000..5ba1de91d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"C T jB dB","16":"A B cB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"33":"kC"}},B:5,C:"::selection CSS pseudo-element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js
new file mode 100644
index 0000000000..3b5d7f9877
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB oB pB","322":"DB EB FB GB HB IB JB KB fB LB gB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v","194":"w x y"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB","33":"F G A wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","33":"F BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:4,C:"CSS Shapes Level 1"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js
new file mode 100644
index 0000000000..4b1197f824
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","6308":"A","6436":"B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","6436":"C K L D M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","2052":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB","8258":"PB QB RB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB","3108":"G A xB iB"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB","8258":"GB HB IB JB KB LB MB NB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC","3108":"CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2052":"kC"}},B:4,C:"CSS Scroll Snap"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js
new file mode 100644
index 0000000000..376314f675
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"c d e S f H","2":"C K L D","1028":"P Q R U V W X Y Z a b","4100":"M N O"},C:{"1":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n oB pB","194":"o p q r s t","516":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k z AB BB CB DB","322":"l m n o p q r s t u v w x y EB FB GB HB","1028":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b"},E:{"1":"K L D yB zB 0B 1B","2":"I g J tB hB uB","33":"F G A B C wB xB iB cB dB","2084":"E vB"},F:{"2":"0 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","322":"1 2 3","1028":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D KC LC MC NC OC PC","2":"hB 7B kB 8B","33":"F BC CC DC EC FC GC HC IC JC","2084":"9B AC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1028":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"1028":"iC"},R:{"2":"jC"},S:{"516":"kC"}},B:5,C:"CSS position:sticky"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js
new file mode 100644
index 0000000000..d7b6f0744f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Subgrid"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js
new file mode 100644
index 0000000000..0297f403a6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","260":"C K L D M N O"},C:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h oB pB","66":"i j","260":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p","260":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B","132":"dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"132":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB","132":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS.supports() API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js
new file mode 100644
index 0000000000..3c0188eff2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","2":"J E lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","132":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS Table display"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js
new file mode 100644
index 0000000000..1417a1628e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"132":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","4":"C K L D M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B oB pB","33":"0 1 2 3 4 5 6 7 8 9 C K L D M N O h i j k l m n o p q r s t u v w x y z AB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w","322":"0 1 2 3 4 5 6 7 8 x y z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j 2B 3B 4B 5B cB jB 6B dB","578":"k l m n o p q r s t u v"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"1":"jC"},S:{"33":"kC"}},B:5,C:"CSS3 text-align-last"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js
new file mode 100644
index 0000000000..23308bb194
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"132":"J E F G A B lB"},B:{"132":"C K L D M N O","388":"P Q R U V W X Y Z a b c d e S f H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"132":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","388":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"132":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"132":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB","388":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"132":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"132":"QC"},I:{"132":"eB I RC SC TC UC kB VC WC","388":"H"},J:{"132":"E A"},K:{"132":"A B C cB jB dB","388":"T"},L:{"388":"H"},M:{"132":"S"},N:{"132":"A B"},O:{"132":"XC"},P:{"132":"I","388":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"388":"iC"},R:{"388":"jC"},S:{"132":"kC"}},B:5,C:"CSS text-indent"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js
new file mode 100644
index 0000000000..5a6f5a70a5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"16":"J E lB","132":"F G A B"},B:{"132":"C K L D M N O","322":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB oB pB","1025":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","1602":"GB"},D:{"2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","322":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB","322":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","322":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","322":"T"},L:{"322":"H"},M:{"1025":"S"},N:{"132":"A B"},O:{"2":"XC"},P:{"2":"I","322":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"322":"iC"},R:{"322":"jC"},S:{"2":"kC"}},B:5,C:"CSS text-justify"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js
new file mode 100644
index 0000000000..c095013afb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","194":"0 1 2"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"L D zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB","16":"A","33":"B C K iB cB dB yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS text-orientation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js
new file mode 100644
index 0000000000..08d50bddc8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","161":"F G A B"},B:{"2":"P Q R U V W X Y Z a b c d e S f H","161":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"16":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"CSS Text 4 text-spacing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js
new file mode 100644
index 0000000000..9ed7097479
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","129":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","129":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","260":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"4":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"A","4":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"129":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 Text-shadow"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js
new file mode 100644
index 0000000000..8b18a6d89d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action-2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"B","164":"A"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","260":"HB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","260":"4"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"132":"B","164":"A"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","16":"I"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"CSS touch-action level 2 values"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js
new file mode 100644
index 0000000000..77240d9a8a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G lB","289":"A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB","194":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB","1025":"EB FB GB HB IB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC","516":"DC EC FC GC HC IC JC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","289":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"194":"kC"}},B:2,C:"CSS touch-action property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js
new file mode 100644
index 0000000000..2dad592bcd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","33":"g J E F G A B C K L D","164":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"I g J E F G A B C K L D M N O h i j k l m n"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","33":"J uB","164":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G 2B 3B","33":"C","164":"B 4B 5B cB jB 6B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"9B","164":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"H VC WC","33":"eB I RC SC TC UC kB"},J:{"1":"A","33":"E"},K:{"1":"T dB","33":"C","164":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS3 Transitions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
new file mode 100644
index 0000000000..d1f3c31659
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"132":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB","132":"mB eB I g J E F G oB pB","292":"A B C K L D M"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M","548":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z"},E:{"132":"I g J E F tB hB uB vB wB","548":"G A B C K L D xB iB cB dB yB zB 0B 1B"},F:{"132":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"132":"F hB 7B kB 8B 9B AC BC","548":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"1":"H","16":"eB I RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"1":"T","16":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"16":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","16":"I"},Q:{"16":"iC"},R:{"16":"jC"},S:{"33":"kC"}},B:4,C:"CSS unicode-bidi property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js
new file mode 100644
index 0000000000..3c3978590b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o oB pB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS unset value"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js
new file mode 100644
index 0000000000..75538dc15f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L","260":"D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"AB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB","260":"xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w 2B 3B 4B 5B cB jB 6B dB","194":"x"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC","260":"DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:4,C:"CSS Variables (Custom Properties)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js
new file mode 100644
index 0000000000..4ed83ce8a2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E lB","129":"F G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","129":"G B 2B 3B 4B 5B cB jB 6B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:2,C:"CSS widows & orphans"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js
new file mode 100644
index 0000000000..2d37e6dc5e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"132":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB","322":"0 1 2 y z"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J","16":"E","33":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I tB hB","16":"g","33":"J E F G A uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j k l m n o p q r s t u v w"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB","33":"F 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"RC SC TC","33":"eB I UC kB VC WC"},J:{"33":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"36":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","33":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS writing-mode property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js
new file mode 100644
index 0000000000..9e66a571d1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E lB","129":"F G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"129":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"CSS zoom"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js
new file mode 100644
index 0000000000..f892f9c035
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"CSS3 attr() function for all properties"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js
new file mode 100644
index 0000000000..8d7384321e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","8":"J E lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"I g J E F G"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","33":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"hB 7B kB"},H:{"1":"QC"},I:{"1":"I H UC kB VC WC","33":"eB RC SC TC"},J:{"1":"A","33":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS3 Box-sizing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js
new file mode 100644
index 0000000000..81926bf8f4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","4":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","2":"G","4":"2B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS3 Colors"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
new file mode 100644
index 0000000000..6df272021b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"mB eB I g J E F G A B C K L D M N O h i j k l m n o oB pB"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","33":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"C HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:3,C:"CSS grab & grabbing cursors"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
new file mode 100644
index 0000000000..75546c5bc5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"mB eB I g J E F G A B C K L D M N O h i j k l oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","33":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB","33":"D M N O h i j k l"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"CSS3 Cursors: zoom-in & zoom-out"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js
new file mode 100644
index 0000000000..d92e5f5e10
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","132":"J E F lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","4":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"I"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","4":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","260":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","16":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"CSS3 Cursors (original values)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js
new file mode 100644
index 0000000000..72b8e38688
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"c d e S f H","2":"mB eB oB pB","33":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b","164":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i","132":"0 1 2 3 j k l m n o p q r s t u v w x y z"},E:{"1":"L D yB zB 0B 1B","2":"I g J tB hB uB","132":"E F G A B C K vB wB xB iB cB dB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B 3B 4B","132":"D M N O h i j k l m n o p q","164":"B C 5B cB jB 6B dB"},G:{"1":"D NC OC PC","2":"hB 7B kB 8B 9B","132":"F AC BC CC DC EC FC GC HC IC JC KC LC MC"},H:{"164":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB","132":"VC WC"},J:{"132":"E A"},K:{"1":"T","2":"A","164":"B C cB jB dB"},L:{"1":"H"},M:{"33":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"164":"kC"}},B:5,C:"CSS3 tab-size"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js
new file mode 100644
index 0000000000..a290ac71f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS currentColor value"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js
new file mode 100644
index 0000000000..13013f5f4a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","8":"A B"},B:{"1":"P","2":"Q R U V W X Y Z a b c d e S f H","8":"C K L D M N O"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","66":"l m n o p q r","72":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","2":"I g J E F G A B C K L D M N O h i j k l m n o Q R U V W X Y Z a b c d e S f H qB rB sB","66":"p q r s t u"},E:{"2":"I g tB hB uB","8":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB","2":"G B C QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","66":"D M N O h"},G:{"2":"hB 7B kB 8B 9B","8":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"WC","2":"eB I H RC SC TC UC kB VC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC","2":"fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"72":"kC"}},B:7,C:"Custom Elements (deprecated V0 spec)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js
new file mode 100644
index 0000000000..dd79dc2f35
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","8":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","8":"C K L D M N O"},C:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r oB pB","8":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB","456":"CB DB EB FB GB HB IB JB KB","712":"fB LB gB MB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB","8":"EB FB","132":"GB HB IB JB KB fB LB gB MB NB T OB PB"},E:{"2":"I g J E tB hB uB vB wB","8":"F G A xB","132":"B C K L D iB cB dB yB zB 0B 1B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","132":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC","132":"D FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I","132":"YC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"8":"kC"}},B:1,C:"Custom Elements (V1)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js
new file mode 100644
index 0000000000..1d29d8b9fd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","132":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB","132":"J E F G A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I","16":"g J E F K L","388":"G A B C"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g J","388":"uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G 2B 3B 4B 5B","132":"B cB jB"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"7B","16":"hB kB","388":"8B"},H:{"1":"QC"},I:{"1":"H VC WC","2":"RC SC TC","388":"eB I UC kB"},J:{"1":"A","388":"E"},K:{"1":"C T dB","2":"A","132":"B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"CustomEvent"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js
new file mode 100644
index 0000000000..162bb9d8e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F G","260":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","260":"C K L D","1284":"M N O"},C:{"8":"mB eB oB pB","4612":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I g J E F G A B C K L D M N O h","132":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB"},E:{"1":"K L D dB yB zB 0B 1B","8":"I g J E F G A B C tB hB uB vB wB xB iB cB"},F:{"1":"G B C T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"8":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC","2049":"D JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H WC","8":"eB I RC SC TC UC kB VC"},J:{"1":"A","8":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"516":"S"},N:{"8":"A B"},O:{"8":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"132":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:1,C:"Datalist element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js
new file mode 100644
index 0000000000..fa028e3306
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","4":"J E F G A lB"},B:{"1":"C K L D M","129":"N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","4":"mB eB I g oB pB","129":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"7 8 9 AB BB CB DB EB FB GB","4":"I g J","129":"0 1 2 3 4 5 6 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"4":"I g tB hB","129":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 C u v w x y z cB jB 6B dB","4":"G B 2B 3B 4B 5B","129":"4 5 6 7 8 9 D M N O h i j k l m n o p q r s t AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"4":"hB 7B kB","129":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"4":"QC"},I:{"4":"RC SC TC","129":"eB I H UC kB VC WC"},J:{"129":"E A"},K:{"1":"C cB jB dB","4":"A B","129":"T"},L:{"129":"H"},M:{"129":"S"},N:{"1":"B","4":"A"},O:{"129":"XC"},P:{"129":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"129":"jC"},S:{"1":"kC"}},B:1,C:"dataset & data-* attributes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js
new file mode 100644
index 0000000000..21d4b162d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","132":"F","260":"G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","260":"C K D M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"260":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Data URIs"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
new file mode 100644
index 0000000000..da05ff3ebe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"16":"lB","132":"J E F G A B"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N"},C:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB","260":"EB FB GB HB","772":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB"},D:{"1":"TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l","260":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB","772":"m n o p q r s t u v w x y z"},E:{"1":"C K L D dB yB zB 0B 1B","16":"I g tB hB","132":"J E F G A uB vB wB xB","260":"B iB cB"},F:{"1":"JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G B C 2B 3B 4B 5B cB jB 6B","132":"dB","260":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","772":"D M N O h i j k l m"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B","132":"F 9B AC BC CC DC EC"},H:{"132":"QC"},I:{"1":"H","16":"eB RC SC TC","132":"I UC kB","772":"VC WC"},J:{"132":"E A"},K:{"1":"T","16":"A B C cB jB","132":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"260":"XC"},P:{"1":"cC iB dC eC fC gC hC","260":"I YC ZC aC bC"},Q:{"260":"iC"},R:{"132":"jC"},S:{"132":"kC"}},B:6,C:"Date.prototype.toLocaleDateString"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js
new file mode 100644
index 0000000000..f9a79b874d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Decorators"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js
new file mode 100644
index 0000000000..7f3c283674
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"G A B lB","8":"J E F"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB","8":"0 1 2 3 4 5 6 7 8 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","194":"9 AB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I g J E F G A B","257":"h i j k l m n o p q r s t u v w x","769":"C K L D M N O"},E:{"1":"C K L D dB yB zB 0B 1B","8":"I g tB hB uB","257":"J E F G A vB wB xB","1025":"B iB cB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"C cB jB 6B dB","8":"G B 2B 3B 4B 5B"},G:{"1":"F D 9B AC BC CC DC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB 8B","1025":"EC FC GC"},H:{"8":"QC"},I:{"1":"I H UC kB VC WC","8":"eB RC SC TC"},J:{"1":"A","8":"E"},K:{"1":"T","8":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"769":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Details & Summary elements"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js
new file mode 100644
index 0000000000..0945edaff7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"C K L D M N O","4":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB oB","4":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"I g pB"},D:{"2":"I g J","4":"0 1 2 3 4 5 6 7 8 9 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","4":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B","4":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"RC SC TC","4":"eB I H UC kB VC WC"},J:{"2":"E","4":"A"},K:{"1":"C dB","2":"A B cB jB","4":"T"},L:{"4":"H"},M:{"4":"S"},N:{"1":"B","2":"A"},O:{"4":"XC"},P:{"4":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"4":"iC"},R:{"4":"jC"},S:{"4":"kC"}},B:4,C:"DeviceOrientation & DeviceMotion events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js
new file mode 100644
index 0000000000..a93d2b5135
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Window.devicePixelRatio"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js
new file mode 100644
index 0000000000..2f49090fd2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB","194":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","1218":"Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t","322":"u v w x y"},E:{"1":"1B","2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O 2B 3B 4B 5B cB jB 6B dB","578":"h i j k l"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"194":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:1,C:"Dialog element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js
new file mode 100644
index 0000000000..3cf16b84c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","16":"lB","129":"G A","130":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","129":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"EventTarget.dispatchEvent"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js
new file mode 100644
index 0000000000..4ec005c306
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"132":"J E F G A B lB"},B:{"132":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"132":"0 1 2 3 4 5 6 7 8 9 I g t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","388":"J E F G A B C K L D M N O h i j k l m n o p q r s"},E:{"132":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"132":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"132":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"132":"QC"},I:{"132":"eB I H RC SC TC UC kB VC WC"},J:{"132":"E A"},K:{"132":"A B C T cB jB dB"},L:{"132":"H"},M:{"132":"S"},N:{"132":"A B"},O:{"132":"XC"},P:{"132":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"132":"kC"}},B:6,C:"DNSSEC and DANE"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js
new file mode 100644
index 0000000000..bee223eda0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","164":"G A","260":"B"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","260":"C K L D M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F oB pB","516":"G A B C K L D M N O h i j k l m n o p q r s t"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k"},E:{"1":"J A B C uB xB iB cB","2":"I g K L D tB hB dB yB zB 0B 1B","1028":"E F G vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B"},G:{"1":"CC DC EC FC GC HC IC","2":"D hB 7B kB 8B 9B JC KC LC MC NC OC PC","1028":"F AC BC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"16":"E","1028":"A"},K:{"1":"T dB","16":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"164":"A","260":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Do Not Track API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js
new file mode 100644
index 0000000000..bc11deaf48
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q"},E:{"1":"F G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"document.currentScript"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
new file mode 100644
index 0000000000..e3244c1191
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","16":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"document.evaluate & XPath"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js
new file mode 100644
index 0000000000..49ef7adc32
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","16":"G 2B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B","16":"kB 8B 9B"},H:{"2":"QC"},I:{"1":"H UC kB VC WC","2":"eB I RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"Document.execCommand()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js
new file mode 100644
index 0000000000..01a4f77b22
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V","132":"W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V","132":"W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB 2B 3B 4B 5B cB jB 6B dB","132":"UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","132":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","132":"T"},L:{"132":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Document Policy"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js
new file mode 100644
index 0000000000..b60027b525
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","16":"C K"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"document.scrollingElement"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js
new file mode 100644
index 0000000000..571e1a4def
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G 2B 3B 4B 5B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"document.head"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
new file mode 100644
index 0000000000..5bb6193647
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB","194":"EB FB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"2"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"194":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"DOM manipulation convenience methods"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js
new file mode 100644
index 0000000000..f3ce4cb201
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Document Object Model Range"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js
new file mode 100644
index 0000000000..1bb297f260
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"DOMContentLoaded"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js
new file mode 100644
index 0000000000..b7b73f2d25
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domfocusin-domfocusout-events.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L D M N O h i j k l m n"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","16":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B 9B"},H:{"16":"QC"},I:{"1":"I H UC kB VC WC","16":"eB RC SC TC"},J:{"16":"E A"},K:{"1":"T","16":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"DOMFocusIn & DOMFocusOut events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js
new file mode 100644
index 0000000000..9e9a2bd1d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"132":"C K L D M N O","1028":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB","1028":"SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2564":"0 1 2 3 4 5 6 7 8 9 v w x y z AB","3076":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB"},D:{"16":"I g J E","132":"0 1 2 3 4 5 6 7 8 9 G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB","388":"F","1028":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"16":"I tB hB","132":"g J E F G A uB vB wB xB iB","1028":"B C K L D cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z","1028":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"16":"hB 7B kB","132":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"132":"I UC kB VC WC","292":"eB RC SC TC","1028":"H"},J:{"16":"E","132":"A"},K:{"2":"A B C cB jB dB","1028":"T"},L:{"1028":"H"},M:{"1028":"S"},N:{"132":"A B"},O:{"132":"XC"},P:{"132":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"2564":"kC"}},B:4,C:"DOMMatrix"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js
new file mode 100644
index 0000000000..962e311067
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Download attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js
new file mode 100644
index 0000000000..6f8bd89073
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"644":"J E F G lB","772":"A B"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","260":"C K L D M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","8":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","8":"G B 2B 3B 4B 5B cB jB 6B"},G:{"1":"D","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","1025":"H"},J:{"2":"E A"},K:{"1":"dB","8":"A B C cB jB","1025":"T"},L:{"1025":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"Drag and Drop"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js
new file mode 100644
index 0000000000..c6cd9ecdf6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w oB pB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Element.closest()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js
new file mode 100644
index 0000000000..dfe61bf543
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","16":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","16":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","16":"G 2B 3B 4B 5B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"C T dB","16":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"document.elementFromPoint()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js
new file mode 100644
index 0000000000..97b628195d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB"},E:{"1":"L D zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB","132":"A B C K iB cB dB yB"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D PC","2":"F hB 7B kB 8B 9B AC BC CC DC","132":"EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js
new file mode 100644
index 0000000000..a9a6248512
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","164":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w","132":"0 1 2 3 x y z"},E:{"1":"C K L D dB yB zB 0B 1B","2":"I g J tB hB uB vB","164":"E F G A B wB xB iB cB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j 2B 3B 4B 5B cB jB 6B dB","132":"k l m n o p q"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"16":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:2,C:"Encrypted Media Extensions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js
new file mode 100644
index 0000000000..1232548c62
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","2":"lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"EOT - Embedded OpenType fonts"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js
new file mode 100644
index 0000000000..568a229d59
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E lB","260":"G","1026":"F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","4":"mB eB oB pB","132":"I g J E F G A B C K L D M N O h i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"I g J E F G A B C K L D M N O","132":"h i j k"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","4":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","4":"G B C 2B 3B 4B 5B cB jB 6B","132":"dB"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","4":"hB 7B kB 8B"},H:{"132":"QC"},I:{"1":"H VC WC","4":"eB RC SC TC","132":"UC kB","900":"I"},J:{"1":"A","4":"E"},K:{"1":"T","4":"A B C cB jB","132":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ECMAScript 5"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js
new file mode 100644
index 0000000000..4533bd721f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","132":"4 5 6 7 8 9 AB"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q 2B 3B 4B 5B cB jB 6B dB","132":"r s t u v w x"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ES6 classes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js
new file mode 100644
index 0000000000..1f0114818f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n oB pB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ES6 Generators"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
new file mode 100644
index 0000000000..19d7ecc1b4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB oB pB","194":"PB"},D:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"JavaScript modules: dynamic import()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js
new file mode 100644
index 0000000000..5ff7ad8506
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L","4097":"M N O","4290":"D"},C:{"1":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB oB pB","322":"GB HB IB JB KB fB"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB","194":"LB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB","3076":"iB"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"9"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC","3076":"FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"JavaScript modules via script tag"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js
new file mode 100644
index 0000000000..88cc8394ea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D oB pB","132":"M N O h i j k l m","260":"n o p q r s","516":"t"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O","1028":"h i j k l m n o p q r s t u v"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","1028":"D M N O h i"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC","1028":"UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ES6 Number"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js
new file mode 100644
index 0000000000..de36f827e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"String.prototype.includes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js
new file mode 100644
index 0000000000..15ad354d3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","388":"B"},B:{"257":"P Q R U V W X Y Z a b c d e S f H","260":"C K L","769":"D M N O"},C:{"2":"mB eB I g oB pB","4":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB","257":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"I g J E F G A B C K L D M N O h i","4":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB","257":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB","4":"F G wB xB"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","4":"D M N O h i j k l m n o p q r s t u v w x y z","257":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B","4":"F AC BC CC DC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","4":"VC WC","257":"H"},J:{"2":"E","4":"A"},K:{"2":"A B C cB jB dB","257":"T"},L:{"257":"H"},M:{"257":"S"},N:{"2":"A","388":"B"},O:{"257":"XC"},P:{"4":"I","257":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"257":"iC"},R:{"4":"jC"},S:{"4":"kC"}},B:6,C:"ECMAScript 2015 (ES6)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js
new file mode 100644
index 0000000000..41fe1cb9f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","4":"G 2B 3B 4B 5B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"C T cB jB dB","4":"A B"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Server-sent events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js
new file mode 100644
index 0000000000..d57cfb4104
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"L D yB zB 0B 1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js
new file mode 100644
index 0000000000..8c2c62b6b8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y","2":"C K L D M N O","1025":"Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB oB pB","260":"XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"XB YB ZB aB bB P Q R U V W X Y","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB","132":"LB gB MB NB T OB PB QB RB SB TB UB VB WB","1025":"Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B tB hB uB vB wB xB iB","772":"C K L D cB dB yB zB 0B 1B"},F:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB","2":"0 1 2 3 4 5 6 7 8 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","132":"9 AB BB CB DB EB FB GB HB IB JB KB LB","1025":"YB ZB aB bB P Q R"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC","772":"D HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1025":"H"},M:{"260":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"dC eC fC gC hC","2":"I YC ZC aC","132":"bC cC iB"},Q:{"132":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Feature Policy"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js
new file mode 100644
index 0000000000..cb3faba81f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v oB pB","1025":"1","1218":"0 w x y z"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","260":"2","772":"3"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o 2B 3B 4B 5B cB jB 6B dB","260":"p","772":"q"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Fetch"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js
new file mode 100644
index 0000000000..8d9ac75db2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"16":"lB","132":"F G","388":"J E A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D","16":"M N O h"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","16":"G 2B"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"388":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A","260":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"disabled attribute of the fieldset element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js
new file mode 100644
index 0000000000..df004ae2d3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","260":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","260":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB","260":"I g J E F G A B C K L D M N O h i j k l m n o p pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g","260":"K L D M N O h i j k l m n o p q r s t u v w x y z","388":"J E F G A B C"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g tB hB","260":"J E F G vB wB xB","388":"uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B 2B 3B 4B 5B","260":"C D M N O h i j k l m cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","260":"F 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H WC","2":"RC SC TC","260":"VC","388":"eB I UC kB"},J:{"260":"A","388":"E"},K:{"1":"T","2":"A B","260":"C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A","260":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"File API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js
new file mode 100644
index 0000000000..2834f7f148
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G B 2B 3B 4B 5B"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"C T cB jB dB","2":"A B"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"FileReader API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js
new file mode 100644
index 0000000000..279139ca18
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G 2B 3B","16":"B 4B 5B cB jB"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"C T jB dB","2":"A","16":"B cB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"FileReaderSync"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js
new file mode 100644
index 0000000000..22a1b7315c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","33":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"I g J E","33":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","36":"F G A B C"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E","33":"A"},K:{"2":"A B C T cB jB dB"},L:{"33":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I","33":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Filesystem & FileWriter API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js
new file mode 100644
index 0000000000..8306600937
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB oB pB"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","16":"6 7 8","388":"9 AB BB CB DB EB FB GB HB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","516":"B C cB dB"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"RC SC TC","16":"eB I UC kB VC WC"},J:{"1":"A","2":"E"},K:{"1":"T dB","16":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","129":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:6,C:"FLAC audio format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js
new file mode 100644
index 0000000000..b0bd4a5a3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"V W X Y Z a b c d e S f H","2":"C K L D M N O P Q R U"},C:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB oB pB"},D:{"1":"V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U"},E:{"1":"D zB 0B 1B","2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB"},F:{"1":"WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"gap property for Flexbox"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js
new file mode 100644
index 0000000000..7a9457ea6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","1028":"B","1316":"A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","164":"mB eB I g J E F G A B C K L D M N O h i j oB pB","516":"k l m n o p"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"j k l m n o p q","164":"I g J E F G A B C K L D M N O h i"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","33":"E F vB wB","164":"I g J tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B C 2B 3B 4B 5B cB jB 6B","33":"D M"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"F AC BC","164":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"1":"H VC WC","164":"eB I RC SC TC UC kB"},J:{"1":"A","164":"E"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","292":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS Flexible Box Layout Module"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js
new file mode 100644
index 0000000000..2974d3371e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB"},D:{"1":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB dB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"display: flow-root"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
new file mode 100644
index 0000000000..3fb66b8557
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","2":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G 2B 3B 4B 5B","16":"B cB jB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"I H UC kB VC WC","2":"RC SC TC","16":"eB"},J:{"1":"E A"},K:{"1":"C T dB","2":"A","16":"B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"focusin & focusout events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js
new file mode 100644
index 0000000000..9f845bca82
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusoptions-preventscroll.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M","132":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"preventScroll support in focus"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js
new file mode 100644
index 0000000000..7b1fe068f8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"d e S f H","2":"0 1 2 3 4 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","132":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB","260":"FB GB HB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB","16":"G","132":"A xB iB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC","132":"CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"132":"kC"}},B:5,C:"system-ui value for font-family"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js
new file mode 100644
index 0000000000..9207b3b98f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","33":"D M N O h i j k l m n o p q r s t u v","164":"I g J E F G A B C K L"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D","33":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z","292":"M N O h i"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"E F G tB hB vB wB","4":"I g J uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j k l m n o p q r s t u v w"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F AC BC CC","4":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB","33":"VC WC"},J:{"2":"E","33":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","33":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS font-feature-settings"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js
new file mode 100644
index 0000000000..e55d395808
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l oB pB","194":"m n o p q r s t u v"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q","33":"r s t u"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB","33":"E F G wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D 2B 3B 4B 5B cB jB 6B dB","33":"M N O h"},G:{"1":"D IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","33":"F BC CC DC EC FC GC HC"},H:{"2":"QC"},I:{"1":"H WC","2":"eB I RC SC TC UC kB","33":"VC"},J:{"2":"E","33":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 font-kerning"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js
new file mode 100644
index 0000000000..c44af263a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w oB pB","194":"0 1 2 x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS Font Loading"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js
new file mode 100644
index 0000000000..f3aaaf3f20
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-metrics-overrides.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W","194":"X"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"@font-face metrics overrides"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js
new file mode 100644
index 0000000000..8ea6807108
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","194":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB"},D:{"2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB","194":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"258":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"194":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"CSS font-size-adjust"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js
new file mode 100644
index 0000000000..a5cffa1501
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","676":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB","804":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"tB hB","676":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","676":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"804":"kC"}},B:7,C:"CSS font-smooth"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js
new file mode 100644
index 0000000000..c5f3e624b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","4":"G A B"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","4":"C K L D M"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB","194":"0 1 2 3 4 5 y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","4":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","4":"D M N O h i j k"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","4":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","4":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","4":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"4":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","4":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:4,C:"Font unicode-range subsetting"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js
new file mode 100644
index 0000000000..0f657483fa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","130":"A B"},B:{"130":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","130":"I g J E F G A B C K L D M N O h i j k l","322":"m n o p q r s t u v"},D:{"2":"I g J E F G A B C K L D","130":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"E F G tB hB vB wB","130":"I g J uB"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","130":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB AC BC CC","130":"7B kB 8B 9B"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","130":"H VC WC"},J:{"2":"E","130":"A"},K:{"2":"A B C cB jB dB","130":"T"},L:{"130":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"130":"XC"},P:{"130":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"130":"iC"},R:{"130":"jC"},S:{"1":"kC"}},B:5,C:"CSS font-variant-alternates"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js
new file mode 100644
index 0000000000..8219fafa1e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-east-asian.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l oB pB","132":"m n o p q r s t u v"},D:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"132":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:4,C:"CSS font-variant-east-asian "};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js
new file mode 100644
index 0000000000..d8138863a7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v oB pB"},D:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","16":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:2,C:"CSS font-variant-numeric"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js
new file mode 100644
index 0000000000..66876e935c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","132":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","2":"G 2B"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","260":"hB 7B"},H:{"2":"QC"},I:{"1":"I H UC kB VC WC","2":"RC","4":"eB SC TC"},J:{"1":"A","4":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"@font-face Web fonts"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js
new file mode 100644
index 0000000000..c6084b02fb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Form attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js
new file mode 100644
index 0000000000..c324cc6af6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","2":"G 2B","16":"3B 4B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"I H UC kB VC WC","2":"RC SC TC","16":"eB"},J:{"1":"A","2":"E"},K:{"1":"B C T cB jB dB","16":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Attributes for form submission"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js
new file mode 100644
index 0000000000..d13df23a3e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I tB hB","132":"g J E F G A uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","2":"G 2B"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"hB","132":"F 7B kB 8B 9B AC BC CC DC EC"},H:{"516":"QC"},I:{"1":"H WC","2":"eB RC SC TC","132":"I UC kB VC"},J:{"1":"A","132":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"260":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"132":"kC"}},B:1,C:"Form validation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js
new file mode 100644
index 0000000000..5c241c6768
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","4":"A B","8":"J E F G"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","4":"C K L D"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB oB pB"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB"},E:{"4":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"tB hB"},F:{"1":"G B C EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","4":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB"},G:{"2":"hB","4":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB","4":"VC WC"},J:{"2":"E","4":"A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"4":"S"},N:{"4":"A B"},O:{"1":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","4":"I YC ZC aC"},Q:{"1":"iC"},R:{"4":"jC"},S:{"4":"kC"}},B:1,C:"HTML5 form features"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js
new file mode 100644
index 0000000000..f6510b733c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","548":"B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","516":"C K L D M N O"},C:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G oB pB","676":"0 1 2 3 4 5 6 7 8 A B C K L D M N O h i j k l m n o p q r s t u v w x y z","1700":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB"},D:{"1":"UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L","676":"D M N O h","804":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB"},E:{"2":"I g tB hB","676":"uB","804":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B C 2B 3B 4B 5B cB jB 6B","804":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC","2052":"IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E","292":"A"},K:{"2":"A B C T cB jB dB"},L:{"804":"H"},M:{"1":"S"},N:{"2":"A","548":"B"},O:{"804":"XC"},P:{"1":"iB dC eC fC gC hC","804":"I YC ZC aC bC cC"},Q:{"804":"iC"},R:{"804":"jC"},S:{"1":"kC"}},B:1,C:"Full Screen API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js
new file mode 100644
index 0000000000..8f16d87adc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i","33":"j k l m"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"Gamepad API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js
new file mode 100644
index 0000000000..bdfc079e36
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J E F"},B:{"1":"C K L D M N O","129":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB oB pB","8":"mB eB","129":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB","4":"I","129":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"I tB hB","129":"A"},F:{"1":"0 B C M N O h i j k l m n o p q r s t u v w x y z 5B cB jB 6B dB","2":"G D 2B","8":"3B 4B","129":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"F hB 7B kB 8B 9B AC BC CC DC","129":"D EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I RC SC TC UC kB VC WC","129":"H"},J:{"1":"E A"},K:{"1":"B C cB jB dB","8":"A","129":"T"},L:{"129":"H"},M:{"129":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I","129":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"129":"iC"},R:{"129":"jC"},S:{"1":"kC"}},B:2,C:"Geolocation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js
new file mode 100644
index 0000000000..7cfefb7760
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"644":"J E lB","2049":"G A B","2692":"F"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2049":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB","260":"I g J E F G A B","1156":"eB","1284":"oB","1796":"pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","16":"G 2B","132":"3B 4B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","132":"A"},L:{"1":"H"},M:{"1":"S"},N:{"2049":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Element.getBoundingClientRect()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js
new file mode 100644
index 0000000000..f5fe3bf42c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB","132":"eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","260":"I g J E F G A"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","260":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","260":"G 2B 3B 4B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","260":"hB 7B kB"},H:{"260":"QC"},I:{"1":"I H UC kB VC WC","260":"eB RC SC TC"},J:{"1":"A","260":"E"},K:{"1":"B C T cB jB dB","260":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"getComputedStyle"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
new file mode 100644
index 0000000000..3519ebccd1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","8":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"getElementsByClassName"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js
new file mode 100644
index 0000000000..64ded6684a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","33":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A","33":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"crypto.getRandomValues()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js
new file mode 100644
index 0000000000..058cae6282
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","194":"KB fB LB gB MB NB T OB PB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Gyroscope"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
new file mode 100644
index 0000000000..f1fe962387
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y"},E:{"2":"I g J E tB hB uB vB wB","129":"B C K L D iB cB dB yB zB 0B 1B","194":"F G A xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"hB 7B kB 8B 9B AC","129":"D FC GC HC IC JC KC LC MC NC OC PC","194":"F BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"navigator.hardwareConcurrency"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js
new file mode 100644
index 0000000000..829de891bd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","8":"J E lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","8":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","8":"G 2B 3B 4B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"2":"QC"},I:{"1":"eB I H SC TC UC kB VC WC","2":"RC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","8":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Hashchange event"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js
new file mode 100644
index 0000000000..08402b6a28
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A tB hB uB vB wB xB iB","130":"B C K L D cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","130":"D GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"HEIF/ISO Base Media File Format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js
new file mode 100644
index 0000000000..9cef291c88
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"2":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","516":"B C cB dB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","258":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","258":"T"},L:{"258":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I","258":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"HEVC/H.265 video format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js
new file mode 100644
index 0000000000..2349bbbdeb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G B 2B 3B 4B 5B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"I H UC kB VC WC","2":"eB RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"C T cB jB dB","2":"A B"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"hidden attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js
new file mode 100644
index 0000000000..0e5e16346e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h","33":"i j k l"},E:{"1":"F G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"High Resolution Time API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js
new file mode 100644
index 0000000000..fb4c911bbc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","4":"g uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R jB 6B dB","2":"G B 2B 3B 4B 5B cB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B","4":"kB"},H:{"2":"QC"},I:{"1":"H SC TC kB VC WC","2":"eB I RC UC"},J:{"1":"E A"},K:{"1":"C T cB jB dB","2":"A B"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Session history management"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js
new file mode 100644
index 0000000000..08ff68c880
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"hB 7B kB 8B","129":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC","257":"SC TC"},J:{"1":"A","16":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"516":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"16":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:4,C:"HTML Media Capture"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js
new file mode 100644
index 0000000000..1c2e7315f5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F","260":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB","132":"eB oB pB","260":"I g J E F G A B C K L D M N O h i"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g","260":"J E F G A B C K L D M N O h i j k l m n"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","132":"I tB hB","260":"g J uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","132":"G B 2B 3B 4B 5B","260":"C cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","132":"hB","260":"7B kB 8B 9B"},H:{"132":"QC"},I:{"1":"H VC WC","132":"RC","260":"eB I SC TC UC kB"},J:{"260":"E A"},K:{"1":"T","132":"A","260":"B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"260":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"HTML5 semantic elements"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js
new file mode 100644
index 0000000000..0aa6c3ab00
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O","2":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"HTTP Live Streaming (HLS)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js
new file mode 100644
index 0000000000..47199af681
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"C K L D M N O","513":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB","513":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"3 4 5 6 7 8 9 AB BB CB","2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","513":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB","260":"G A xB iB"},F:{"1":"q r s t u v w x y z","2":"G B C D M N O h i j k l m n o p 2B 3B 4B 5B cB jB 6B dB","513":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","513":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","513":"T"},L:{"513":"H"},M:{"513":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I","513":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"513":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"HTTP/2 protocol"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js
new file mode 100644
index 0000000000..b7a6d6a5c7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"Y Z a b c d e S f H","2":"C K L D M N O","322":"P Q R U V","578":"W X"},C:{"1":"Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB oB pB","194":"VB WB XB YB ZB aB bB P Q R nB U V W X Y"},D:{"1":"Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","322":"P Q R U V","578":"W X"},E:{"2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB yB","1090":"L D zB 0B 1B"},F:{"1":"XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 2B 3B 4B 5B cB jB 6B dB","578":"WB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC","66":"D OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"194":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"HTTP/3 protocol"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js
new file mode 100644
index 0000000000..3868c6490e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M oB pB","4":"N O h i j k l m n o p"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B"},H:{"2":"QC"},I:{"1":"eB I H SC TC UC kB VC WC","2":"RC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"sandbox attribute for iframes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js
new file mode 100644
index 0000000000..885847fe71
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","66":"i j k l m n o"},E:{"2":"I g J F G A B C K L D tB hB uB vB xB iB cB dB yB zB 0B 1B","130":"E wB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","130":"AC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"seamless attribute for iframes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
new file mode 100644
index 0000000000..93e6074a6b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","8":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB","8":"eB I g J E F G A B C K L D M N O h i j k l m oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K","8":"L D M N O h"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB","8":"I g uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B 2B 3B 4B 5B","8":"C cB jB 6B dB"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB","8":"7B kB 8B"},H:{"2":"QC"},I:{"1":"H VC WC","8":"eB I RC SC TC UC kB"},J:{"1":"A","8":"E"},K:{"1":"T","2":"A B","8":"C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"srcdoc attribute for iframes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js
new file mode 100644
index 0000000000..fa5f286522
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","322":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w oB pB","194":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB","322":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","322":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"322":"iC"},R:{"1":"jC"},S:{"194":"kC"}},B:5,C:"ImageCapture API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js
new file mode 100644
index 0000000000..e99e489223
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","161":"B"},B:{"2":"P Q R U V W X Y Z a b c d e S f H","161":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A","161":"B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Input Method Editor API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
new file mode 100644
index 0000000000..a78fa821ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"naturalWidth & naturalHeight image properties"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js
new file mode 100644
index 0000000000..93d62100e0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"a b c d e S f H","2":"C K L D M N O","194":"P Q R U V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB","194":"XB YB ZB aB bB P Q R U V W X Y Z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB","194":"MB NB T OB PB QB RB SB TB UB VB WB XB YB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"hC","2":"I YC ZC aC bC cC iB dC eC fC gC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Import maps"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js
new file mode 100644
index 0000000000..ef91ca3855
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","8":"A B"},B:{"1":"P","2":"Q R U V W X Y Z a b c d e S f H","8":"C K L D M N O"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r oB pB","8":"s t IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","72":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r Q R U V W X Y Z a b c d e S f H qB rB sB","66":"s t u v w","72":"x"},E:{"2":"I g tB hB uB","8":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB","2":"G B C D M QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","66":"N O h i j","72":"k"},G:{"2":"hB 7B kB 8B 9B","8":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"8":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC","2":"fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"HTML Imports"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
new file mode 100644
index 0000000000..79dc591f61
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","16":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB","16":"oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB"},G:{"1":"D JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"indeterminate checkbox"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js
new file mode 100644
index 0000000000..ddda401a87
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","33":"A B C K L D","36":"I g J E F G"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"A","8":"I g J E F G","33":"l","36":"B C K L D M N O h i j k"},E:{"1":"A B C K L D iB cB dB yB 0B 1B","8":"I g J E tB hB uB vB","260":"F G wB xB","516":"zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B 3B","8":"B C 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC","8":"hB 7B kB 8B 9B AC","260":"F BC CC DC","516":"PC"},H:{"2":"QC"},I:{"1":"H VC WC","8":"eB I RC SC TC UC kB"},J:{"1":"A","8":"E"},K:{"1":"T","2":"A","8":"B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"IndexedDB"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js
new file mode 100644
index 0000000000..0d6780f0c6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","132":"6 7 8","260":"9 AB BB CB"},D:{"1":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","132":"AB BB CB DB","260":"EB FB GB HB IB JB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w 2B 3B 4B 5B cB jB 6B dB","132":"0 x y z","260":"1 2 3 4 5 6"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC","16":"EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I","260":"YC ZC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"260":"kC"}},B:4,C:"IndexedDB 2.0"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js
new file mode 100644
index 0000000000..9327fb714a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","4":"lB","132":"J E"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","36":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS inline-block"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js
new file mode 100644
index 0000000000..66254a3de5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","16":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"HTMLElement.innerText"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
new file mode 100644
index 0000000000..635041b290
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A lB","132":"B"},B:{"132":"C K L D M N O","260":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r oB pB","516":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"N O h i j k l m n o","2":"I g J E F G A B C K L D M","132":"0 1 2 p q r s t u v w x y z","260":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J uB vB","2":"I g tB hB","2052":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"hB 7B kB","1025":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1025":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2052":"A B"},O:{"1025":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"260":"iC"},R:{"1":"jC"},S:{"516":"kC"}},B:1,C:"autocomplete attribute: on & off values"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js
new file mode 100644
index 0000000000..bd628237e7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G D M 2B 3B 4B 5B"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC","129":"D JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:1,C:"Color input type"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js
new file mode 100644
index 0000000000..453f3cfc64
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","132":"C"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB","1090":"FB GB HB IB","2052":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d","4100":"e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h","2052":"i j k l m"},E:{"2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB","4100":"D zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"hB 7B kB","260":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB RC SC TC","514":"I UC kB"},J:{"1":"A","2":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2052":"kC"}},B:1,C:"Date and time input types"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js
new file mode 100644
index 0000000000..43b95e5fdd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","132":"RC SC TC"},J:{"1":"A","132":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Email, telephone & URL input types"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js
new file mode 100644
index 0000000000..83585b4297
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","2561":"A B","2692":"G"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2561":"C K L D M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB","1537":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB pB","1796":"eB oB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L","1025":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB","1537":"D M N O h i j k l m n o p q r s t u v w"},E:{"1":"L D yB zB 0B 1B","16":"I g J tB hB","1025":"E F G A B C vB wB xB iB cB","1537":"uB","4097":"K dB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","16":"G B C 2B 3B 4B 5B cB jB","260":"6B","1025":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB","1537":"D M N O h i j"},G:{"16":"hB 7B kB","1025":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","1537":"8B 9B AC"},H:{"2":"QC"},I:{"16":"RC SC","1025":"H WC","1537":"eB I TC UC kB VC"},J:{"1025":"A","1537":"E"},K:{"1":"A B C cB jB dB","1025":"T"},L:{"1":"H"},M:{"1537":"S"},N:{"2561":"A B"},O:{"1537":"XC"},P:{"1025":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1025":"iC"},R:{"1025":"jC"},S:{"1537":"kC"}},B:1,C:"input event"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js
new file mode 100644
index 0000000000..c09f0e24fa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","132":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I","16":"g J E F j k l m n","132":"G A B C K L D M N O h i"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g tB hB uB","132":"J E F G A B vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"9B AC","132":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","514":"hB 7B kB 8B"},H:{"2":"QC"},I:{"2":"RC SC TC","260":"eB I UC kB","514":"H VC WC"},J:{"132":"A","260":"E"},K:{"2":"A B C cB jB dB","514":"T"},L:{"260":"H"},M:{"2":"S"},N:{"514":"A","1028":"B"},O:{"2":"XC"},P:{"260":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"260":"iC"},R:{"260":"jC"},S:{"1":"kC"}},B:1,C:"accept attribute for file input"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js
new file mode 100644
index 0000000000..f6bf4a98a6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Directory selection from file input"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js
new file mode 100644
index 0000000000..c2f7f62e43
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","2":"G 2B 3B 4B"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"130":"QC"},I:{"130":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"130":"A B C T cB jB dB"},L:{"132":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"130":"XC"},P:{"130":"I","132":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"2":"kC"}},B:1,C:"Multiple file selection"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js
new file mode 100644
index 0000000000..69fec2fb9e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"f H","2":"mB eB I g J E F G A B C K L D M oB pB","4":"N O h i","194":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB","66":"IB JB KB fB LB gB MB NB T OB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","66":"5 6 7 8 9 AB BB CB DB EB"},G:{"1":"D JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I YC ZC aC bC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:1,C:"inputmode attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js
new file mode 100644
index 0000000000..1276530eb0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB oB pB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:1,C:"Minimum length attribute for input fields"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js
new file mode 100644
index 0000000000..b8246e99d2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","129":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","129":"C K","1025":"L D M N O"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB","513":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"388":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB RC SC TC","388":"I H UC kB VC WC"},J:{"2":"E","388":"A"},K:{"1":"A B C cB jB dB","388":"T"},L:{"388":"H"},M:{"641":"S"},N:{"388":"A B"},O:{"388":"XC"},P:{"388":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"388":"iC"},R:{"388":"jC"},S:{"513":"kC"}},B:1,C:"Number input type"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js
new file mode 100644
index 0000000000..10ac66bd1a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g","388":"J E F G A uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB","388":"F 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H WC","2":"eB I RC SC TC UC kB VC"},J:{"1":"A","2":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Pattern attribute for input fields"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js
new file mode 100644
index 0000000000..2e6d4fc5c3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","132":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R jB 6B dB","2":"G 2B 3B 4B 5B","132":"B cB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB H RC SC TC kB VC WC","4":"I UC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"input placeholder attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js
new file mode 100644
index 0000000000..3856c406bf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"H kB VC WC","4":"eB I RC SC TC UC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Range input type"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js
new file mode 100644
index 0000000000..43bf64a3ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","129":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","129":"C K L D M N O"},C:{"2":"mB eB oB pB","129":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L j k l m n","129":"D M N O h i"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G 2B 3B 4B 5B","16":"B cB jB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"129":"QC"},I:{"1":"H VC WC","16":"RC SC","129":"eB I TC UC kB"},J:{"1":"E","129":"A"},K:{"1":"C T","2":"A","16":"B cB jB","129":"dB"},L:{"1":"H"},M:{"129":"S"},N:{"129":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"129":"kC"}},B:1,C:"Search input type"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js
new file mode 100644
index 0000000000..d3b8958673
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","16":"G 2B 3B 4B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Selection controls for input & textarea"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js
new file mode 100644
index 0000000000..4a3255ad5d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","16":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
new file mode 100644
index 0000000000..8b64b6779f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","16":"lB","132":"J E F G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","16":"G 2B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Element.insertAdjacentHTML()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js
new file mode 100644
index 0000000000..4e9c1c5ff9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:6,C:"Internationalization API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
new file mode 100644
index 0000000000..e7d9fcd248
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"dC eC fC gC hC","2":"I YC ZC aC bC cC iB"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"IntersectionObserver V2"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js
new file mode 100644
index 0000000000..9b1fd684c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O","2":"C K L","516":"D","1025":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB","194":"EB FB GB"},D:{"1":"KB fB LB gB MB NB T","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","516":"DB EB FB GB HB IB JB","1025":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB","2":"G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","516":"0 1 2 3 4 5 6","1025":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","1025":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","1025":"T"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"516":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I","516":"YC ZC"},Q:{"1025":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"IntersectionObserver"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js
new file mode 100644
index 0000000000..9b0713c995
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N","130":"O"},C:{"1":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB oB pB"},D:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB dB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Intl.PluralRules API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js
new file mode 100644
index 0000000000..cbf344e5a7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","1537":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB","932":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB oB pB","2308":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"I g J E F G A B C K L D M N O h i j","545":"0 1 2 3 4 5 6 7 k l m n o p q r s t u v w x y z","1537":"8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J tB hB uB","516":"B C K L D cB dB yB zB 0B 1B","548":"G A xB iB","676":"E F vB wB"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","513":"w","545":"D M N O h i j k l m n o p q r s t u","1537":"0 1 2 3 4 5 6 7 8 9 v x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B kB 8B 9B","516":"D OC PC","548":"CC DC EC FC GC HC IC JC KC LC MC NC","676":"F AC BC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","545":"VC WC","1537":"H"},J:{"2":"E","545":"A"},K:{"2":"A B C cB jB dB","1537":"T"},L:{"1537":"H"},M:{"2308":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"545":"I","1537":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"545":"iC"},R:{"1537":"jC"},S:{"932":"kC"}},B:5,C:"Intrinsic & Extrinsic Sizing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js
new file mode 100644
index 0000000000..c94e9c125d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","129":"g uB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"JPEG 2000 image format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js
new file mode 100644
index 0000000000..e3f5acaa73
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b","578":"c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a oB pB","322":"b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b","194":"c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB 2B 3B 4B 5B cB jB 6B dB","194":"aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"JPEG XL image format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js
new file mode 100644
index 0000000000..781bfa1ec8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O","2":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"JPEG XR image format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
new file mode 100644
index 0000000000..57f7b6046b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB oB pB"},D:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Lookbehind in JS regular expressions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js
new file mode 100644
index 0000000000..d812d68a80
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E lB","129":"F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"JSON parsing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
new file mode 100644
index 0000000000..bee82162b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D","132":"M N O"},C:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB"},D:{"1":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","132":"JB KB fB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB","132":"iB"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","132":"6 7 8"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC","132":"FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"132":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC","132":"aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"132":"kC"}},B:5,C:"CSS justify-content: space-evenly"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
new file mode 100644
index 0000000000..455ea0ea55
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"RC SC TC","132":"eB I UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"High-quality kerning pairs & ligatures"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
new file mode 100644
index 0000000000..bf659a8aa3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","16":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B","16":"C"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T dB","2":"A B cB jB","16":"C"},L:{"1":"H"},M:{"130":"S"},N:{"130":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"KeyboardEvent.charCode"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js
new file mode 100644
index 0000000000..fb40a3ece2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"4 5 6 7 8 9"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q 2B 3B 4B 5B cB jB 6B dB","194":"r s t u v w"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"194":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I","194":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"194":"jC"},S:{"1":"kC"}},B:5,C:"KeyboardEvent.code"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
new file mode 100644
index 0000000000..58ec12a4ce
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B D M 2B 3B 4B 5B cB jB 6B","16":"C"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T dB","2":"A B cB jB","16":"C"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"KeyboardEvent.getModifierState()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js
new file mode 100644
index 0000000000..a710e5ee21
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","260":"G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","260":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k oB pB","132":"l m n o p q"},D:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B","16":"C"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"1":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T dB","2":"A B cB jB","16":"C"},L:{"1":"H"},M:{"1":"S"},N:{"260":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:5,C:"KeyboardEvent.key"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js
new file mode 100644
index 0000000000..00548f10d6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l m n o p q r"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","16":"J tB hB","132":"I g uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B","16":"C","132":"D M"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB","132":"8B 9B AC"},H:{"2":"QC"},I:{"1":"H VC WC","16":"RC SC","132":"eB I TC UC kB"},J:{"132":"E A"},K:{"1":"T dB","2":"A B cB jB","16":"C"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"KeyboardEvent.location"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js
new file mode 100644
index 0000000000..70a9befd16
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","16":"g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","16":"G 2B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB","16":"RC SC","132":"VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"132":"H"},M:{"132":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"2":"I","132":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"132":"jC"},S:{"1":"kC"}},B:7,C:"KeyboardEvent.which"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js
new file mode 100644
index 0000000000..fb910bbda6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O","2":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"1":"B","2":"A"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Resource Hints: Lazyload"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js
new file mode 100644
index 0000000000..8da60f151e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","2052":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","194":"0 1 2 3 4 5 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O","322":"0 1 2 h i j k l m n o p q r s t u v w x y z","516":"3 4 5 6 7 8 9 AB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB","1028":"A iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","322":"D M N O h i j k l m n o p","516":"q r s t u v w x"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC","1028":"EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","516":"I"},Q:{"1":"iC"},R:{"516":"jC"},S:{"1":"kC"}},B:6,C:"let"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js
new file mode 100644
index 0000000000..f99f865e03
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D IC JC KC LC MC NC OC PC","130":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC"},H:{"130":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E","130":"A"},K:{"1":"T","130":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"130":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"PNG favicons"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js
new file mode 100644
index 0000000000..f5a2cd74e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P","1537":"Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB oB pB","260":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","513":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","1537":"Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB","2":"0 1 2 3 4 5 G B C D M N O h i j k l m n o p q r s t u v w x y z GB HB IB JB KB LB MB NB T OB PB 2B 3B 4B 5B cB jB 6B dB","1537":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"D IC JC KC LC MC NC OC PC","130":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC"},H:{"130":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E","130":"A"},K:{"2":"T","130":"A B C cB jB dB"},L:{"1537":"H"},M:{"2":"S"},N:{"130":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC","1537":"fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"513":"kC"}},B:1,C:"SVG favicons"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
new file mode 100644
index 0000000000..4e76965a1f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F lB","132":"G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB","260":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"16":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"16":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"16":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"16":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","16":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Resource Hints: dns-prefetch"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
new file mode 100644
index 0000000000..e655f7a6ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I YC ZC aC bC"},Q:{"16":"iC"},R:{"16":"jC"},S:{"2":"kC"}},B:1,C:"Resource Hints: modulepreload"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
new file mode 100644
index 0000000000..5ed25030f1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L","260":"D M N O"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB","2":"0 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","129":"1"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"16":"S"},N:{"2":"A B"},O:{"16":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Resource Hints: preconnect"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
new file mode 100644
index 0000000000..8a6693154d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E"},E:{"2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB","194":"L D yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC","194":"D NC OC PC"},H:{"2":"QC"},I:{"1":"I H VC WC","2":"eB RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Resource Hints: prefetch"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js
new file mode 100644
index 0000000000..4480d882fe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M","1028":"N O"},C:{"1":"W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB oB pB","132":"IB","578":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V"},D:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","322":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","322":"GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Resource Hints: preload"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js
new file mode 100644
index 0000000000..6f7ab6ee9e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"1":"B","2":"A"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"Resource Hints: prerender"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
new file mode 100644
index 0000000000..a0cf9b7131
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB oB pB","132":"YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB","66":"YB ZB"},E:{"1":"1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB","322":"L D yB zB 0B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB","66":"MB NB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC","322":"D NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"132":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"eC fC gC hC","2":"I YC ZC aC bC cC iB dC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"Lazy loading via attribute for images & iframes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js
new file mode 100644
index 0000000000..da55b997eb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","16":"lB","132":"J E F G A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","132":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G B C 2B 3B 4B 5B cB jB 6B","132":"dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","132":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"132":"QC"},I:{"1":"H VC WC","132":"eB I RC SC TC UC kB"},J:{"132":"E A"},K:{"1":"T","16":"A B C cB jB","132":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","132":"A"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","132":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"4":"kC"}},B:6,C:"localeCompare()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js
new file mode 100644
index 0000000000..78b06f0f6a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","194":"KB fB LB gB MB NB T OB PB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"194":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Magnetometer"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js
new file mode 100644
index 0000000000..132025ca72
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","36":"G A B"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","36":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB","36":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","36":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","36":"g J E uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B 2B 3B 4B 5B cB","36":"C D M N O h i jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB","36":"7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H","2":"RC","36":"eB I SC TC UC kB VC WC"},J:{"36":"E A"},K:{"1":"T","2":"A B","36":"C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"36":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","36":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"matches() DOM method"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js
new file mode 100644
index 0000000000..7255e77137
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B C 2B 3B 4B 5B cB jB 6B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"matchMedia"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js
new file mode 100644
index 0000000000..8b736283db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"G A B lB","8":"J E F"},B:{"2":"C K L D M N O","8":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","129":"mB eB oB pB"},D:{"1":"m","8":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H","584":"qB rB sB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","260":"I g J E F G tB hB uB vB wB xB"},F:{"2":"G","4":"B C 2B 3B 4B 5B cB jB 6B dB","8":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB"},H:{"8":"QC"},I:{"8":"eB I H RC SC TC UC kB VC WC"},J:{"1":"A","8":"E"},K:{"8":"A B C T cB jB dB"},L:{"8":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"4":"XC"},P:{"8":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"8":"iC"},R:{"8":"jC"},S:{"1":"kC"}},B:2,C:"MathML"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js
new file mode 100644
index 0000000000..c6696915e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","16":"lB","900":"J E F G"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","1025":"C K L D M N O"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","900":"mB eB oB pB","1025":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"g tB","900":"I hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G","132":"B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D 7B kB 8B 9B AC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB","2052":"F BC"},H:{"132":"QC"},I:{"1":"eB I TC UC kB VC WC","16":"RC SC","4097":"H"},J:{"1":"E A"},K:{"132":"A B C cB jB dB","4097":"T"},L:{"4097":"H"},M:{"4097":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"4097":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1025":"kC"}},B:1,C:"maxlength attribute for input and textarea elements"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js
new file mode 100644
index 0000000000..1031f40ce2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-attribute.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O","16":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v","2":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H","16":"qB rB sB"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"B C D M N O h i j k l m 3B 4B 5B cB jB 6B dB","2":"0 1 2 3 4 5 6 7 8 9 G n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"16":"QC"},I:{"1":"I H UC kB VC WC","16":"eB RC SC TC"},J:{"16":"E A"},K:{"1":"C T dB","16":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"16":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Media attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js
new file mode 100644
index 0000000000..9007ea6170
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","132":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v oB pB","132":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"I g J E F G A B C K L D M N","132":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g tB hB uB","132":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B kB 8B 9B AC","132":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","132":"H VC WC"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","132":"T"},L:{"132":"H"},M:{"132":"S"},N:{"132":"A B"},O:{"2":"XC"},P:{"2":"I YC","132":"ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"132":"kC"}},B:2,C:"Media Fragments"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js
new file mode 100644
index 0000000000..6922395ade
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-session-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB","16":"L D yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Media Session API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
new file mode 100644
index 0000000000..6efca4e903
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","260":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","324":"DB EB FB GB HB IB JB KB fB LB gB"},E:{"2":"I g J E F G A tB hB uB vB wB xB iB","132":"B C K L D cB dB yB zB 0B 1B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB","324":"0 1 2 3 4 5 6 7 8 9 y z"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"260":"S"},N:{"2":"A B"},O:{"132":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I","132":"YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"260":"kC"}},B:5,C:"Media Capture from DOM Elements API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js
new file mode 100644
index 0000000000..1c9fee2063
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"9 AB"},E:{"1":"D zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB","322":"K L dB yB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v 2B 3B 4B 5B cB jB 6B dB","194":"w x"},G:{"1":"D PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC","578":"IC JC KC LC MC NC OC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:5,C:"MediaRecorder API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js
new file mode 100644
index 0000000000..a973cc3c49
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB","66":"0 1 2 3 n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M","33":"l m n o p q r s","66":"N O h i j k"},E:{"1":"F G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC","260":"D KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H WC","2":"eB I RC SC TC UC kB VC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I YC ZC aC bC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Media Source Extensions"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js
new file mode 100644
index 0000000000..2ca7b56a81
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E oB pB","132":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V","450":"W X Y Z a b c d e S f H"},D:{"2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","66":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"9 G B C D M N O h i j k l m n o p q r s t u v w AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","66":"0 1 2 3 4 5 6 7 8 x y z"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"450":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Context menu item (menuitem element)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js
new file mode 100644
index 0000000000..14909d1c77
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","132":"WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","258":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB"},E:{"1":"D 0B 1B","2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB zB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"513":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I","16":"YC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"theme-color Meta Tag"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js
new file mode 100644
index 0000000000..b6ca483992
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G 2B 3B 4B 5B"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"meter element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js
new file mode 100644
index 0000000000..15710d080f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"Web MIDI API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js
new file mode 100644
index 0000000000..9cec5d9082
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","8":"J lB","129":"E","257":"F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"CSS min/max-width/height"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js
new file mode 100644
index 0000000000..499150591c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","132":"I g J E F G A B C K L D M N O h i j oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","2":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"MP3 audio format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js
new file mode 100644
index 0000000000..c6b941e577
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O","2":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","386":"j k"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js
new file mode 100644
index 0000000000..8748441a89
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i oB pB","4":"j k l m n o p q r s t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H VC WC","4":"eB I RC SC UC kB","132":"TC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"260":"S"},N:{"1":"A B"},O:{"4":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"MPEG-4/H.264 video format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js
new file mode 100644
index 0000000000..5aa5f2460a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 Multiple backgrounds"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js
new file mode 100644
index 0000000000..dc0ec91173
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O","516":"P Q R U V W X Y Z a b c d e S f H"},C:{"132":"EB FB GB HB IB JB KB fB LB gB MB NB T","164":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB","516":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c","1028":"d e S f H"},D:{"420":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB","516":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","132":"G xB","164":"E F wB","420":"I g J tB hB uB vB"},F:{"1":"C cB jB 6B dB","2":"G B 2B 3B 4B 5B","420":"D M N O h i j k l m n o p q r s t u v w x y","516":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","132":"CC DC","164":"F AC BC","420":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"420":"eB I RC SC TC UC kB VC WC","516":"H"},J:{"420":"E A"},K:{"1":"C cB jB dB","2":"A B","516":"T"},L:{"516":"H"},M:{"516":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","420":"I"},Q:{"132":"iC"},R:{"132":"jC"},S:{"164":"kC"}},B:4,C:"CSS3 Multiple column layout"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js
new file mode 100644
index 0000000000..11474acc7c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","260":"G A B"},B:{"132":"P Q R U V W X Y Z a b c d e S f H","260":"C K L D M N O"},C:{"2":"mB eB I g oB pB","260":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"16":"I g J E F G A B C K L","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"16":"tB hB","132":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"C 6B dB","2":"G 2B 3B 4B 5B","16":"B cB jB","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"16":"hB 7B","132":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"16":"RC SC","132":"eB I H TC UC kB VC WC"},J:{"132":"E A"},K:{"1":"C dB","2":"A","16":"B cB jB","132":"T"},L:{"132":"H"},M:{"260":"S"},N:{"260":"A B"},O:{"132":"XC"},P:{"132":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"260":"kC"}},B:5,C:"Mutation events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js
new file mode 100644
index 0000000000..708f851783
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F lB","8":"G A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N","33":"O h i j k l m n o"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","33":"9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB RC SC TC","8":"I UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","8":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Mutation Observer"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js
new file mode 100644
index 0000000000..bb6698e62e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","2":"lB","8":"J E"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","4":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Web Storage - name/value pairs"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js
new file mode 100644
index 0000000000..149ab0dd38
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","194":"P Q R U V W","260":"X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB","194":"XB YB ZB aB bB P Q R U V W","260":"X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B","4":"1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB","194":"MB NB T OB PB QB RB SB TB UB","260":"VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"File System Access API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js
new file mode 100644
index 0000000000..2cea9cf7ce
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g","33":"J E F G A B C"},E:{"1":"F G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"I H UC kB VC WC","2":"eB RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Navigation Timing API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js
new file mode 100644
index 0000000000..274ecedc9c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/navigator-language.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"16":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"16":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"16":"iC"},R:{"16":"jC"},S:{"1":"kC"}},B:2,C:"Navigator Language API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js
new file mode 100644
index 0000000000..a834218f13
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","1028":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB","1028":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","1028":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"RC VC WC","132":"eB I SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","132":"I","516":"YC ZC aC"},Q:{"1":"iC"},R:{"516":"jC"},S:{"260":"kC"}},B:7,C:"Network Information API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js
new file mode 100644
index 0000000000..6ef1e649ab
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I","36":"g J E F G A B C K L D M N O h i j"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","36":"H VC WC"},J:{"1":"A","2":"E"},K:{"2":"A B C cB jB dB","36":"T"},L:{"513":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"36":"I","258":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"258":"jC"},S:{"1":"kC"}},B:1,C:"Web Notifications"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js
new file mode 100644
index 0000000000..249e51b143
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","16":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:6,C:"Object.entries"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js
new file mode 100644
index 0000000000..5d72e2fcd5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D","260":"M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB","132":"F G wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G D M N O 2B 3B 4B","33":"B C 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","132":"F BC CC DC"},H:{"33":"QC"},I:{"1":"H WC","2":"eB I RC SC TC UC kB VC"},J:{"2":"E A"},K:{"1":"T","2":"A","33":"B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 object-fit/object-position"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js
new file mode 100644
index 0000000000..f0dd476e7b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"l m n o p q r s t u v w x y","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"I","2":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"Object.observe data binding"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js
new file mode 100644
index 0000000000..1975b30bd1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"8":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"0 1 2 3 4 5 6 7 8 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","8":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","8":"0 1 2 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","8":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"8":"QC"},I:{"1":"H","8":"eB I RC SC TC UC kB VC WC"},J:{"8":"E A"},K:{"1":"T","8":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","8":"I YC"},Q:{"1":"iC"},R:{"8":"jC"},S:{"1":"kC"}},B:6,C:"Object.values method"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js
new file mode 100644
index 0000000000..c232feb7cf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O","2":"C P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E","130":"A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Object RTC (ORTC) API for WebRTC"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js
new file mode 100644
index 0000000000..1491153a75
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"G lB","8":"J E F"},B:{"1":"C K L D M N O P Q R U V","2":"W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U oB pB","2":"V W X Y Z a b c d e S f H","4":"eB","8":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V","2":"W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 5B cB jB 6B dB","2":"G WB XB YB ZB aB bB P Q R 2B","8":"3B 4B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I RC SC TC UC kB VC WC","2":"H"},J:{"1":"E A"},K:{"1":"B C cB jB dB","2":"A T"},L:{"2":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"Offline web applications"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js
new file mode 100644
index 0000000000..4ab6fc0124
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","194":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","322":"KB fB LB gB MB NB T OB PB QB RB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","322":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"194":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:1,C:"OffscreenCanvas"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js
new file mode 100644
index 0000000000..2f2b1dcd6b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB","132":"D zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"A","2":"E"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Ogg Vorbis audio format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js
new file mode 100644
index 0000000000..7b811cc2b6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","8":"G A B"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","8":"C K L D M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"1":"S"},N:{"8":"A B"},O:{"1":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:6,C:"Ogg/Theora video format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js
new file mode 100644
index 0000000000..4ff91563b3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D","16":"M N O h"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B","16":"C"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Reversed attribute of ordered lists"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js
new file mode 100644
index 0000000000..3f69935f9c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D"},C:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB oB pB"},D:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"\"once\" event listener option"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js
new file mode 100644
index 0000000000..a98391c1d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E lB","260":"F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB","516":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B","4":"dB"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"A","132":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Online/offline status"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js
new file mode 100644
index 0000000000..0e3a657d22
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u"},E:{"2":"I g J E F G A tB hB uB vB wB xB iB","132":"B C K L D cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","132":"D GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Opus"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js
new file mode 100644
index 0000000000..5cbecf5204
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB","194":"KB fB LB gB MB NB T OB PB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Orientation Sensor"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js
new file mode 100644
index 0000000000..0a6a4b4ce1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","260":"F","388":"G A B"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B","129":"dB","260":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"C T dB","260":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"388":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS outline properties"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js
new file mode 100644
index 0000000000..084c38f21e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js
new file mode 100644
index 0000000000..1b46c7db35
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"PageTransitionEvent"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js
new file mode 100644
index 0000000000..5932160ab5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G oB pB","33":"A B C K L D M N"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K","33":"L D M N O h i j k l m n o p q r s t u"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B C 2B 3B 4B 5B cB jB 6B","33":"D M N O h"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB","33":"VC WC"},J:{"1":"A","2":"E"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","33":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Page Visibility"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js
new file mode 100644
index 0000000000..c72021097b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"Passive event listeners"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js
new file mode 100644
index 0000000000..3bcbddfc8f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","16":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S oB pB","16":"f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H","16":"qB rB sB"},E:{"1":"C K dB","2":"I g J E F G A B tB hB uB vB wB xB iB cB","16":"L D yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB 2B 3B 4B 5B cB jB 6B dB","16":"FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","16":"H"},J:{"2":"E","16":"A"},K:{"2":"A B C cB jB dB","16":"T"},L:{"16":"H"},M:{"16":"S"},N:{"2":"A","16":"B"},O:{"16":"XC"},P:{"2":"I YC ZC","16":"aC bC cC iB dC eC fC gC hC"},Q:{"16":"iC"},R:{"16":"jC"},S:{"2":"kC"}},B:1,C:"Password Rules"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js
new file mode 100644
index 0000000000..9f6d646acf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K","132":"L D M N O"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB","132":"0 1 2 3 4 5 6 7 8 9 t u v w x y z"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB","132":"F G wB"},F:{"1":"HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","16":"F","132":"BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"132":"XC"},P:{"1":"iB dC eC fC gC hC","132":"I YC ZC aC bC cC"},Q:{"132":"iC"},R:{"132":"jC"},S:{"1":"kC"}},B:1,C:"Path2D"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js
new file mode 100644
index 0000000000..a763cd0de5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K","322":"L","8196":"D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB oB pB","4162":"HB IB JB KB fB LB gB MB NB T OB","16452":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB","194":"FB GB HB IB JB KB","1090":"fB LB","8196":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB","514":"A B iB","8196":"C cB"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"2 3 4 5 6 7 8 9","8196":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB"},G:{"1":"D JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC","514":"EC FC GC","8196":"HC IC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"2049":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"eC fC gC hC","2":"I","8196":"YC ZC aC bC cC iB dC"},Q:{"8196":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Payment Request API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js
new file mode 100644
index 0000000000..b90147c97a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"16":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Built-in PDF viewer"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js
new file mode 100644
index 0000000000..2ee65523de
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:7,C:"Permissions API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js
new file mode 100644
index 0000000000..87708aadc9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","258":"P Q R U V W","322":"X Y","388":"Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB oB pB","258":"XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB","258":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W","322":"X Y","388":"Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B tB hB uB vB wB xB iB","258":"C K L D cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","258":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB","322":"VB WB XB YB ZB aB bB P Q R"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC","258":"D HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","258":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","258":"T"},L:{"388":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC","258":"bC cC iB dC eC fC gC hC"},Q:{"258":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Permissions Policy"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js
new file mode 100644
index 0000000000..e64783b06a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB oB pB","132":"VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","1090":"QB","1412":"UB","1668":"RB SB TB"},D:{"1":"TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB","2114":"SB"},E:{"1":"L D yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB","4100":"A B C K iB cB dB"},F:{"1":"WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y 2B 3B 4B 5B cB jB 6B dB","8196":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB"},G:{"1":"D OC PC","2":"F hB 7B kB 8B 9B AC BC","4100":"CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"16388":"H"},M:{"16388":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Picture-in-Picture"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js
new file mode 100644
index 0000000000..43af9acaf8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v oB pB","578":"w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y","194":"z"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB","322":"m"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Picture element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js
new file mode 100644
index 0000000000..b82302f862
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"2":"mB","194":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"194":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"194":"kC"}},B:1,C:"Ping attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js
new file mode 100644
index 0000000000..dcb236dce4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"E F G A B","2":"lB","8":"J"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"PNG alpha transparency"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js
new file mode 100644
index 0000000000..9d1a595036
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"CSS pointer-events (for HTML)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js
new file mode 100644
index 0000000000..51622718d0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G lB","164":"A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB","8":"0 1 2 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","328":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j","8":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB","584":"EB FB GB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J tB hB uB","8":"E F G A B C vB wB xB iB cB","1096":"dB"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","8":"0 D M N O h i j k l m n o p q r s t u v w x y z","584":"1 2 3"},G:{"1":"D LC MC NC OC PC","8":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC","6148":"KC"},H:{"2":"QC"},I:{"1":"H","8":"eB I RC SC TC UC kB VC WC"},J:{"8":"E A"},K:{"1":"T","2":"A","8":"B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","36":"A"},O:{"8":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"YC","8":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"328":"kC"}},B:2,C:"Pointer events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js
new file mode 100644
index 0000000000..37dfa42583
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K oB pB","33":"0 1 2 L D M N O h i j k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D","33":"k l m n o p q r s t u v w x y","66":"M N O h i j"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j k l"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:2,C:"Pointer Lock API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js
new file mode 100644
index 0000000000..023d7e6174
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V","322":"b c d e S f H","450":"W X Y Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB","194":"YB ZB aB bB P Q R U V","322":"X Y Z a b c d e S f H qB rB sB","450":"W"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB","194":"MB NB T OB PB QB RB SB TB UB VB","322":"WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"450":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Portals"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
new file mode 100644
index 0000000000..8640063077
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB oB pB"},D:{"1":"ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB"},F:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"eC fC gC hC","2":"I YC ZC aC bC cC iB dC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"prefers-color-scheme media query"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
new file mode 100644
index 0000000000..29fcf0dfb1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB oB pB"},D:{"1":"XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"dC eC fC gC hC","2":"I YC ZC aC bC cC iB"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"prefers-reduced-motion media query"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js
new file mode 100644
index 0000000000..4e1b66fac4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-class-fields.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB"},E:{"1":"D zB 0B 1B","2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB"},F:{"1":"MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"dC eC fC gC hC","2":"I YC ZC aC bC cC iB"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Private class fields"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js
new file mode 100644
index 0000000000..c6d2c12215
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/private-methods-and-accessors.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"V W X Y Z a b c d e S f H","2":"C K L D M N O P Q R U"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U"},E:{"1":"D zB 0B 1B","2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB"},F:{"1":"TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Public class fields"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js
new file mode 100644
index 0000000000..4e16839c13
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G 2B 3B 4B 5B"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B","132":"AC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"progress element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js
new file mode 100644
index 0000000000..2acb09f5c1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N"},C:{"1":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB oB pB"},D:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Promise.prototype.finally"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js
new file mode 100644
index 0000000000..e68113e1d0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"8":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","4":"p q","8":"mB eB I g J E F G A B C K L D M N O h i j k l m n o oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"u","8":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","8":"I g J E tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","4":"h","8":"G B C D M N O 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB 8B 9B AC"},H:{"8":"QC"},I:{"1":"H WC","8":"eB I RC SC TC UC kB VC"},J:{"8":"E A"},K:{"1":"T","8":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Promises"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js
new file mode 100644
index 0000000000..591ccb170b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:4,C:"Proximity API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js
new file mode 100644
index 0000000000..babb5608c6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O AB","66":"h i j k l m n o p q r s t u v w x y z"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB","66":"D M N O h i j k l m"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:6,C:"Proxy object"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js
new file mode 100644
index 0000000000..97950044c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/public-class-fields.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB oB pB","4":"TB UB VB WB XB","132":"SB"},D:{"1":"VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB"},E:{"1":"D zB 0B 1B","2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB yB","260":"L"},F:{"1":"LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"dC eC fC gC hC","2":"I YC ZC aC bC cC iB"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Public class fields"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js
new file mode 100644
index 0000000000..5910cfc675
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB","2":"G B C D M N O h PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","4":"l","16":"i j k m"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB","2":"dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"HTTP Public Key Pinning"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js
new file mode 100644
index 0000000000..293e6060d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O","2":"C K L D M","257":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","257":"6 8 9 AB BB CB DB FB GB HB IB JB KB fB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","1281":"7 EB LB"},D:{"2":"0 1 2 3 4 5 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","257":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","388":"6 7 8 9 AB BB"},E:{"2":"I g J E F G tB hB uB vB wB","514":"A B C K L D xB iB cB dB yB zB 0B","2114":"1B"},F:{"2":"G B C D M N O h i j k l m n o p q r s t u v w x y 2B 3B 4B 5B cB jB 6B dB","16":"0 1 2 3 z","257":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"257":"kC"}},B:5,C:"Push API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js
new file mode 100644
index 0000000000..f8414ad98a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"lB","8":"J E","132":"F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","8":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","8":"G 2B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"querySelector/querySelectorAll"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js
new file mode 100644
index 0000000000..73a1cafb57
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","16":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L D M N O h i j k l m n"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G 2B","132":"B C 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B 9B"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T","132":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"257":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"readonly attribute of input and textarea elements"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js
new file mode 100644
index 0000000000..d8b887e555
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"P Q R U","132":"C K L D M N O","513":"V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB","513":"Y Z a b c d e S f H"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V","2":"I g J E F G A B C K L D M N O h i","260":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB","513":"W X Y Z a b c d e S f H qB rB sB"},E:{"1":"C cB dB","2":"I g J E tB hB uB vB","132":"F G A B wB xB iB","1025":"K L D yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB","2":"G B C 2B 3B 4B 5B cB jB 6B dB","513":"WB XB YB ZB aB bB P Q R"},G:{"1":"IC JC KC LC","2":"hB 7B kB 8B 9B AC","132":"F BC CC DC EC FC GC HC","1025":"D MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"513":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Referrer Policy"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
new file mode 100644
index 0000000000..ceb9885ff2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","129":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB"},D:{"2":"I g J E F G A B C","129":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B 2B 3B 4B 5B cB jB","129":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E","129":"A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"Custom protocol handling"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js
new file mode 100644
index 0000000000..d965213d26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:1,C:"rel=noopener"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js
new file mode 100644
index 0000000000..70b96c0e2e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","132":"B"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L D"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Link type \"noreferrer\""};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js
new file mode 100644
index 0000000000..7a52e76499
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M","132":"N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r oB pB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB","132":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F tB hB uB vB wB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"132":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I","132":"YC ZC aC bC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:1,C:"relList (DOMTokenList)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js
new file mode 100644
index 0000000000..e6ca5b7bcc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F lB","132":"G A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D 7B kB 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB","260":"8B"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"rem (root em) units"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js
new file mode 100644
index 0000000000..6ad82f7a47
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","33":"B C K L D M N O h i j k","164":"I g J E F G A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G","33":"k l","164":"O h i j","420":"A B C K L D M N"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","33":"9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"requestAnimationFrame"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js
new file mode 100644
index 0000000000..65175a7a52
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB","194":"FB GB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB","322":"L D yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC","322":"D NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"requestIdleCallback"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js
new file mode 100644
index 0000000000..3025a8dd91
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB oB pB"},D:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB","194":"GB HB IB JB KB fB LB gB MB NB"},E:{"1":"L D yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB dB","66":"K"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"3 4 5 6 7 8 9 AB BB CB DB"},G:{"1":"D NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"cC iB dC eC fC gC hC","2":"I YC ZC aC bC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Resize Observer"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js
new file mode 100644
index 0000000000..b521a98216
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB","194":"t u v w"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","260":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Resource Timing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js
new file mode 100644
index 0000000000..4bb8b47562
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"6 7 8"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s 2B 3B 4B 5B cB jB 6B dB","194":"t u v"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Rest parameters"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
new file mode 100644
index 0000000000..bad063cbf7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L","516":"D M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j oB pB","33":"0 1 2 3 4 5 k l m n o p q r s t u v w x y z"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k","33":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 O h i j k l m n o p q r s t u v w x y z"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","130":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"33":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"33":"jC"},S:{"1":"kC"}},B:5,C:"WebRTC Peer-to-peer connections"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js
new file mode 100644
index 0000000000..13711e25d0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"4":"J E F G A B lB"},B:{"4":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I"},E:{"4":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"I tB hB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","8":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"4":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB"},H:{"8":"QC"},I:{"4":"eB I H UC kB VC WC","8":"RC SC TC"},J:{"4":"A","8":"E"},K:{"4":"T","8":"A B C cB jB dB"},L:{"4":"H"},M:{"1":"S"},N:{"4":"A B"},O:{"4":"XC"},P:{"4":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"4":"iC"},R:{"4":"jC"},S:{"1":"kC"}},B:1,C:"Ruby annotation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js
new file mode 100644
index 0000000000..d82e0ceda6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","2":"J E lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t","2":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J uB","2":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","16":"vB","129":"I tB hB"},F:{"1":"G B C D M N O 2B 3B 4B 5B cB jB 6B dB","2":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"7B kB 8B 9B AC","2":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","129":"hB"},H:{"1":"QC"},I:{"1":"eB I RC SC TC UC kB VC","2":"H WC"},J:{"1":"E A"},K:{"1":"A B C cB jB dB","2":"T"},L:{"2":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"display: run-in"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
new file mode 100644
index 0000000000..5f3c4e85ee
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","388":"B"},B:{"1":"O P Q R U V W","2":"C K L D","129":"M N","513":"X Y Z a b c d e S f H"},C:{"1":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB oB pB"},D:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","513":"Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"D zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB cB","2052":"L","3076":"C K dB yB"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB","2":"0 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","513":"UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC","2052":"IC JC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"513":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"16":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:6,C:"'SameSite' cookie attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js
new file mode 100644
index 0000000000..461e0f6be2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","164":"B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","36":"C K L D M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N oB pB","36":"0 1 2 3 4 5 O h i j k l m n o p q r s t u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A","36":"B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","16":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"Screen Orientation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js
new file mode 100644
index 0000000000..a33140ace8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","132":"g"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"async attribute for external scripts"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js
new file mode 100644
index 0000000000..27a8440b36
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","132":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","257":"I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"defer attribute for external scripts"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js
new file mode 100644
index 0000000000..b014692919
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","132":"F G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","132":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x oB pB"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB"},E:{"1":"1B","2":"I g tB hB","132":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B 3B 4B 5B","16":"B cB jB","132":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z 6B dB"},G:{"16":"hB 7B kB","132":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","16":"RC SC","132":"eB I TC UC kB VC WC"},J:{"132":"E A"},K:{"1":"T","132":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"132":"XC"},P:{"132":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"132":"jC"},S:{"1":"kC"}},B:5,C:"scrollIntoView"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
new file mode 100644
index 0000000000..f0b9ed623b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"Element.scrollIntoViewIfNeeded()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js
new file mode 100644
index 0000000000..eb9bd5ec2e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","2":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB","2":"G B C WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js
new file mode 100644
index 0000000000..189835a3d9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","16":"lB","260":"J E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"0 1 2 3 4 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","2180":"5 6 7 8 9 AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","132":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"16":"kB","132":"hB 7B","516":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H VC WC","16":"eB I RC SC TC UC","1025":"kB"},J:{"1":"A","16":"E"},K:{"1":"T","16":"A B C cB jB","132":"dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","16":"A"},O:{"1025":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2180":"kC"}},B:5,C:"Selection API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js
new file mode 100644
index 0000000000..c403c63b6c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB oB pB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB","196":"LB gB MB NB","324":"T"},E:{"2":"I g J E F G A B C tB hB uB vB wB xB iB cB","516":"K L D dB yB zB 0B 1B"},F:{"1":"EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Server Timing"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js
new file mode 100644
index 0000000000..081bf72131
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L","322":"D M"},C:{"1":"6 8 9 AB BB CB DB FB GB HB IB JB KB fB gB MB NB T OB PB QB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB","194":"0 1 2 3 4 5 v w x y z","513":"7 EB LB RB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","4":"2 3 4 5 6"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E F G A B tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o 2B 3B 4B 5B cB jB 6B dB","4":"p q r s t"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","4":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","4":"T"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"4":"jC"},S:{"2":"kC"}},B:4,C:"Service Workers"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js
new file mode 100644
index 0000000000..3956c59e1d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O","2":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"1":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Efficient Script Yielding: setImmediate()"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js
new file mode 100644
index 0000000000..939e336825
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sha-2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","2":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"1":"eB I H SC TC UC kB VC WC","260":"RC"},J:{"1":"E A"},K:{"1":"T","16":"A B C cB jB dB"},L:{"1":"H"},M:{"16":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","16":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"SHA-2 SSL certificates"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js
new file mode 100644
index 0000000000..c42911c63e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P","2":"C K L D M N O Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","66":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","2":"I g J E F G A B C K L D M N O h i j k l m Q R U V W X Y Z a b c d e S f H qB rB sB","33":"n o p q r s t u v w"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB","2":"G B C QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB","33":"VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC","2":"fC gC hC","33":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:7,C:"Shadow DOM (deprecated V0 spec)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js
new file mode 100644
index 0000000000..e7df9e160d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB oB pB","322":"KB","578":"fB LB gB MB"},D:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB"},E:{"1":"A B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC","132":"EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I","4":"YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Shadow DOM (V1)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
new file mode 100644
index 0000000000..7b5c9c9ddc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D","194":"M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB oB pB","194":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB","450":"XB YB ZB aB bB","513":"P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB","194":"LB gB MB NB T OB PB QB","513":"c d e S f H qB rB sB"},E:{"2":"I g J E F G A tB hB uB vB wB xB","194":"B C K L D iB cB dB yB zB 0B","513":"1B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","194":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC","194":"D FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"513":"H"},M:{"513":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Shared Array Buffer"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js
new file mode 100644
index 0000000000..c7d896ae67
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"g J uB","2":"I E F G A B C K L D tB hB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","2":"G 2B 3B 4B"},G:{"1":"8B 9B","2":"F D hB 7B kB AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"B C cB jB dB","2":"T","16":"A"},L:{"2":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"I","2":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:1,C:"Shared Web Workers"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js
new file mode 100644
index 0000000000..beba615e82
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J lB","132":"E F"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB"},H:{"1":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Server Name Indication"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js
new file mode 100644
index 0000000000..c107020263
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G A lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","2":"mB eB I g J E F G A B C DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","2":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"F G A B C xB iB cB","2":"I g J E tB hB uB vB wB","129":"K L D dB yB zB 0B 1B"},F:{"1":"0 1 4 6 D M N O h i j k l m n o p q r s t u v w x y z dB","2":"2 3 5 7 8 9 G B C AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B"},G:{"1":"F BC CC DC EC FC GC HC IC","2":"hB 7B kB 8B 9B AC","257":"D JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I UC kB VC WC","2":"H RC SC TC"},J:{"2":"E A"},K:{"1":"dB","2":"A B C T cB jB"},L:{"2":"H"},M:{"2":"S"},N:{"1":"B","2":"A"},O:{"2":"XC"},P:{"1":"I","2":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"16":"jC"},S:{"1":"kC"}},B:7,C:"SPDY protocol"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js
new file mode 100644
index 0000000000..b541382b3c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","1026":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j oB pB","322":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"I g J E F G A B C K L D M N O h i j k l m","164":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L tB hB uB vB wB xB iB cB dB yB","2084":"D zB 0B 1B"},F:{"2":"G B C D M N O h i j k l m n o 2B 3B 4B 5B cB jB 6B dB","1026":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC","2084":"D PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"164":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"164":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"164":"iC"},R:{"164":"jC"},S:{"322":"kC"}},B:7,C:"Speech Recognition API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js
new file mode 100644
index 0000000000..15a2ec8df0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O","2":"C K","257":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s oB pB","194":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u","257":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","2":"G B C D M N O h i j k l m n o 2B 3B 4B 5B cB jB 6B dB","257":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:7,C:"Speech Synthesis API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
new file mode 100644
index 0000000000..24f13518f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"4":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"4":"QC"},I:{"4":"eB I H RC SC TC UC kB VC WC"},J:{"1":"A","4":"E"},K:{"4":"A B C T cB jB dB"},L:{"4":"H"},M:{"4":"S"},N:{"4":"A B"},O:{"4":"XC"},P:{"4":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"4":"jC"},S:{"2":"kC"}},B:1,C:"Spellcheck attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js
new file mode 100644
index 0000000000..da9c2b4fdc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C tB hB uB vB wB xB iB cB dB","2":"K L D yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC","2":"D KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:7,C:"Web SQL Database"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js
new file mode 100644
index 0000000000..d358e47353
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","260":"C","514":"K L D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t oB pB","194":"u v w x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v","260":"w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB vB","260":"F wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i 2B 3B 4B 5B cB jB 6B dB","260":"j k l m"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","260":"F BC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Srcset and sizes attributes"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js
new file mode 100644
index 0000000000..fb1ffdbf59
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M oB pB","129":"0 1 2 3 y z","420":"N O h i j k l m n o p q r s t u v w x"},D:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i","420":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B D M N 2B 3B 4B 5B cB jB 6B","420":"0 1 C O h i j k l m n o p q r s t u v w x y z dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","513":"D NC OC PC","1537":"GC HC IC JC KC LC MC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","420":"A"},K:{"1":"T","2":"A B cB jB","420":"C dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","420":"I YC"},Q:{"1":"iC"},R:{"420":"jC"},S:{"2":"kC"}},B:4,C:"getUserMedia/Stream API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js
new file mode 100644
index 0000000000..7bdadecdc7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","130":"B"},B:{"1":"a b c d e S f H","16":"C K","260":"L D","1028":"P Q R U V W X Y Z","5124":"M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB oB pB","6148":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","6722":"JB KB fB LB gB MB NB T"},D:{"1":"a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB","260":"EB FB GB HB IB JB KB","1028":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z"},E:{"2":"I g J E F G tB hB uB vB wB xB","1028":"D zB 0B 1B","3076":"A B C K L iB cB dB yB"},F:{"1":"ZB aB bB P Q R","2":"0 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","260":"1 2 3 4 5 6 7","1028":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC","16":"EC","1028":"D FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"6148":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"hC","2":"I YC ZC","1028":"aC bC cC iB dC eC fC gC"},Q:{"1028":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"Streams"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
new file mode 100644
index 0000000000..561fbe130a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A lB","129":"B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Strict Transport Security"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js
new file mode 100644
index 0000000000..da70686a7a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB","2":"mB eB I g J E F G A B C K L D M N O h i gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","322":"HB IB JB KB fB LB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","194":"i j k l m n o p q r s t u v w x y"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:7,C:"Scoped CSS"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js
new file mode 100644
index 0000000000..5420d8c8f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","194":"GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Subresource Integrity"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js
new file mode 100644
index 0000000000..a96cd692dd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","516":"C K L D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","260":"I g J E F G A B C K L D M N O h i j k l"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"I"},E:{"1":"g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB","132":"I hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","132":"hB 7B"},H:{"260":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"T","260":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"SVG in CSS backgrounds"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js
new file mode 100644
index 0000000000..60ec8f8854
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I","4":"g J E"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B"},H:{"1":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"SVG filters"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js
new file mode 100644
index 0000000000..7d98e4dd65
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"G A B lB","8":"J E F"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","2":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","130":"0 1 2 3 4 5 6 7 8 9 AB BB CB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB"},F:{"1":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB","2":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","130":"n o p q r s t u v w x y"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"258":"QC"},I:{"1":"eB I UC kB VC WC","2":"H RC SC TC"},J:{"1":"E A"},K:{"1":"A B C cB jB dB","2":"T"},L:{"130":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"I","130":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"130":"jC"},S:{"2":"kC"}},B:2,C:"SVG fonts"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js
new file mode 100644
index 0000000000..298cbd5684
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","260":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB"},E:{"1":"C K L D cB dB yB zB 0B 1B","2":"I g J E G A B tB hB uB vB xB iB","132":"F wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"D M N O h i j k","4":"B C 3B 4B 5B cB jB 6B","16":"G 2B","132":"l m n o p q r s t u v w x y"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC CC DC EC FC GC","132":"F BC"},H:{"1":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E","132":"A"},K:{"1":"T dB","4":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","132":"I"},Q:{"1":"iC"},R:{"132":"jC"},S:{"1":"kC"}},B:4,C:"SVG fragment identifiers"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js
new file mode 100644
index 0000000000..e2914c7dae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","388":"G A B"},B:{"4":"P Q R U V W X Y Z a b c d e S f H","260":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB","4":"eB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"tB hB","4":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"4":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"4":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","4":"H VC WC"},J:{"1":"A","2":"E"},K:{"4":"A B C T cB jB dB"},L:{"4":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"4":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"4":"iC"},R:{"4":"jC"},S:{"1":"kC"}},B:2,C:"SVG effects for HTML"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js
new file mode 100644
index 0000000000..2f3242a32a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F","129":"G A B"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","129":"C K L D M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","8":"I g J"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","8":"I g tB hB","129":"J E F uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"B 5B cB jB","8":"G 2B 3B 4B"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","8":"hB 7B kB","129":"F 8B 9B AC BC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"RC SC TC","129":"eB I UC kB"},J:{"1":"A","129":"E"},K:{"1":"C T dB","8":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"129":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Inline SVG in HTML5"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js
new file mode 100644
index 0000000000..cc28eb2090
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l m n o p"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"tB","4":"hB","132":"I g J E F uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","132":"F hB 7B kB 8B 9B AC BC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"RC SC TC","132":"eB I UC kB"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"SVG in HTML img element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js
new file mode 100644
index 0000000000..551405cf0c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","8":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"I"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","8":"tB hB","132":"I g uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","132":"hB 7B kB 8B"},H:{"2":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"SVG SMIL animation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js
new file mode 100644
index 0000000000..a5cb6d9678
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F","772":"G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","513":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","4":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","4":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"H VC WC","2":"RC SC TC","132":"eB I UC kB"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"257":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"SVG (basic support)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js
new file mode 100644
index 0000000000..c40496d3d8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB","132":"UB VB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"16":"XC"},P:{"1":"dC eC fC gC hC","2":"I YC ZC aC bC cC iB"},Q:{"16":"iC"},R:{"16":"jC"},S:{"2":"kC"}},B:6,C:"Signed HTTP Exchanges (SXG)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js
new file mode 100644
index 0000000000..e829ac475e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"E F G A B","16":"J lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"16":"mB eB oB pB","129":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"16":"I g tB hB","257":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"769":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"16":"eB I H RC SC TC UC kB VC WC"},J:{"16":"E A"},K:{"16":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"16":"A B"},O:{"16":"XC"},P:{"16":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"16":"jC"},S:{"129":"kC"}},B:1,C:"tabindex global attribute"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js
new file mode 100644
index 0000000000..b3609d291f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"K L D M N O P Q R U V W X Y Z a b c d e S f H","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v oB pB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"A B K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB","129":"C"},F:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D CC DC EC FC GC HC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC","129":"IC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ES6 Template Literals (Template Strings)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js
new file mode 100644
index 0000000000..d01cca7ea9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"D M N O P Q R U V W X Y Z a b c d e S f H","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n","132":"o p q r s t u v w"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E tB hB uB","388":"F wB","514":"vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","132":"D M N O h i j"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC","388":"F BC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"HTML templates"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js
new file mode 100644
index 0000000000..3e058627ea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"Temporal"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js
new file mode 100644
index 0000000000..5bc80f5c39
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F A B lB","16":"G"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","16":"I g"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"B C"},E:{"2":"I J tB hB uB","16":"g E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B jB 6B dB","16":"cB"},G:{"2":"hB 7B kB 8B 9B","16":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC UC kB VC WC","16":"TC"},J:{"2":"A","16":"E"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Test feature - updated"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js
new file mode 100644
index 0000000000..98040b1196
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","2052":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g oB pB","1028":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","1060":"J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x"},D:{"2":"I g J E F G A B C K L D M N O h i j k l m n","226":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB","2052":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E tB hB uB vB","772":"K L D dB yB zB 0B 1B","804":"F G A B C xB iB cB","1316":"wB"},F:{"2":"G B C D M N O h i j k l m n o p q r s t u v w 2B 3B 4B 5B cB jB 6B dB","226":"0 1 2 3 4 5 x y z","2052":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"hB 7B kB 8B 9B AC","292":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"2052":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2052":"XC"},P:{"2":"I YC ZC","2052":"aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"1":"jC"},S:{"1028":"kC"}},B:4,C:"text-decoration styling"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js
new file mode 100644
index 0000000000..dea8496201
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","164":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","322":"7"},D:{"2":"I g J E F G A B C K L D M N O h i j k l m","164":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB","164":"E vB"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","164":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB","164":"H VC WC"},J:{"2":"E","164":"A"},K:{"2":"A B C cB jB dB","164":"T"},L:{"164":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"164":"XC"},P:{"164":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"164":"iC"},R:{"164":"jC"},S:{"1":"kC"}},B:4,C:"text-emphasis styling"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js
new file mode 100644
index 0000000000..756b6b873f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B","2":"lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","8":"mB eB I g J oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","33":"G 2B 3B 4B 5B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"T dB","33":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 Text-overflow"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js
new file mode 100644
index 0000000000..bf796cc904
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","33":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n p q r s t u v w x y z AB BB CB DB EB FB","258":"o"},E:{"2":"I g J E F G A B C K L D tB hB vB wB xB iB cB dB yB zB 0B 1B","258":"uB"},F:{"1":"5 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 6 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"hB 7B kB","33":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"33":"S"},N:{"161":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS text-size-adjust"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js
new file mode 100644
index 0000000000..7bfe618b10
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L","33":"P Q R U V W X Y Z a b c d e S f H","161":"D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","161":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","450":"AB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"33":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"33":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","36":"hB"},H:{"2":"QC"},I:{"2":"eB","33":"I H RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"2":"A B C cB jB dB","33":"T"},L:{"33":"H"},M:{"161":"S"},N:{"2":"A B"},O:{"33":"XC"},P:{"33":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"33":"iC"},R:{"33":"jC"},S:{"161":"kC"}},B:7,C:"CSS text-stroke and text-fill"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js
new file mode 100644
index 0000000000..181488cf05
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-underline-offset.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB oB pB","130":"SB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"K L D dB yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"text-underline-offset"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js
new file mode 100644
index 0000000000..bd3f4aed97
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"1":"F D 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Node.textContent"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js
new file mode 100644
index 0000000000..9ae5a3c414
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O oB pB","132":"h"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"TextEncoder & TextDecoder"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js
new file mode 100644
index 0000000000..17c14cbf8f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E lB","66":"F G A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB","2":"mB eB I g J E F G A B C K L D M N O h i j k oB pB","66":"l","129":"RB SB TB UB VB WB XB YB ZB aB","388":"bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V","2":"I g J E F G A B C K L D M N O h i j","1540":"W X Y Z a b c d e S f H qB rB sB"},E:{"1":"E F G A B C K wB xB iB cB dB","2":"I g J tB hB uB vB","513":"L D yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB dB","2":"G B C 2B 3B 4B 5B cB jB 6B","1540":"WB XB YB ZB aB bB P Q R"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"1":"A","2":"E"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"129":"S"},N:{"1":"B","66":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"TLS 1.1"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js
new file mode 100644
index 0000000000..8fc80afeee
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E lB","66":"F G A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l oB pB","66":"m n o"},D:{"1":"0 1 2 3 4 5 6 7 8 9 r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G D 2B","66":"B C 3B 4B 5B cB jB 6B dB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"1":"A","2":"E"},K:{"1":"T dB","2":"A B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","66":"A"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"TLS 1.2"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js
new file mode 100644
index 0000000000..e621da5c63
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB oB pB","132":"LB gB MB","450":"DB EB FB GB HB IB JB KB fB"},D:{"1":"TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB","706":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB"},E:{"1":"L D zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB","1028":"K dB yB"},F:{"1":"JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB","706":"GB HB IB"},G:{"1":"D JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"iB dC eC fC gC hC","2":"I YC ZC aC bC cC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:6,C:"TLS 1.3"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js
new file mode 100644
index 0000000000..32b0955faf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/token-binding.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L","194":"P Q R U V W X Y Z a b c d e S f H","257":"D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S oB pB","16":"f H"},D:{"2":"0 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","16":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB","194":"KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F tB hB uB vB wB","16":"G A B C K L D xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB","16":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F hB 7B kB 8B 9B AC BC","16":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"16":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","16":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","16":"T"},L:{"16":"H"},M:{"16":"S"},N:{"2":"A","16":"B"},O:{"16":"XC"},P:{"16":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"16":"iC"},R:{"16":"jC"},S:{"2":"kC"}},B:6,C:"Token Binding"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js
new file mode 100644
index 0000000000..9384c179f7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","8":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","578":"C K L D M N O"},C:{"1":"O h i j k l m EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","4":"I g J E F G A B C K L D M N","194":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A","260":"B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:2,C:"Touch events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js
new file mode 100644
index 0000000000..c21abd5b2e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F","129":"A B","161":"G"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","129":"C K L D M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","33":"I g J E F G A B C K L D oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","33":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G 2B 3B","33":"B C D M N O h i j k 4B 5B cB jB 6B"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","33":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","33":"eB I RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"CSS3 2D Transforms"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js
new file mode 100644
index 0000000000..5d7f9bb35c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G oB pB","33":"A B C K L D"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B","33":"C K L D M N O h i j k l m n o p q r s t u v w x"},E:{"1":"1B","2":"tB hB","33":"I g J E F uB vB wB","257":"G A B C K L D xB iB cB dB yB zB 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"D M N O h i j k"},G:{"33":"F hB 7B kB 8B 9B AC BC","257":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"RC SC TC","33":"eB I UC kB VC WC"},J:{"33":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS3 3D Transforms"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js
new file mode 100644
index 0000000000..a06375279b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"U V W X Y Z a b c d e S f H","2":"C K L D M N O P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"fC gC hC","2":"I YC ZC aC bC cC iB dC eC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Trusted Types for DOM manipulation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js
new file mode 100644
index 0000000000..604f5568df
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","132":"G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 3B 4B 5B cB jB 6B dB","2":"G 2B"},G:{"1":"F D kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B"},H:{"2":"QC"},I:{"1":"eB I H SC TC UC kB VC WC","2":"RC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"TTF/OTF - TrueType and OpenType font support"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js
new file mode 100644
index 0000000000..d42c714746
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"B","2":"J E F G lB","132":"A"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB","260":"uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B","260":"kB"},H:{"1":"QC"},I:{"1":"I H UC kB VC WC","2":"eB RC SC TC"},J:{"1":"A","2":"E"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Typed Arrays"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js
new file mode 100644
index 0000000000..c3656f907e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","513":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","322":"9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB"},D:{"2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","130":"0 1 2","513":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB dB"},F:{"2":"0 1 3 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","513":"2 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"D MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"322":"kC"}},B:6,C:"FIDO U2F API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js
new file mode 100644
index 0000000000..e0267d6dcf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB oB pB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","16":"GC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:1,C:"unhandledrejection/rejectionhandled events"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
new file mode 100644
index 0000000000..c0fe73f934
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Upgrade Insecure Requests"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
new file mode 100644
index 0000000000..73e427383a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"U V W X Y Z a b c d e S f H","2":"C K L D M N O","66":"P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB","66":"XB YB ZB aB bB P Q"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB 2B 3B 4B 5B cB jB 6B dB","66":"PB QB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"fC gC hC","2":"I YC ZC aC bC cC iB dC eC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"URL Scroll-To-Text Fragment"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js
new file mode 100644
index 0000000000..6600cf4213
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k","130":"l m n o p q r s t"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB vB","130":"E"},F:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","130":"D M N O"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B","130":"AC"},H:{"2":"QC"},I:{"1":"H WC","2":"eB I RC SC TC UC kB","130":"VC"},J:{"2":"E","130":"A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"URL API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js
new file mode 100644
index 0000000000..b788895b8a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB","132":"0 1 2 3 4 5 r s t u v w x y z"},D:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB"},E:{"1":"B C K L D iB cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","2":"I"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:1,C:"URLSearchParams"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js
new file mode 100644
index 0000000000..e3b4c09d4c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","132":"g uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"1":"QC"},I:{"1":"eB I H UC kB VC WC","2":"RC SC TC"},J:{"1":"E A"},K:{"1":"C T jB dB","2":"A B cB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"ECMAScript 5 Strict Mode"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js
new file mode 100644
index 0000000000..0ab4ba1b5a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","33":"A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","33":"C K L D M N O"},C:{"1":"SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","33":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB oB pB"},D:{"1":"GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","33":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB"},E:{"33":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","33":"0 1 2 D M N O h i j k l m n o p q r s t u v w x y z"},G:{"33":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","33":"eB I RC SC TC UC kB VC WC"},J:{"33":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"33":"A B"},O:{"2":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","33":"I YC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"33":"kC"}},B:5,C:"CSS user-select: none"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js
new file mode 100644
index 0000000000..41bdf94897
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"User Timing API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js
new file mode 100644
index 0000000000..a4bbee0fa3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"N O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB oB pB","4609":"MB NB T OB PB QB RB SB TB","4674":"gB","5698":"LB","7490":"FB GB HB IB JB","7746":"KB fB","8705":"UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB","4097":"PB","4290":"fB LB gB","6148":"MB NB T OB"},E:{"1":"D 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","4609":"B C cB dB","8193":"K L yB zB"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB 2B 3B 4B 5B cB jB 6B dB","4097":"FB","6148":"BB CB DB EB"},G:{"1":"D KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","4097":"GC HC IC JC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"4097":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC","4097":"bC cC iB dC eC fC gC hC"},Q:{"4097":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"Variable fonts"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js
new file mode 100644
index 0000000000..e268954ebc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","2":"G B 2B 3B 4B 5B cB jB"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"1":"QC"},I:{"1":"H VC WC","16":"eB I RC SC TC UC kB"},J:{"16":"E A"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"SVG vector-effect: non-scaling-stroke"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js
new file mode 100644
index 0000000000..5a57f4c339
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A oB pB","33":"B C K L D"},D:{"1":"0 1 2 3 4 5 6 7 8 9 s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"Vibration API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js
new file mode 100644
index 0000000000..111a211d9a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","260":"I g J E F G A B C K L D M N O h oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A uB vB wB xB iB","2":"tB hB","513":"B C K L D cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F hB 7B kB 8B 9B AC BC CC DC EC FC","513":"D GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","132":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Video element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js
new file mode 100644
index 0000000000..ee4f8c024f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O","322":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB","194":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","322":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g J tB hB uB"},F:{"2":"G B C D M N O h i j k l m n o p q r s t 2B 3B 4B 5B cB jB 6B dB","322":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"322":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:1,C:"Video Tracks"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js
new file mode 100644
index 0000000000..5ee925e11c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"1B","2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Large, Small, and Dynamic viewport units"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js
new file mode 100644
index 0000000000..8d51442035
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","132":"G","260":"A B"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","260":"C K L D"},C:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h","260":"i j k l m n"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB","260":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B","516":"AC","772":"9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"260":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"Viewport units: vw, vh, vmin, vmax"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js
new file mode 100644
index 0000000000..1c730b2806
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","4":"F G A B"},B:{"4":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"4":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"tB hB","4":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G","4":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"4":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"4":"QC"},I:{"2":"eB I RC SC TC UC kB","4":"H VC WC"},J:{"2":"E A"},K:{"4":"A B C T cB jB dB"},L:{"4":"H"},M:{"4":"S"},N:{"4":"A B"},O:{"2":"XC"},P:{"4":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"4":"iC"},R:{"4":"jC"},S:{"4":"kC"}},B:2,C:"WAI-ARIA Accessibility features"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js
new file mode 100644
index 0000000000..6bfecd7ca9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"b c d e S f H","2":"C K L D M N O","194":"P Q R U V W X Y Z a"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB","194":"UB VB WB XB YB ZB aB bB P Q R U V"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB 2B 3B 4B 5B cB jB 6B dB","194":"KB LB MB NB T OB PB QB RB SB TB UB VB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"gC hC","2":"I YC ZC aC bC cC iB dC eC fC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:4,C:"Screen Wake Lock API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js
new file mode 100644
index 0000000000..ef83a5137d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"M N O P Q R U V W X Y Z a b c d e S f H","2":"C K L","578":"D"},C:{"1":"FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB","194":"9 AB BB CB DB","1025":"EB"},D:{"1":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB","322":"DB EB FB GB HB IB"},E:{"1":"B C K L D cB dB yB zB 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","322":"0 1 2 3 4 5"},G:{"1":"D GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"194":"kC"}},B:6,C:"WebAssembly"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js
new file mode 100644
index 0000000000..79b9f9caca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 4B 5B cB jB 6B dB","2":"G 2B 3B"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","16":"A"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"Wav audio format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js
new file mode 100644
index 0000000000..fc70c31d44
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E lB","2":"F G A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D hB uB vB wB xB iB cB dB yB zB 0B 1B","16":"tB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","16":"G"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB"},H:{"1":"QC"},I:{"1":"eB I H TC UC kB VC WC","16":"RC SC"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"wbr (word break opportunity) element"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js
new file mode 100644
index 0000000000..10530a2e27
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"V W X Y Z a b c d e S f H","2":"C K L D M N O","260":"P Q R U"},C:{"1":"R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u oB pB","260":"fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB","516":"9 AB BB CB DB EB FB GB HB IB JB KB","580":"0 1 2 3 4 5 6 7 8 v w x y z","2049":"YB ZB aB bB P Q"},D:{"1":"V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x","132":"0 y z","260":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U"},E:{"1":"D 0B 1B","2":"I g J E F G A tB hB uB vB wB xB iB","1090":"B C K cB dB","2049":"L yB zB"},F:{"1":"UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k 2B 3B 4B 5B cB jB 6B dB","132":"l m n","260":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC","1090":"GC HC IC JC KC LC MC","2049":"D NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"260":"XC"},P:{"260":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"260":"iC"},R:{"260":"jC"},S:{"516":"kC"}},B:5,C:"Web Animations API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js
new file mode 100644
index 0000000000..b3b7728ee6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB X Y Z a b c d e S f H oB pB","578":"ZB aB bB P Q R nB U V W"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC","260":"D HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"2":"kC"}},B:5,C:"Add to home screen (A2HS)"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js
new file mode 100644
index 0000000000..5ea63c9684
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","1025":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","194":"7 8 9 AB BB CB DB EB","706":"FB GB HB","1025":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C D M N O h i j k l m n o p q r s t u v w x 2B 3B 4B 5B cB jB 6B dB","450":"0 1 y z","706":"2 3 4","1025":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC WC","1025":"H"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","1025":"T"},L:{"1025":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"ZC aC bC cC iB dC eC fC gC hC","2":"I YC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Web Bluetooth"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js
new file mode 100644
index 0000000000..f3d846aecf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"a b c d e S f H","2":"C K L D M N O","66":"P Q R U V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB","66":"bB P Q R U V W X Y Z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T 2B 3B 4B 5B cB jB 6B dB","66":"OB PB QB RB SB TB UB VB WB XB YB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Web Serial API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js
new file mode 100644
index 0000000000..e770cf8dce
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P Q","516":"R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z","130":"O h i j k l m","1028":"a b c d e S f H qB rB sB"},E:{"1":"L D zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB","2049":"K dB yB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC","2049":"JC KC LC MC NC"},H:{"2":"QC"},I:{"2":"eB I RC SC TC UC kB VC","258":"H WC"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","258":"T"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I","258":"YC ZC aC"},Q:{"2":"iC"},R:{"16":"jC"},S:{"2":"kC"}},B:5,C:"Web Share API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js
new file mode 100644
index 0000000000..975de39ab3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","2":"C","226":"K L D M N"},C:{"1":"LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB oB pB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB"},E:{"1":"K L D yB zB 0B 1B","2":"I g J E F G A B C tB hB uB vB wB xB iB cB","322":"dB"},F:{"1":"GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC","578":"LC","2052":"OC","3076":"MC NC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:2,C:"Web Authentication API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js
new file mode 100644
index 0000000000..26e73f6c39
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"lB","8":"J E F G A","129":"B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","129":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","129":"I g J E F G A B C K L D M N O h i j k l"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E","129":"F G A B C K L D M N O h i j k l m n o p q r s t u"},E:{"1":"F G A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g tB hB","129":"J E uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B 2B 3B 4B 5B cB jB 6B","129":"C D M N O dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B AC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"1":"A","2":"E"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A","129":"B"},O:{"129":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"129":"kC"}},B:6,C:"WebGL - 3D Canvas graphics"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js
new file mode 100644
index 0000000000..0dc3a19476
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m oB pB","194":"4 5 6","450":"0 1 2 3 n o p q r s t u v w x y z","2242":"7 8 9 AB BB CB"},D:{"1":"IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z","578":"5 6 7 8 9 AB BB CB DB EB FB GB HB"},E:{"1":"D 0B 1B","2":"I g J E F G A tB hB uB vB wB xB","1090":"B C K L iB cB dB yB zB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 3 4 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC","1090":"IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"aC bC cC iB dC eC fC gC hC","2":"I YC ZC"},Q:{"578":"iC"},R:{"2":"jC"},S:{"2242":"kC"}},B:6,C:"WebGL 2.0"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js
new file mode 100644
index 0000000000..efe50da241
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P","578":"Q R U V W X Y Z a b c d e","1602":"S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB oB pB","194":"NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P","578":"Q R U V W X Y Z a b c d e","1602":"S f H qB rB sB"},E:{"2":"I g J E F G A B tB hB uB vB wB xB iB","322":"C K L D cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB 2B 3B 4B 5B cB jB 6B dB","578":"WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"194":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"WebGPU"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js
new file mode 100644
index 0000000000..26bc1a2f9b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"a b c d e S f H","2":"C K L D M N O","66":"P Q R U V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB","66":"bB P Q R U V W X Y Z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"ZB aB bB P Q R","2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB 2B 3B 4B 5B cB jB 6B dB","66":"PB QB RB SB TB UB VB WB XB YB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"WebHID API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js
new file mode 100644
index 0000000000..fb088a72a7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","132":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"16":"I g J E F G A B C K L D","132":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"G B C 2B 3B 4B 5B cB jB 6B dB","132":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"CSS -webkit-user-drag property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js
new file mode 100644
index 0000000000..9985ca93b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F lB","520":"G A B"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","8":"C K","388":"L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","132":"I g J E F G A B C K L D M N O h i j k l m n o p"},D:{"1":"0 1 2 3 4 5 6 7 8 9 n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g","132":"J E F G A B C K L D M N O h i j k l m"},E:{"2":"tB","8":"I g hB uB","520":"J E F G A B C vB wB xB iB cB","1028":"K dB yB","7172":"L","8196":"D zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B 3B 4B","132":"B C D 5B cB jB 6B dB"},G:{"2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC","1028":"JC KC LC MC NC","3076":"D OC PC"},H:{"2":"QC"},I:{"1":"H","2":"RC SC","132":"eB I TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"8":"A B"},O:{"1":"XC"},P:{"1":"YC ZC aC bC cC iB dC eC fC gC hC","132":"I"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:6,C:"WebM video format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js
new file mode 100644
index 0000000000..35bd1a838e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O P a b c d e S f H","450":"Q R U V W X Y Z"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P a b c d e S f H qB rB sB","450":"Q R U V W X Y Z"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB 2B 3B 4B 5B cB jB 6B dB","450":"QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"257":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"Web NFC"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js
new file mode 100644
index 0000000000..ee6d1c4715
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","8":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T"},D:{"1":"0 1 2 3 4 5 6 7 8 9 u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g","8":"J E F","132":"G A B C K L D M N O h i j k","260":"l m n o p q r s t"},E:{"2":"I g J E F G A B C K tB hB uB vB wB xB iB cB dB yB","516":"L D zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G 2B 3B 4B","8":"B 5B","132":"cB jB 6B","260":"C D M N O dB"},G:{"1":"D OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC"},H:{"1":"QC"},I:{"1":"H kB VC WC","2":"eB RC SC TC","132":"I UC"},J:{"2":"E A"},K:{"1":"C T cB jB dB","2":"A","132":"B"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"8":"kC"}},B:7,C:"WebP image format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js
new file mode 100644
index 0000000000..ff7b0e340e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB oB pB","132":"I g","292":"J E F G A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L","260":"D"},E:{"1":"E F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","132":"g uB","260":"J vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G 2B 3B 4B 5B","132":"B C cB jB 6B"},G:{"1":"F D 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B","132":"kB 8B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","129":"E"},K:{"1":"T dB","2":"A","132":"B C cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Web Sockets"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js
new file mode 100644
index 0000000000..a7ddc7f6f0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB","66":"GB HB IB JB KB fB LB"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"0 1 2 G B C D M N O h i j k l m n o p q r s t u v w x y z 2B 3B 4B 5B cB jB 6B dB","66":"3 4 5 6 7 8 9"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"1":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"1":"bC cC iB dC eC fC gC hC","2":"I YC ZC aC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:7,C:"WebUSB"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js
new file mode 100644
index 0000000000..bcd3d58b3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L Q R U V W X Y Z a b c d e S f H","66":"P","257":"D M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB oB pB","129":"HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","194":"GB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB Q R U V W X Y Z a b c d e S f H qB rB sB","66":"JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P"},E:{"2":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 G B C D M N O h i j k l m n o p q r s t u v w x y z QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","66":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C T cB jB dB"},L:{"2":"H"},M:{"2":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"513":"I","516":"YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"2":"iC"},R:{"66":"jC"},S:{"2":"kC"}},B:7,C:"WebVR API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js
new file mode 100644
index 0000000000..d7207e152e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"2":"mB eB I g J E F G A B C K L D M N O h i j k l oB pB","66":"m n o p q r s","129":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N"},E:{"1":"J E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB I RC SC TC UC kB"},J:{"1":"A","2":"E"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"B","2":"A"},O:{"2":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"129":"kC"}},B:5,C:"WebVTT - Web Video Text Tracks"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js
new file mode 100644
index 0000000000..55469b7d49
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","2":"lB","8":"J E F G"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","8":"mB eB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","8":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 5B cB jB 6B dB","2":"G 2B","8":"3B 4B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"H RC VC WC","2":"eB I SC TC UC kB"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","8":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Web Workers"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js
new file mode 100644
index 0000000000..58c585690d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"2":"C K L D M N O","132":"P Q R U V W X Y Z a b c d e S f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB oB pB","322":"aB bB P Q R nB U V W X Y Z a b c d e S f H"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T","66":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","132":"P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"2":"I g J E F G A B C tB hB uB vB wB xB iB cB dB","578":"K L D yB zB 0B 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB 2B 3B 4B 5B cB jB 6B dB","66":"EB FB GB HB IB JB KB LB MB NB T OB","132":"PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R"},G:{"2":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"2":"QC"},I:{"2":"eB I H RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"2":"A B C cB jB dB","132":"T"},L:{"132":"H"},M:{"322":"S"},N:{"2":"A B"},O:{"2":"XC"},P:{"2":"I YC ZC aC bC cC iB dC","132":"eC fC gC hC"},Q:{"2":"iC"},R:{"2":"jC"},S:{"2":"kC"}},B:5,C:"WebXR Device API"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js
new file mode 100644
index 0000000000..9002935181
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"P Q R U V W X Y Z a b c d e S f H","2":"C K L D M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L D M N O h i j k l m n o p q oB pB","194":"r s t u v w x"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x"},E:{"1":"A B C K L D xB iB cB dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k l 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS will-change property"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js
new file mode 100644
index 0000000000..7e027f3283
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H pB","2":"mB eB oB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I"},E:{"1":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"I g tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R cB jB 6B dB","2":"G B 2B 3B 4B 5B"},G:{"1":"F D 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB"},H:{"2":"QC"},I:{"1":"H VC WC","2":"eB RC SC TC UC kB","130":"I"},J:{"1":"E A"},K:{"1":"B C T cB jB dB","2":"A"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:2,C:"WOFF - Web Open Font Format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js
new file mode 100644
index 0000000000..cce1888511
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G A B lB"},B:{"1":"L D M N O P Q R U V W X Y Z a b c d e S f H","2":"C K"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"0 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","2":"I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x"},E:{"1":"C K L D dB yB zB 0B 1B","2":"I g J E F G tB hB uB vB wB xB","132":"A B iB cB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C D M N O h i j k 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"D EC FC GC HC IC JC KC LC MC NC OC PC","2":"F hB 7B kB 8B 9B AC BC CC DC"},H:{"2":"QC"},I:{"1":"H","2":"eB I RC SC TC UC kB VC WC"},J:{"2":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"2":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"WOFF 2.0 - Web Open Font Format"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js
new file mode 100644
index 0000000000..a47a44ec26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"J E F G A B lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB I g J E F G A B C K L oB pB"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"0 1 2 3 4 5 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z"},E:{"1":"G A B C K L D xB iB cB dB yB zB 0B 1B","4":"I g J E F tB hB uB vB wB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","2":"G B C 2B 3B 4B 5B cB jB 6B dB","4":"D M N O h i j k l m n o p q r s"},G:{"1":"D CC DC EC FC GC HC IC JC KC LC MC NC OC PC","4":"F hB 7B kB 8B 9B AC BC"},H:{"2":"QC"},I:{"1":"H","4":"eB I RC SC TC UC kB VC WC"},J:{"4":"E A"},K:{"1":"T","2":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"4":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"4":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:5,C:"CSS3 word-break"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js
new file mode 100644
index 0000000000..ec870021dc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"4":"J E F G A B lB"},B:{"1":"O P Q R U V W X Y Z a b c d e S f H","4":"C K L D M N"},C:{"1":"BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","4":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","4":"I g J E F G A B C K L D M N O h i j k"},E:{"1":"E F G A B C K L D vB wB xB iB cB dB yB zB 0B 1B","4":"I g J tB hB uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G 2B 3B","4":"B C 4B 5B cB jB 6B"},G:{"1":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","4":"hB 7B kB 8B 9B"},H:{"4":"QC"},I:{"1":"H VC WC","4":"eB I RC SC TC UC kB"},J:{"1":"A","4":"E"},K:{"1":"T","4":"A B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"4":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"4":"kC"}},B:5,C:"CSS3 Overflow-wrap"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js
new file mode 100644
index 0000000000..047b98d5dd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E lB","132":"F G","260":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB","2":"mB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","2":"tB hB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB","2":"G"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"4":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"Cross-document messaging"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js
new file mode 100644
index 0000000000..e9acab2b6e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"F G A B","2":"J E lB"},B:{"1":"C K L D M N O","4":"P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB","4":"I g J E F G A B C K L D M N TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","16":"mB eB oB pB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J E F G A B C K L D M N O h i j k l m n"},E:{"4":"J E F G A B C K L D uB vB wB xB iB cB dB yB zB 0B 1B","16":"I g tB hB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 6B dB","16":"G B 2B 3B 4B 5B cB jB"},G:{"4":"F D AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","16":"hB 7B kB 8B 9B"},H:{"2":"QC"},I:{"4":"I H UC kB VC WC","16":"eB RC SC TC"},J:{"4":"E A"},K:{"4":"T dB","16":"A B C cB jB"},L:{"4":"H"},M:{"4":"S"},N:{"1":"A B"},O:{"4":"XC"},P:{"4":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"4":"iC"},R:{"4":"jC"},S:{"1":"kC"}},B:6,C:"X-Frame-Options HTTP header"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js
new file mode 100644
index 0000000000..63ce3417d1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"J E F G lB","132":"A B"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","2":"mB eB","260":"A B","388":"J E F G","900":"I g oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","16":"I g J","132":"r s","388":"E F G A B C K L D M N O h i j k l m n o p q"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","2":"I tB hB","132":"E vB","388":"g J uB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R dB","2":"G B 2B 3B 4B 5B cB jB 6B","132":"D M N"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","2":"hB 7B kB","132":"AC","388":"8B 9B"},H:{"2":"QC"},I:{"1":"H WC","2":"RC SC TC","388":"VC","900":"eB I UC kB"},J:{"132":"A","388":"E"},K:{"1":"C T dB","2":"A B cB jB"},L:{"1":"H"},M:{"1":"S"},N:{"132":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:1,C:"XMLHttpRequest advanced features"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js
new file mode 100644
index 0000000000..2b9013ccb7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"G A B","2":"J E F lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"1":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"1":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"1":"QC"},I:{"1":"eB I H RC SC TC UC kB VC WC"},J:{"1":"E A"},K:{"1":"A B C T cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"2":"jC"},S:{"1":"kC"}},B:1,C:"XHTML served as application/xhtml+xml"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js
new file mode 100644
index 0000000000..af5d2440b8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"2":"G A B lB","4":"J E F"},B:{"2":"C K L D M N O","8":"P Q R U V W X Y Z a b c d e S f H"},C:{"8":"0 1 2 3 4 5 6 7 8 9 mB eB I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H oB pB"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I g J E F G A B C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB"},E:{"8":"I g J E F G A B C K L D tB hB uB vB wB xB iB cB dB yB zB 0B 1B"},F:{"8":"0 1 2 3 4 5 6 7 8 9 G B C D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R 2B 3B 4B 5B cB jB 6B dB"},G:{"8":"F D hB 7B kB 8B 9B AC BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC"},H:{"8":"QC"},I:{"8":"eB I H RC SC TC UC kB VC WC"},J:{"8":"E A"},K:{"8":"A B C T cB jB dB"},L:{"8":"H"},M:{"8":"S"},N:{"2":"A B"},O:{"8":"XC"},P:{"8":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"8":"iC"},R:{"8":"jC"},S:{"8":"kC"}},B:7,C:"XHTML+SMIL animation"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js
new file mode 100644
index 0000000000..bb5236a022
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js
@@ -0,0 +1 @@
+module.exports={A:{A:{"1":"A B","260":"J E F G lB"},B:{"1":"C K L D M N O P Q R U V W X Y Z a b c d e S f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L D M N O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R nB U V W X Y Z a b c d e S f H","132":"B","260":"mB eB I g J E oB pB","516":"F G A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB fB LB gB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R U V W X Y Z a b c d e S f H qB rB sB","132":"I g J E F G A B C K L D M N O h i j k l m n o p q r s"},E:{"1":"F G A B C K L D wB xB iB cB dB yB zB 0B 1B","132":"I g J E tB hB uB vB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB T OB PB QB RB SB TB UB VB WB XB YB ZB aB bB P Q R","16":"G 2B","132":"B C D M N 3B 4B 5B cB jB 6B dB"},G:{"1":"F D BC CC DC EC FC GC HC IC JC KC LC MC NC OC PC","132":"hB 7B kB 8B 9B AC"},H:{"132":"QC"},I:{"1":"H VC WC","132":"eB I RC SC TC UC kB"},J:{"132":"E A"},K:{"1":"T","16":"A","132":"B C cB jB dB"},L:{"1":"H"},M:{"1":"S"},N:{"1":"A B"},O:{"1":"XC"},P:{"1":"I YC ZC aC bC cC iB dC eC fC gC hC"},Q:{"1":"iC"},R:{"1":"jC"},S:{"1":"kC"}},B:4,C:"DOM Parsing and Serialization"};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js
new file mode 100644
index 0000000000..c61a1ed8db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AD.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.01099,"52":0.03298,"60":0.0055,"70":0.0055,"72":0.02198,"78":0.14839,"82":0.0055,"86":0.01099,"87":0.01099,"88":0.0055,"89":0.18137,"91":0.06595,"92":1.32454,"93":2.83594,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 71 73 74 75 76 77 79 80 81 83 84 85 90 94 95 3.5 3.6"},D:{"34":0.0055,"49":0.97279,"62":0.02198,"63":0.0055,"70":0.03298,"74":0.01099,"75":0.04946,"77":0.03847,"78":0.0055,"79":0.10442,"80":0.12641,"81":0.06046,"83":0.01649,"84":0.01099,"85":0.01099,"86":0.03847,"87":0.08244,"88":0.09343,"89":0.10992,"90":0.10442,"91":0.60456,"92":0.42319,"93":1.50041,"94":22.51162,"95":7.18877,"96":0.02198,"97":0.0055,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 64 65 66 67 68 69 71 72 73 76 98"},F:{"28":0.01649,"36":0.02198,"77":0.0055,"78":0.12091,"79":0.80242,"80":0.31327,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.66957,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.01158,"9.0-9.2":0.00827,"9.3":0.11741,"10.0-10.2":0.01323,"10.3":0.21002,"11.0-11.2":0.01488,"11.3-11.4":0.0215,"12.0-12.1":0.01654,"12.2-12.5":0.55564,"13.0-13.1":0.05623,"13.2":0.00992,"13.3":0.1323,"13.4-13.7":0.31586,"14.0-14.4":1.01868,"14.5-14.8":10.36707},B:{"14":0.01099,"16":0.0055,"18":0.03298,"85":0.0055,"87":0.02198,"89":0.01099,"92":0.01099,"93":0.20885,"94":2.72052,"95":0.70349,_:"12 13 15 17 79 80 81 83 84 86 88 90 91"},E:{"4":0,"8":0.01099,"11":0.01099,"13":0.03847,"14":0.8244,"15":3.74827,_:"0 5 6 7 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01099,"11.1":0.20335,"12.1":0.21984,"13.1":0.45067,"14.1":3.20417},P:{"4":0.11583,"5.0-5.4":0.01044,"6.2-6.4":0.02088,"7.2-7.4":0.2088,"8.2":0.01044,"9.2":0.07308,"10.1":0.04176,"11.1-11.2":0.01053,"12.0":0.02106,"13.0":0.11583,"14.0":0.05265,"15.0":2.02169},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00025,"4.4":0,"4.4.3-4.4.4":0.01776},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.12641,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.17115},Q:{"10.4":0},O:{"0":0},H:{"0":0.08528},L:{"0":26.82018},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js
new file mode 100644
index 0000000000..7f716ea8f7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AE.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00771,"52":0.01157,"56":0.00386,"65":0.00386,"68":0.03857,"78":0.01929,"87":0.00771,"88":0.01929,"89":0.00771,"90":0.00771,"91":0.01157,"92":0.30085,"93":0.64026,"94":0.01157,"95":0.00386,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 3.5 3.6"},D:{"22":0.00386,"34":0.01543,"35":0.51298,"38":0.03471,"43":0.00386,"47":0.00386,"49":0.10414,"56":0.01157,"60":0.00386,"63":0.01157,"64":0.00771,"65":0.01157,"67":0.00771,"69":0.01157,"70":0.01157,"71":0.00771,"72":0.00771,"73":0.00771,"74":0.00771,"75":0.03471,"76":0.03857,"77":0.00771,"78":0.01157,"79":0.08485,"80":0.04628,"81":0.01543,"83":0.027,"84":0.03857,"85":0.03857,"86":0.03471,"87":0.27385,"88":0.05014,"89":0.07714,"90":0.05786,"91":0.17357,"92":0.41656,"93":1.42709,"94":20.14125,"95":4.01514,"96":0.01929,"97":0.00386,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 36 37 39 40 41 42 44 45 46 48 50 51 52 53 54 55 57 58 59 61 62 66 68 98"},F:{"28":0.00771,"36":0.00386,"46":0.01543,"78":0.04243,"79":0.47441,"80":0.19671,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00427,"15":4.18832,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00427,"5.0-5.1":0.01139,"6.0-6.1":0,"7.0-7.1":0.03558,"8.1-8.4":0.00427,"9.0-9.2":0.00427,"9.3":0.16366,"10.0-10.2":0.01423,"10.3":0.10531,"11.0-11.2":0.10958,"11.3-11.4":0.02562,"12.0-12.1":0.02277,"12.2-12.5":0.67315,"13.0-13.1":0.03416,"13.2":0.0185,"13.3":0.08539,"13.4-13.7":0.30028,"14.0-14.4":1.01043,"14.5-14.8":7.41174},B:{"14":0.00386,"15":0.00386,"16":0.00386,"17":0.00771,"18":0.03857,"84":0.00771,"86":0.00386,"89":0.01543,"90":0.00386,"91":0.00771,"92":0.02314,"93":0.09257,"94":2.22163,"95":0.58626,_:"12 13 79 80 81 83 85 87 88"},E:{"4":0.00771,"11":0.00386,"12":0.00771,"13":0.054,"14":0.40113,"15":1.09153,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01157,"11.1":0.03857,"12.1":0.06557,"13.1":0.25071,"14.1":1.8205},P:{"4":0.17784,"5.0-5.4":0.02051,"6.2-6.4":0.01049,"7.2-7.4":0.04184,"8.2":0.01079,"9.2":0.01046,"10.1":0.04266,"11.1-11.2":0.0523,"12.0":0.02092,"13.0":0.11507,"14.0":0.14645,"15.0":2.32232},I:{"0":0,"3":0,"4":0.00295,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00074,"4.2-4.3":0.00221,"4.4":0,"4.4.3-4.4.4":0.03096},A:{"11":0.35484,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.01229},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.11672},Q:{"10.4":0.02457},O:{"0":5.7007},H:{"0":0.95379},L:{"0":38.73567},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js
new file mode 100644
index 0000000000..e0b58036b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AF.js
@@ -0,0 +1 @@
+module.exports={C:{"24":0.00368,"29":0.02942,"33":0.00368,"34":0.01471,"35":0.00552,"38":0.00368,"41":0.00184,"43":0.0092,"47":0.03494,"48":0.01103,"49":0.00368,"50":0.00736,"52":0.00552,"54":0.00368,"56":0.00368,"57":0.00368,"60":0.00184,"65":0.00368,"67":0.00368,"68":0.00368,"70":0.00184,"72":0.01103,"74":0.00368,"78":0.01471,"83":0.00368,"84":0.00184,"85":0.00368,"87":0.00368,"88":0.01103,"89":0.01839,"90":0.01287,"91":0.01839,"92":0.36596,"93":0.77974,"94":0.01103,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 30 31 32 36 37 39 40 42 44 45 46 51 53 55 58 59 61 62 63 64 66 69 71 73 75 76 77 79 80 81 82 86 95 3.5 3.6"},D:{"11":0.00368,"25":0.00184,"28":0.00736,"30":0.00368,"34":0.00552,"36":0.00552,"37":0.00368,"39":0.00368,"40":0.00736,"42":0.00368,"43":0.0662,"44":0.00736,"46":0.00368,"47":0.00368,"48":0.00552,"49":0.00368,"50":0.00368,"51":0.01471,"52":0.01471,"54":0.00368,"55":0.01655,"56":0.00368,"57":0.0092,"59":0.00184,"60":0.00736,"61":0.01103,"62":0.02207,"63":0.01471,"64":0.00552,"65":0.0092,"66":0.00552,"67":0.00736,"68":0.00368,"69":0.00368,"70":0.01655,"71":0.01655,"72":0.02942,"73":0.01471,"74":0.01839,"75":0.00736,"76":0.01103,"77":0.01471,"78":0.01655,"79":0.03678,"80":0.02942,"81":0.0331,"83":0.09195,"84":0.02759,"85":0.05517,"86":0.09195,"87":0.08459,"88":0.03678,"89":0.07724,"90":0.05333,"91":0.11954,"92":0.47262,"93":0.47262,"94":7.73851,"95":2.01738,"96":0.01471,"97":0.00736,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 29 31 32 33 35 38 41 45 53 58 98"},F:{"34":0.00184,"64":0.00736,"69":0.00184,"77":0.00368,"78":0.00552,"79":0.53331,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 70 71 72 73 74 75 76 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.53853,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00163,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01226,"8.1-8.4":0.00082,"9.0-9.2":0.00735,"9.3":0.05556,"10.0-10.2":0.01307,"10.3":0.05474,"11.0-11.2":0.29741,"11.3-11.4":0.11929,"12.0-12.1":0.06455,"12.2-12.5":0.99355,"13.0-13.1":0.09805,"13.2":0.15851,"13.3":0.1389,"13.4-13.7":0.37993,"14.0-14.4":1.90457,"14.5-14.8":2.32944},B:{"12":0.01287,"13":0.03678,"14":0.01287,"15":0.00736,"16":0.04046,"17":0.02942,"18":0.12321,"80":0.00184,"81":0.01287,"83":0.00368,"84":0.02759,"85":0.00736,"86":0.00184,"87":0.00184,"88":0.00184,"89":0.03126,"90":0.01655,"91":0.02759,"92":0.02942,"93":0.04598,"94":0.53147,_:"79 95"},E:{"4":0,"10":0.00368,"12":0.00184,"13":0.03494,"14":0.06437,"15":0.06437,_:"0 5 6 7 8 9 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00552,"11.1":0.00184,"12.1":0.00184,"13.1":0.01839,"14.1":0.19861},P:{"4":1.36665,"5.0-5.4":0.48235,"6.2-6.4":0.37181,"7.2-7.4":0.73357,"8.2":0.15073,"9.2":0.65318,"10.1":0.11054,"11.1-11.2":0.4321,"12.0":0.22108,"13.0":0.53259,"14.0":0.91445,"15.0":1.61787},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00454,"4.2-4.3":0.02229,"4.4":0,"4.4.3-4.4.4":0.11188},A:{"9":0.05149,"11":0.52779,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},M:{"0":0.11424},Q:{"10.4":0.01632},O:{"0":2.66832},H:{"0":1.74593},L:{"0":62.60352},S:{"2.5":0},R:{_:"0"}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js
new file mode 100644
index 0000000000..8b026e6706
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AG.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00915,"78":0.02288,"88":0.00458,"89":0.03203,"91":0.0183,"92":0.57658,"93":1.0479,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 94 95 3.5 3.6"},D:{"38":0.01373,"49":0.06864,"65":0.00458,"67":0.00458,"74":0.07322,"75":0.04118,"76":0.08694,"77":0.03661,"78":0.28371,"79":0.02746,"80":0.03661,"81":0.02288,"83":0.01373,"84":0.0183,"85":0.04118,"86":0.01373,"87":0.0961,"88":0.03203,"89":0.42557,"90":0.15558,"91":0.0961,"92":0.32032,"93":1.84413,"94":19.88272,"95":5.63306,"96":0.02746,"97":0.00458,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 70 71 72 73 98"},F:{"78":0.60403,"79":0.572,"80":0.20592,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.01208,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01921,"6.0-6.1":0,"7.0-7.1":0.0072,"8.1-8.4":0.0048,"9.0-9.2":0.0012,"9.3":0.01681,"10.0-10.2":0.0024,"10.3":0.03602,"11.0-11.2":0.0084,"11.3-11.4":0.03361,"12.0-12.1":0.0096,"12.2-12.5":0.55944,"13.0-13.1":0.02281,"13.2":0.0036,"13.3":0.05522,"13.4-13.7":0.37336,"14.0-14.4":0.6987,"14.5-14.8":7.13343},B:{"15":0.00458,"16":0.0183,"17":0.02288,"18":0.05491,"84":0.03661,"85":0.0183,"89":0.01373,"91":0.00915,"92":0.05034,"93":0.3615,"94":4.89174,"95":1.78922,_:"12 13 14 79 80 81 83 86 87 88 90"},E:{"4":0,"13":0.0183,"14":0.13728,"15":0.83741,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1","5.1":0.00458,"9.1":0.18304,"10.1":0.00458,"11.1":0.00915,"12.1":0.0183,"13.1":0.1327,"14.1":1.69312},P:{"4":0.23101,"5.0-5.4":0.09425,"6.2-6.4":0.02088,"7.2-7.4":0.18901,"8.2":0.01044,"9.2":0.063,"10.1":0.10472,"11.1-11.2":0.29401,"12.0":0.0525,"13.0":0.25201,"14.0":0.28351,"15.0":4.02167},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00533,"4.4":0,"4.4.3-4.4.4":0.05434},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.14186,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.43392},Q:{"10.4":0},O:{"0":0.09763},H:{"0":0.21567},L:{"0":38.24149},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js
new file mode 100644
index 0000000000..f7407d7cca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AI.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.00405,"83":0.00405,"87":0.00809,"89":0.02023,"92":0.27506,"93":0.63911,"94":0.00405,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 88 90 91 95 3.5 3.6"},D:{"11":0.00809,"53":0.01618,"55":0.02023,"66":0.00405,"67":0.00405,"69":0.02023,"73":0.00809,"74":0.06472,"75":0.02832,"76":0.14967,"77":0.02023,"78":0.03641,"79":0.05663,"80":0.00809,"81":0.02427,"83":0.00405,"84":0.01214,"86":0.03236,"87":0.04045,"89":0.02427,"90":0.06068,"91":0.14967,"92":0.40855,"93":1.14069,"94":14.68335,"95":3.68095,"96":0.01618,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 56 57 58 59 60 61 62 63 64 65 68 70 71 72 85 88 97 98"},F:{"65":0.00809,"78":0.01618,"79":0.28315,"80":0.23461,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.49126,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00323,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.11301,"10.0-10.2":0,"10.3":0.03875,"11.0-11.2":0.02583,"11.3-11.4":0.07588,"12.0-12.1":0.01776,"12.2-12.5":0.62962,"13.0-13.1":0.05812,"13.2":0.00484,"13.3":0.17597,"13.4-13.7":0.48593,"14.0-14.4":0.5715,"14.5-14.8":9.45231},B:{"13":0.01214,"16":0.00809,"17":0.01214,"18":0.00809,"84":0.02832,"85":0.00405,"89":0.06877,"90":0.00809,"91":0.04045,"92":0.02832,"93":0.19416,"94":4.42928,"95":1.65036,_:"12 14 15 79 80 81 83 86 87 88"},E:{"4":0,"12":0.00809,"13":0.01618,"14":0.23461,"15":4.76097,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1","5.1":0.00809,"9.1":0.43282,"11.1":0.02427,"12.1":0.02427,"13.1":0.35192,"14.1":1.41171},P:{"4":0.07351,"5.0-5.4":0.09425,"6.2-6.4":0.02088,"7.2-7.4":0.13652,"8.2":0.01044,"9.2":0.05251,"10.1":0.10472,"11.1-11.2":0.5566,"12.0":0.05251,"13.0":0.24154,"14.0":0.39907,"15.0":4.88339},I:{"0":0,"3":0,"4":0.00086,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00129,"4.2-4.3":0.00129,"4.4":0,"4.4.3-4.4.4":0.03229},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.00405,"11":0.06472,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.08337},Q:{"10.4":0.01787},O:{"0":0.09528},H:{"0":1.08246},L:{"0":38.81735},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js
new file mode 100644
index 0000000000..b93117fc6e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AL.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.00183,"52":0.01643,"55":0.00548,"66":0.13147,"72":0.00913,"74":0.00183,"78":0.03652,"79":0.00365,"80":0.01643,"81":0.00548,"82":0.00183,"83":0.00183,"84":0.00913,"85":0.00365,"87":0.00548,"88":0.01461,"89":0.01461,"90":0.0073,"91":0.00913,"92":0.30494,"93":0.8144,"94":0.00183,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 73 75 76 77 86 95 3.5 3.6"},D:{"24":0.00183,"34":0.00183,"38":0.01461,"47":0.00913,"49":0.17164,"51":0.00365,"53":0.00913,"55":0.00365,"56":0.00548,"58":0.00548,"60":0.00365,"61":0.04748,"62":0.00183,"63":0.02922,"64":0.00183,"65":0.0073,"66":0.00548,"67":0.00365,"68":0.00548,"69":0.00548,"70":0.0073,"71":0.01461,"72":0.0073,"73":0.00548,"74":0.02374,"75":0.00548,"76":0.01461,"77":0.01096,"78":0.00913,"79":0.07852,"80":0.01643,"81":0.01461,"83":0.05113,"84":0.0493,"85":0.042,"86":0.08217,"87":0.33598,"88":0.02374,"89":0.03104,"90":0.03469,"91":0.084,"92":0.15704,"93":0.66832,"94":9.27791,"95":2.56005,"96":0.00913,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 52 54 57 59 97 98"},F:{"28":0.00183,"36":0.00365,"40":0.00365,"46":0.00365,"57":0.00183,"58":0.00183,"68":0.0073,"71":0.01461,"78":0.01096,"79":0.28851,"80":0.15156,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 60 62 63 64 65 66 67 69 70 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":6.56673,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.03012,"7.0-7.1":0.04351,"8.1-8.4":0,"9.0-9.2":0.00335,"9.3":0.07363,"10.0-10.2":0.01673,"10.3":0.20082,"11.0-11.2":0.08033,"11.3-11.4":0.14727,"12.0-12.1":0.08033,"12.2-12.5":2.68761,"13.0-13.1":0.07363,"13.2":0.05355,"13.3":0.31796,"13.4-13.7":0.99405,"14.0-14.4":2.86834,"14.5-14.8":19.21823},B:{"12":0.00183,"17":0.0073,"18":0.0073,"84":0.00365,"85":0.00183,"86":0.00913,"89":0.01278,"90":0.00183,"91":0.00548,"92":0.0073,"93":0.02009,"94":0.60623,"95":0.17347,_:"13 14 15 16 79 80 81 83 87 88"},E:{"4":0,"12":0.00183,"13":0.01461,"14":0.07669,"15":0.16982,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00548,"11.1":0.0073,"12.1":0.01096,"13.1":0.03835,"14.1":0.25199},P:{"4":0.21395,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.12226,"9.2":0.02038,"11.1-11.2":0.22414,"12.0":0.05094,"13.0":0.24452,"14.0":0.19358,"15.0":2.47574},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00437,"4.2-4.3":0.0068,"4.4":0,"4.4.3-4.4.4":0.03788},A:{"8":0.00405,"9":0.00809,"10":0.00202,"11":0.0607,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13896},Q:{"10.4":0},O:{"0":0.04087},H:{"0":0.07739},L:{"0":45.0514},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js
new file mode 100644
index 0000000000..10114dc02f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AM.js
@@ -0,0 +1 @@
+module.exports={C:{"43":0.00703,"52":32.86289,"56":0.01406,"70":0.02109,"78":0.02109,"82":0.03516,"83":0.00703,"85":0.00703,"89":0.01406,"91":0.02109,"92":0.28124,"93":0.75935,"94":0.00703,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 84 86 87 88 90 95 3.5 3.6"},D:{"22":0.01406,"49":0.42186,"51":0.01406,"59":0.01406,"63":0.04219,"72":0.00703,"73":0.03516,"75":0.02812,"76":0.02812,"77":0.00703,"78":0.02812,"79":0.02109,"80":0.02109,"81":0.01406,"83":0.04219,"84":0.08437,"85":0.04922,"86":0.05625,"87":0.18984,"88":0.05625,"89":0.09843,"90":0.05625,"91":0.09843,"92":0.87888,"93":0.97731,"94":21.01566,"95":4.98498,"96":0.02109,"97":0.01406,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 56 57 58 60 61 62 64 65 66 67 68 69 70 71 74 98"},F:{"46":0.01406,"77":0.01406,"78":0.04219,"79":0.44998,"80":0.21093,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.76437,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00272,"6.0-6.1":0.00068,"7.0-7.1":0.00477,"8.1-8.4":0.00136,"9.0-9.2":0.00272,"9.3":0.1308,"10.0-10.2":0.00477,"10.3":0.04837,"11.0-11.2":0.0218,"11.3-11.4":0.0327,"12.0-12.1":0.02112,"12.2-12.5":0.58108,"13.0-13.1":0.02861,"13.2":0.01362,"13.3":0.04428,"13.4-13.7":0.18393,"14.0-14.4":0.7112,"14.5-14.8":3.21198},B:{"17":0.00703,"84":0.01406,"85":0.00703,"89":0.00703,"91":0.01406,"93":0.02109,"94":0.80153,"95":0.23905,_:"12 13 14 15 16 18 79 80 81 83 86 87 88 90 92"},E:{"4":0,"14":0.21796,"15":0.96325,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.1125,"12.1":0.01406,"13.1":0.13359,"14.1":0.36561},P:{"4":0.03205,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.06411,"9.2":0.02065,"10.1":0.01032,"11.1-11.2":0.08547,"12.0":0.02137,"13.0":0.09616,"14.0":0.12821,"15.0":1.08979},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00069,"4.2-4.3":0.00241,"4.4":0,"4.4.3-4.4.4":0.02362},A:{"8":0.00703,"9":1.39917,"11":0.18281,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.05047},Q:{"10.4":0},O:{"0":0.10985},H:{"0":0.17427},L:{"0":21.32282},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js
new file mode 100644
index 0000000000..b22c8292c5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AO.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00467,"41":0.00935,"43":0.00467,"45":0.00935,"46":0.00935,"52":0.00935,"64":0.01869,"65":0.00467,"68":0.01402,"72":0.00467,"78":0.07477,"89":0.11215,"90":0.00467,"91":0.00935,"92":0.50936,"93":0.95329,"94":0.01402,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 42 44 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 95 3.5 3.6"},D:{"11":0.00935,"25":0.00467,"26":0.00935,"33":0.03271,"34":0.01402,"38":0.00467,"40":0.01869,"42":0.01869,"43":0.10748,"44":0.00467,"46":0.03271,"47":0.00935,"48":0.01869,"49":0.10281,"50":0.00935,"55":0.00467,"56":0.00467,"57":0.02337,"58":0.02337,"59":0.01402,"60":0.00467,"61":0.00935,"63":0.06075,"65":0.08879,"66":0.00467,"67":0.00467,"68":0.02337,"69":0.06075,"70":0.01402,"71":0.00935,"72":0.00935,"73":0.00935,"74":0.01402,"75":0.02804,"76":0.00467,"77":0.01402,"78":0.04206,"79":0.11215,"80":0.08879,"81":0.04673,"83":0.01402,"84":0.01402,"85":0.03271,"86":0.15888,"87":0.18225,"88":0.04206,"89":0.09813,"90":0.07944,"91":0.63086,"92":0.47665,"93":1.11217,"94":16.79476,"95":5.67302,"96":0.05608,"97":0.00467,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 31 32 35 36 37 39 41 45 51 52 53 54 62 64 98"},F:{"40":0.01402,"48":0.00935,"57":0.00935,"71":0.00467,"73":0.00467,"74":0.00467,"77":0.00935,"78":0.02337,"79":1.20096,"80":0.86918,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 68 69 70 72 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00173,"15":1.34786,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0078,"6.0-6.1":0.00347,"7.0-7.1":0.15342,"8.1-8.4":0.13435,"9.0-9.2":0.00347,"9.3":0.62149,"10.0-10.2":0.01647,"10.3":0.68043,"11.0-11.2":0.08581,"11.3-11.4":0.09015,"12.0-12.1":0.03034,"12.2-12.5":1.64777,"13.0-13.1":0.013,"13.2":0.01127,"13.3":0.08928,"13.4-13.7":0.20023,"14.0-14.4":0.81132,"14.5-14.8":2.71739},B:{"12":0.06075,"13":0.03738,"14":0.04206,"15":0.04673,"16":0.07944,"17":0.05608,"18":0.33646,"84":0.0514,"85":0.02337,"86":0.01402,"88":0.00467,"89":0.08411,"90":0.01869,"91":0.06542,"92":0.09813,"93":0.11683,"94":2.99539,"95":1.19162,_:"79 80 81 83 87"},E:{"4":0,"8":0.00467,"11":0.00467,"12":0.00935,"13":0.01869,"14":0.09346,"15":0.1729,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.08879,"11.1":0.00467,"12.1":0.0514,"13.1":0.06542,"14.1":0.18692},P:{"4":0.90061,"5.0-5.4":0.09425,"6.2-6.4":0.02088,"7.2-7.4":0.16756,"8.2":0.01044,"9.2":0.05236,"10.1":0.10472,"11.1-11.2":0.17803,"12.0":0.09425,"13.0":0.1885,"14.0":0.39794,"15.0":0.89014},I:{"0":0,"3":0,"4":0.00458,"2.1":0,"2.2":0,"2.3":0,"4.1":0.03002,"4.2-4.3":0.11244,"4.4":0,"4.4.3-4.4.4":0.2152},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.71497,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.07991},N:{_:"10 11"},R:{_:"0"},M:{"0":0.14383},Q:{"10.4":0.03196},O:{"0":0.40485},H:{"0":2.51659},L:{"0":46.71461},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js
new file mode 100644
index 0000000000..e0762aaafd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AR.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.09535,"53":0.00433,"59":0.013,"65":0.00433,"66":0.00867,"68":0.00867,"69":0.00433,"72":0.00867,"73":0.00867,"78":0.04334,"79":0.00867,"80":0.00433,"81":0.00433,"84":0.01734,"85":0.00867,"86":0.00867,"87":0.013,"88":0.026,"89":0.01734,"90":0.02167,"91":0.03901,"92":0.45507,"93":1.18318,"94":0.013,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 54 55 56 57 58 60 61 62 63 64 67 70 71 74 75 76 77 82 83 95 3.5 3.6"},D:{"22":0.00433,"34":0.00867,"38":0.01734,"47":0.013,"49":0.33805,"55":0.00433,"57":0.00433,"58":0.00867,"61":0.03901,"63":0.013,"65":0.00867,"66":0.03901,"67":0.00433,"68":0.00433,"69":0.00867,"70":0.00867,"71":0.00867,"72":0.013,"73":0.00867,"74":0.013,"75":0.01734,"76":0.013,"77":0.01734,"78":0.026,"79":0.04334,"80":0.03034,"81":0.03467,"83":0.026,"84":0.02167,"85":0.03467,"86":0.04767,"87":0.23404,"88":0.03901,"89":0.06068,"90":0.06501,"91":0.17769,"92":0.4074,"93":0.96215,"94":25.11986,"95":7.24211,"96":0.013,"97":0.00433,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 56 59 60 62 64 98"},F:{"36":0.00433,"77":0.00433,"78":0.10835,"79":1.20919,"80":0.55909,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.81097,"3.2":0.00229,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01676,"6.0-6.1":0.00152,"7.0-7.1":0.00533,"8.1-8.4":0.00229,"9.0-9.2":0.00076,"9.3":0.032,"10.0-10.2":0.0019,"10.3":0.02514,"11.0-11.2":0.00686,"11.3-11.4":0.03695,"12.0-12.1":0.01028,"12.2-12.5":0.22017,"13.0-13.1":0.0099,"13.2":0.00343,"13.3":0.02476,"13.4-13.7":0.09256,"14.0-14.4":0.22169,"14.5-14.8":2.28131},B:{"14":0.00433,"15":0.00867,"17":0.00867,"18":0.02167,"89":0.00867,"90":0.00433,"91":0.00867,"92":0.01734,"93":0.04767,"94":1.43889,"95":0.46807,_:"12 13 16 79 80 81 83 84 85 86 87 88"},E:{"4":0,"13":0.013,"14":0.06068,"15":0.22537,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.026,"10.1":0.00433,"11.1":0.01734,"12.1":0.01734,"13.1":0.08235,"14.1":0.30771},P:{"4":0.1755,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.25808,"9.2":0.02065,"10.1":0.01032,"11.1-11.2":0.1342,"12.0":0.04129,"13.0":0.18582,"14.0":0.20647,"15.0":1.93046},I:{"0":0,"3":0,"4":0.00051,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00203,"4.2-4.3":0.00279,"4.4":0,"4.4.3-4.4.4":0.02866},A:{"9":0.00908,"11":0.17707,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.1303},Q:{"10.4":0},O:{"0":0.03966},H:{"0":0.19844},L:{"0":50.24127},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js
new file mode 100644
index 0000000000..1e835a2bc4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AS.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01135,"78":0.02838,"79":0.01135,"84":0.00568,"91":0.00568,"92":0.09649,"93":0.21001,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 85 86 87 88 89 90 94 95 3.5 3.6"},D:{"39":0.01135,"46":0.0227,"49":0.12487,"64":0.01703,"65":0.06811,"67":0.01703,"68":0.01703,"69":0.34624,"72":0.0227,"75":0.80032,"76":0.12487,"77":0.01703,"78":0.01135,"79":1.22602,"80":0.06244,"81":0.0227,"84":0.01135,"85":0.03406,"86":0.1419,"87":0.37462,"88":0.60166,"89":0.65274,"90":0.13622,"91":0.38029,"92":1.33954,"93":11.42579,"94":18.69107,"95":3.74048,"96":0.0227,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 66 70 71 73 74 83 97 98"},F:{"79":0.25542,"80":0.1419,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.06713,"15":3.8147,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01296,"6.0-6.1":0.01531,"7.0-7.1":0.00589,"8.1-8.4":0.04593,"9.0-9.2":0,"9.3":1.7937,"10.0-10.2":0.01413,"10.3":0.03533,"11.0-11.2":0.01649,"11.3-11.4":0.04947,"12.0-12.1":0.00471,"12.2-12.5":0.55472,"13.0-13.1":0.01649,"13.2":0.00353,"13.3":0.0212,"13.4-13.7":0.24733,"14.0-14.4":0.42281,"14.5-14.8":4.63676},B:{"16":0.03973,"17":0.07379,"18":0.01703,"85":0.02838,"89":0.0227,"90":0.03406,"92":0.17028,"93":0.39732,"94":6.14711,"95":1.61766,_:"12 13 14 15 79 80 81 83 84 86 87 88 91"},E:{"4":0,"9":0.00568,"11":0.00568,"13":0.0227,"14":0.33488,"15":0.34056,_:"0 5 6 7 8 10 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01135,"10.1":0.04541,"11.1":0.01135,"12.1":0.03406,"13.1":0.20434,"14.1":1.40197},P:{"4":0.12048,_:"5.0-5.4 6.2-6.4 8.2 10.1","7.2-7.4":0.10953,"9.2":0.02191,"11.1-11.2":0.43812,"12.0":0.04381,"13.0":0.09858,"14.0":0.20811,"15.0":1.61008},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":0.95924,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.02162},Q:{"10.4":0.05621},O:{"0":0.11242},H:{"0":0.13509},L:{"0":30.64128},S:{"2.5":0.03892}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js
new file mode 100644
index 0000000000..ad971ddd3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AT.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00594,"52":0.05937,"57":0.00594,"60":0.03562,"61":0.01187,"62":0.01187,"63":0.00594,"68":0.01187,"72":0.02375,"74":0.00594,"78":0.36216,"79":0.00594,"81":0.00594,"82":0.01187,"83":0.00594,"84":0.01187,"85":0.01781,"86":0.00594,"87":0.01187,"88":0.05343,"89":0.0475,"90":0.0475,"91":0.1603,"92":2.07201,"93":4.73773,"94":0.02375,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 58 59 64 65 66 67 69 70 71 73 75 76 77 80 95 3.5 3.6"},D:{"34":0.01187,"36":0.01781,"38":0.02969,"47":0.00594,"49":0.11874,"53":0.00594,"63":0.01187,"64":0.18405,"67":0.01781,"69":0.01187,"70":0.20186,"72":0.18998,"75":0.02375,"76":0.01187,"77":0.01187,"78":0.00594,"79":0.47496,"80":0.2078,"81":0.02375,"83":0.04156,"84":0.04156,"85":0.03562,"86":0.05343,"87":0.48683,"88":0.15436,"89":0.06531,"90":0.08312,"91":7.24908,"92":0.43934,"93":0.93211,"94":19.08152,"95":4.55368,"96":0.01781,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 65 66 68 71 73 74 97 98"},F:{"46":0.01187,"78":0.5937,"79":1.57924,"80":0.93805,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.9697,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00324,"8.1-8.4":0.01136,"9.0-9.2":0.00487,"9.3":0.08111,"10.0-10.2":0.00324,"10.3":0.07138,"11.0-11.2":0.03245,"11.3-11.4":0.03731,"12.0-12.1":0.02758,"12.2-12.5":0.43152,"13.0-13.1":0.0292,"13.2":0.02433,"13.3":0.08111,"13.4-13.7":0.24821,"14.0-14.4":1.21346,"14.5-14.8":9.94129},B:{"13":0.00594,"17":0.01187,"18":0.07124,"84":0.00594,"85":0.01187,"86":0.00594,"88":0.01187,"89":0.03562,"90":0.02969,"91":0.02375,"92":0.10093,"93":0.17217,"94":5.03458,"95":1.35364,_:"12 14 15 16 79 80 81 83 87"},E:{"4":0,"8":0.00594,"12":0.01187,"13":0.08312,"14":0.61745,"15":1.38926,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01187,"10.1":0.07124,"11.1":0.09499,"12.1":0.10093,"13.1":0.41559,"14.1":2.29168},P:{"4":0.15876,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.06411,"9.2":0.01092,"10.1":0.01032,"11.1-11.2":0.07409,"12.0":0.02117,"13.0":0.13759,"14.0":0.17993,"15.0":3.25987},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00065,"4.2-4.3":0.00163,"4.4":0,"4.4.3-4.4.4":0.0221},A:{"8":0.02009,"9":0.0067,"11":0.49566,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.47131},Q:{"10.4":0},O:{"0":0.04469},H:{"0":0.20772},L:{"0":20.33894},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js
new file mode 100644
index 0000000000..f4a9449323
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AU.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00556,"48":0.00556,"52":0.03334,"78":0.10001,"82":0.01111,"84":0.01111,"85":0.00556,"86":0.01111,"87":0.00556,"88":0.02778,"89":0.02222,"90":0.03334,"91":0.04445,"92":0.79451,"93":1.77792,"94":0.01111,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 95 3.5 3.6"},D:{"25":0.01111,"26":0.00556,"34":0.01667,"38":0.07223,"49":0.30558,"53":0.02222,"55":0.00556,"56":0.01111,"57":0.00556,"58":0.00556,"59":0.01111,"60":0.01667,"61":0.05556,"63":0.00556,"64":0.02778,"65":0.03889,"66":0.01667,"67":0.02778,"68":0.01111,"69":0.02778,"70":0.03889,"71":0.01667,"72":0.03889,"73":0.02222,"74":0.02778,"75":0.02222,"76":0.02222,"77":0.01111,"78":0.02222,"79":0.27224,"80":0.08334,"81":0.03889,"83":0.03889,"84":0.03334,"85":0.02222,"86":0.06667,"87":0.32225,"88":0.0889,"89":0.10556,"90":0.12223,"91":0.36114,"92":1.3001,"93":2.74466,"94":23.68523,"95":4.96706,"96":0.01111,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 62 97 98"},F:{"46":0.05,"78":0.04445,"79":0.3667,"80":0.14446,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.943,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01852,"6.0-6.1":0.02084,"7.0-7.1":0.02547,"8.1-8.4":0.05094,"9.0-9.2":0.02084,"9.3":0.29868,"10.0-10.2":0.02778,"10.3":0.31951,"11.0-11.2":0.09493,"11.3-11.4":0.1065,"12.0-12.1":0.09493,"12.2-12.5":1.41929,"13.0-13.1":0.05325,"13.2":0.02778,"13.3":0.1667,"13.4-13.7":0.49548,"14.0-14.4":1.53274,"14.5-14.8":14.43605},B:{"17":0.01111,"18":0.03334,"84":0.01111,"85":0.00556,"86":0.01667,"87":0.00556,"88":0.00556,"89":0.01667,"90":0.01111,"91":0.02222,"92":0.05556,"93":0.25558,"94":3.9392,"95":1.07231,_:"12 13 14 15 16 79 80 81 83"},E:{"4":0,"11":0.01667,"12":0.02222,"13":0.15557,"14":0.87229,"15":1.85015,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01667,"10.1":0.03334,"11.1":0.10001,"12.1":0.18335,"13.1":0.7445,"14.1":5.30042},P:{"4":0.48056,_:"5.0-5.4 6.2-6.4 8.2","7.2-7.4":0.06411,"9.2":0.01092,"10.1":0.01032,"11.1-11.2":0.04369,"12.0":0.04369,"13.0":0.12014,"14.0":0.19659,"15.0":2.5885},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00167,"4.2-4.3":0.00389,"4.4":0,"4.4.3-4.4.4":0.02111},A:{"11":0.7445,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.39552},Q:{"10.4":0.02666},O:{"0":0.11999},H:{"0":0.16829},L:{"0":17.54058},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js
new file mode 100644
index 0000000000..9dd5ae9877
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AW.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.00757,"51":0.00757,"52":0.0227,"78":0.04918,"79":0.01135,"89":0.00378,"90":0.03405,"91":0.01513,"92":0.27994,"93":0.7566,"94":0.00757,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 86 87 88 95 3.5 3.6"},D:{"22":0.03026,"38":0.02648,"47":0.00757,"49":0.07566,"55":0.00378,"56":0.01892,"63":0.00757,"65":0.00378,"67":0.00757,"70":0.02648,"72":0.00757,"74":0.03405,"76":0.01513,"79":0.11349,"80":0.01135,"81":0.01135,"83":0.03026,"84":0.01513,"85":0.04161,"86":0.03026,"87":0.06431,"88":0.03405,"89":0.03783,"90":0.0227,"91":0.10971,"92":0.49936,"93":1.67965,"94":15.26062,"95":3.82083,"96":0.00378,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 57 58 59 60 61 62 64 66 68 69 71 73 75 77 78 97 98"},F:{"69":0.00757,"78":0.01135,"79":0.3556,"80":0.22698,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00496,"15":6.26717,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.10912,"10.0-10.2":0.02232,"10.3":0.0992,"11.0-11.2":0.0124,"11.3-11.4":0.04464,"12.0-12.1":0.02728,"12.2-12.5":0.65722,"13.0-13.1":0.0124,"13.2":0,"13.3":0.04216,"13.4-13.7":0.38689,"14.0-14.4":0.98459,"14.5-14.8":16.12302},B:{"13":0.00757,"14":0.00378,"16":0.00378,"17":0.03405,"18":0.07188,"84":0.05296,"85":0.0227,"88":0.00757,"89":0.04918,"90":0.01892,"91":0.01892,"92":0.0227,"93":0.20807,"94":4.35423,"95":1.52077,_:"12 15 79 80 81 83 86 87"},E:{"4":0,"12":0.0454,"13":0.05296,"14":0.49179,"15":1.24461,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01135,"11.1":0.09458,"12.1":0.10214,"13.1":0.71877,"14.1":2.981},P:{"4":0.30633,"5.0-5.4":0.09425,"6.2-6.4":0.02088,"7.2-7.4":0.16338,"8.2":0.01044,"9.2":0.02042,"10.1":0.01021,"11.1-11.2":0.17359,"12.0":0.0919,"13.0":0.19401,"14.0":0.38802,"15.0":7.21917},I:{"0":0,"3":0,"4":0.00178,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01066},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00378,"11":0.89279,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.26733},Q:{"10.4":0},O:{"0":0.09326},H:{"0":0.14126},L:{"0":28.71424},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js
new file mode 100644
index 0000000000..763301d68f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AX.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01295,"52":0.05827,"77":0.11006,"78":0.03884,"91":0.12948,"92":0.84809,"93":2.11052,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 88 89 90 94 95 3.5 3.6"},D:{"49":0.07121,"58":0.0259,"76":0.11006,"79":0.25896,"81":0.03237,"87":0.0259,"89":0.00647,"90":0.01942,"91":0.04532,"92":0.58266,"93":0.84162,"94":29.39196,"95":6.27978,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 78 80 83 84 85 86 88 96 97 98"},F:{"78":0.01295,"79":3.04278,"80":1.10058,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.36175,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00142,"9.3":0.10061,"10.0-10.2":0.017,"10.3":0.57672,"11.0-11.2":0.017,"11.3-11.4":0.00709,"12.0-12.1":1.17895,"12.2-12.5":3.09475,"13.0-13.1":0.18279,"13.2":0,"13.3":0.08785,"13.4-13.7":0.12895,"14.0-14.4":1.03725,"14.5-14.8":6.37229},B:{"17":0.01295,"18":0.01942,"87":0.01295,"89":0.01295,"90":0.00647,"92":0.0259,"93":0.04532,"94":5.28278,"95":1.18474,_:"12 13 14 15 16 79 80 81 83 84 85 86 88 91"},E:{"4":0,"12":0.00647,"13":0.0259,"14":0.3237,"15":2.91977,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.03237,"10.1":0.00647,"11.1":0.01942,"12.1":0.03237,"13.1":0.6474,"14.1":6.83007},P:{_:"4 5.0-5.4 6.2-6.4 8.2 9.2 10.1 11.1-11.2","7.2-7.4":0.04978,"12.0":0.01244,"13.0":0.02489,"14.0":0.12445,"15.0":1.97871},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00326,"4.2-4.3":0.00109,"4.4":0,"4.4.3-4.4.4":0.00977},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.22659,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.21515},Q:{"10.4":0},O:{"0":0.27511},H:{"0":0.15026},L:{"0":19.55963},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js
new file mode 100644
index 0000000000..f21656730d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/AZ.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00723,"68":0.17357,"72":0.05786,"75":0.18442,"78":0.06509,"79":0.00362,"84":0.01808,"88":0.01446,"89":0.01446,"90":0.00362,"91":0.00723,"92":0.1121,"93":0.31459,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 76 77 80 81 82 83 85 86 87 94 95 3.5 3.6"},D:{"22":0.01446,"26":0.00362,"34":0.00723,"38":0.02893,"42":0.00362,"49":0.09763,"53":0.06509,"54":0.00723,"55":0.00362,"56":0.01085,"57":0.00723,"58":0.00723,"61":0.00362,"63":0.01446,"64":0.00723,"65":0.00723,"66":0.00362,"67":0.01446,"68":0.03616,"69":0.01085,"70":0.00723,"71":0.00723,"72":0.04701,"73":0.01085,"74":0.01808,"75":0.01085,"76":0.0217,"77":0.00723,"78":0.00362,"79":0.38691,"80":0.04701,"81":0.0217,"83":0.04701,"84":0.03254,"85":0.03254,"86":0.08678,"87":0.26035,"88":0.04701,"89":0.06509,"90":0.06147,"91":0.14464,"92":0.5424,"93":0.93654,"94":18.90806,"95":5.93024,"96":0.01085,"97":0.00723,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 43 44 45 46 47 48 50 51 52 59 60 62 98"},F:{"25":0.00362,"28":0.01446,"36":0.00723,"40":0.00723,"46":0.00723,"62":0.03616,"68":0.00362,"75":0.00362,"77":0.01808,"78":0.08678,"79":1.69952,"80":0.85338,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 63 64 65 66 67 69 70 71 72 73 74 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.38685,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01074,"6.0-6.1":0.00083,"7.0-7.1":0.05864,"8.1-8.4":0,"9.0-9.2":0.00661,"9.3":0.01982,"10.0-10.2":0.01074,"10.3":0.10654,"11.0-11.2":0.03386,"11.3-11.4":0.05451,"12.0-12.1":0.01569,"12.2-12.5":0.59052,"13.0-13.1":0.02478,"13.2":0.01321,"13.3":0.07433,"13.4-13.7":0.185,"14.0-14.4":0.78791,"14.5-14.8":3.87265},B:{"16":0.00362,"18":0.01808,"84":0.01085,"89":0.00723,"91":0.00723,"92":0.00723,"93":0.03978,"94":0.66896,"95":0.2495,_:"12 13 14 15 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.02531,"14":0.14102,"15":0.27482,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.0904,"10.1":0.00723,"11.1":0.01085,"12.1":0.03254,"13.1":0.14826,"14.1":0.39053},P:{"4":0.49761,_:"5.0-5.4 8.2","6.2-6.4":0.01016,"7.2-7.4":0.07109,"9.2":0.02031,"10.1":0.01016,"11.1-11.2":0.22342,"12.0":0.07109,"13.0":0.26404,"14.0":0.39606,"15.0":3.37158},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00301,"4.2-4.3":0.01626,"4.4":0,"4.4.3-4.4.4":0.04456},A:{"8":0.00723,"11":0.07232,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.08298},Q:{"10.4":0},O:{"0":0.32553},H:{"0":0.74933},L:{"0":50.06819},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js
new file mode 100644
index 0000000000..21b51c4935
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BA.js
@@ -0,0 +1 @@
+module.exports={C:{"16":0.00381,"36":0.00381,"45":0.5444,"48":0.00381,"52":0.52537,"54":0.01142,"62":0.00381,"66":0.00761,"68":0.00761,"69":0.00381,"72":0.00381,"77":0.00761,"78":0.03426,"81":0.00761,"84":0.00381,"85":0.00761,"86":0.00381,"88":0.03807,"89":0.03046,"90":0.01142,"91":0.02665,"92":0.82612,"93":2.31846,"94":0.01142,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 46 47 49 50 51 53 55 56 57 58 59 60 61 63 64 65 67 70 71 73 74 75 76 79 80 82 83 87 95 3.5 3.6"},D:{"22":0.01142,"26":0.00381,"34":0.00381,"38":0.03046,"43":0.00761,"47":0.00761,"49":0.23223,"53":0.02284,"55":0.01142,"58":0.00761,"61":1.22966,"62":0.00761,"63":0.02284,"65":0.01142,"66":0.00381,"67":0.00381,"68":0.01904,"70":0.00761,"71":0.00761,"72":0.00381,"73":0.00761,"74":0.00381,"76":0.01142,"77":0.00761,"78":0.00381,"79":0.13325,"80":0.01904,"81":0.03426,"83":0.05711,"84":0.04949,"85":0.06091,"86":0.03807,"87":0.26268,"88":0.0533,"89":0.07995,"90":0.08756,"91":0.13705,"92":0.43019,"93":0.79947,"94":18.53628,"95":5.08615,"96":0.01142,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 56 57 59 60 64 69 75 97 98"},F:{"28":0.00381,"36":0.01523,"40":0.00761,"46":0.01904,"77":0.00381,"78":0.04188,"79":0.98601,"80":0.55202,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.21589,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0006,"6.0-6.1":0,"7.0-7.1":0.01194,"8.1-8.4":0,"9.0-9.2":0.00239,"9.3":0.09252,"10.0-10.2":0.01671,"10.3":0.12177,"11.0-11.2":0.00716,"11.3-11.4":0.01492,"12.0-12.1":0.01492,"12.2-12.5":0.46499,"13.0-13.1":0.00716,"13.2":0.00597,"13.3":0.02388,"13.4-13.7":0.22324,"14.0-14.4":0.40171,"14.5-14.8":3.33906},B:{"18":0.03046,"84":0.00381,"85":0.04188,"89":0.01523,"90":0.02665,"91":0.01142,"92":0.01142,"93":0.03807,"94":1.29057,"95":0.43781,_:"12 13 14 15 16 17 79 80 81 83 86 87 88"},E:{"4":0,"12":0.01523,"13":0.01523,"14":0.06853,"15":0.14847,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00381,"11.1":0.01142,"12.1":0.01523,"13.1":0.06472,"14.1":0.30837},P:{"4":0.23621,"5.0-5.4":0.09425,"6.2-6.4":0.01028,"7.2-7.4":0.05135,"8.2":0.01029,"9.2":0.02054,"10.1":0.02054,"11.1-11.2":0.2054,"12.0":0.04108,"13.0":0.14378,"14.0":0.15405,"15.0":2.70099},I:{"0":0,"3":0,"4":0.00254,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00508,"4.2-4.3":0.01904,"4.4":0,"4.4.3-4.4.4":0.1282},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.13705,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.22298},Q:{"10.4":0},O:{"0":0.03716},H:{"0":0.18179},L:{"0":52.93666},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js
new file mode 100644
index 0000000000..71b2eb925d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BB.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.01442,"52":0.00961,"78":0.03364,"80":0.00481,"87":0.02884,"91":0.06248,"92":0.65842,"93":1.57637,"94":0.00481,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 86 88 89 90 95 3.5 3.6"},D:{"38":0.00961,"47":0.00481,"49":0.06248,"50":0.02884,"62":0.00481,"70":0.00961,"74":0.22108,"75":0.00961,"76":0.04806,"77":0.01442,"78":0.00481,"79":0.29317,"80":0.01442,"81":0.03364,"83":0.00961,"84":0.01442,"85":0.01442,"86":0.02884,"87":0.05767,"88":0.01442,"89":0.02403,"90":0.04325,"91":0.12496,"92":0.41812,"93":2.36936,"94":20.43511,"95":6.18052,"96":0.01442,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 68 69 71 72 73 97 98"},F:{"65":0.00961,"78":0.03845,"79":0.66323,"80":0.33161,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.78777,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.03217,"6.0-6.1":0,"7.0-7.1":0.02298,"8.1-8.4":0.0046,"9.0-9.2":0,"9.3":0.09765,"10.0-10.2":0.0023,"10.3":0.11833,"11.0-11.2":0.00919,"11.3-11.4":0.02413,"12.0-12.1":0.01494,"12.2-12.5":0.59855,"13.0-13.1":0.01838,"13.2":0.0023,"13.3":0.2516,"13.4-13.7":0.14705,"14.0-14.4":0.48022,"14.5-14.8":5.87179},B:{"12":0.00961,"16":0.02884,"17":0.03845,"18":0.02403,"80":0.00481,"84":0.00961,"85":0.00481,"89":0.01442,"91":0.01922,"92":0.04325,"93":0.17782,"94":6.36795,"95":1.90318,_:"13 14 15 79 81 83 86 87 88 90"},E:{"4":0,"12":0.00481,"13":0.02403,"14":0.22108,"15":1.03329,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1","5.1":0.00481,"9.1":0.09131,"11.1":0.00961,"12.1":0.03845,"13.1":0.22588,"14.1":1.58117},P:{"4":0.22741,"5.0-5.4":0.09425,"6.2-6.4":0.01053,"7.2-7.4":0.43316,"8.2":0.01029,"9.2":0.0758,"10.1":0.02106,"11.1-11.2":0.18409,"12.0":0.04332,"13.0":0.15161,"14.0":0.2599,"15.0":4.8406},I:{"0":0,"3":0,"4":0.00042,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00063,"4.2-4.3":0.00042,"4.4":0,"4.4.3-4.4.4":0.01931},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.39409,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.50901},Q:{"10.4":0},O:{"0":0.10907},H:{"0":0.21145},L:{"0":33.85307},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js
new file mode 100644
index 0000000000..2ebbe42188
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BD.js
@@ -0,0 +1 @@
+module.exports={C:{"39":0.00342,"40":0.01368,"41":0.00342,"43":0.00684,"47":0.01368,"48":0.01026,"49":0.00684,"51":0.00684,"52":0.0513,"56":0.00684,"59":0.00684,"60":0.01368,"62":0.00342,"65":0.00342,"67":0.01026,"68":0.00684,"72":0.02052,"75":0.04446,"77":0.00684,"78":0.06498,"79":0.00342,"80":0.00684,"81":0.00684,"82":0.00342,"83":0.01026,"84":0.0171,"85":0.00684,"86":0.00342,"87":0.00684,"88":0.01368,"89":0.03762,"90":0.06156,"91":0.03078,"92":1.21068,"93":3.80304,"94":0.42408,"95":0.00342,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 42 44 45 46 50 53 54 55 57 58 61 63 64 66 69 70 71 73 74 76 3.5 3.6"},D:{"11":0.02052,"38":0.00684,"43":0.00342,"49":0.10944,"50":0.00342,"56":0.00684,"58":0.00342,"61":0.06156,"62":0.00684,"63":0.00342,"64":0.01368,"65":0.00342,"67":0.00342,"69":0.01026,"70":0.00684,"71":0.01026,"72":0.00342,"73":0.01368,"74":0.01368,"75":0.00684,"76":0.00684,"77":0.00342,"78":0.01026,"79":0.04446,"80":0.03078,"81":0.02052,"83":0.02736,"84":0.04104,"85":0.02736,"86":0.06156,"87":0.29412,"88":0.03078,"89":0.03762,"90":0.04788,"91":0.08208,"92":0.21204,"93":0.32832,"94":14.42556,"95":4.01166,"96":0.05814,"97":0.0171,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 51 52 53 54 55 57 59 60 66 68 98"},F:{"29":0.00342,"36":0.00684,"46":0.00342,"65":0.0171,"68":0.00342,"78":0.01026,"79":0.36594,"80":0.23256,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00018,"15":0.35114,"3.2":0.00035,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00406,"6.0-6.1":0.00088,"7.0-7.1":0.05414,"8.1-8.4":0.00159,"9.0-9.2":0.00335,"9.3":0.0291,"10.0-10.2":0.00459,"10.3":0.10441,"11.0-11.2":0.0097,"11.3-11.4":0.00476,"12.0-12.1":0.00917,"12.2-12.5":0.2164,"13.0-13.1":0.00617,"13.2":0.00406,"13.3":0.0097,"13.4-13.7":0.0709,"14.0-14.4":0.14021,"14.5-14.8":0.7386},B:{"12":0.01026,"16":0.00342,"17":0.00684,"18":0.0171,"84":0.00684,"89":0.01026,"92":0.01026,"93":0.02052,"94":0.8379,"95":0.28044,_:"13 14 15 79 80 81 83 85 86 87 88 90 91"},E:{"4":0,"13":0.00684,"14":0.02394,"15":0.06156,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 11.1","10.1":0.00342,"12.1":0.00684,"13.1":0.01368,"14.1":0.07524},P:{"4":0.42112,"5.0-5.4":0.09425,"6.2-6.4":0.01053,"7.2-7.4":0.12634,"8.2":0.01029,"9.2":0.03158,"10.1":0.02106,"11.1-11.2":0.12634,"12.0":0.08422,"13.0":0.1895,"14.0":0.20003,"15.0":1.15808},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00237,"4.2-4.3":0.0079,"4.4":0,"4.4.3-4.4.4":0.12792},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.02741,"9":0.00783,"10":0.01175,"11":0.22319,_:"6 7 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1974},Q:{"10.4":0},O:{"0":3.02022},H:{"0":3.87476},L:{"0":59.45254},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js
new file mode 100644
index 0000000000..2f6a71b668
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BE.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01203,"52":0.06016,"56":0.04813,"60":0.00602,"68":0.01203,"78":0.21658,"81":0.00602,"84":0.01805,"86":0.00602,"87":0.1143,"88":0.04211,"89":0.04211,"90":0.03008,"91":0.06016,"92":1.28141,"93":3.23661,"94":0.01203,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 82 83 85 95 3.5 3.6"},D:{"38":0.01805,"49":0.15642,"53":0.01203,"59":0.00602,"61":0.04813,"65":0.01203,"66":0.01805,"67":0.01805,"69":0.01203,"72":0.00602,"73":0.00602,"74":0.02406,"75":0.05414,"76":0.0361,"77":0.0361,"78":0.34893,"79":0.45722,"80":0.04813,"81":0.01805,"83":0.10227,"84":0.0361,"85":0.06016,"86":0.06016,"87":0.54144,"88":0.05414,"89":0.1143,"90":0.08422,"91":0.1865,"92":0.42714,"93":1.76269,"94":26.48243,"95":7.32749,"96":0.01203,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 60 62 63 64 68 70 71 97 98"},F:{"46":0.00602,"77":0.00602,"78":0.07219,"79":0.70989,"80":0.3369,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00153,"15":3.39292,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0046,"7.0-7.1":0.02301,"8.1-8.4":0.01074,"9.0-9.2":0.00307,"9.3":0.08896,"10.0-10.2":0.00614,"10.3":0.16566,"11.0-11.2":0.03528,"11.3-11.4":0.03681,"12.0-12.1":0.02914,"12.2-12.5":0.67184,"13.0-13.1":0.03375,"13.2":0.01534,"13.3":0.08896,"13.4-13.7":0.31751,"14.0-14.4":1.08291,"14.5-14.8":9.31827},B:{"16":0.01203,"17":0.01203,"18":0.04211,"84":0.01203,"85":0.01203,"86":0.01805,"87":0.00602,"88":0.01203,"89":0.01805,"90":0.03008,"91":0.02406,"92":0.06016,"93":0.17446,"94":5.06547,"95":1.6544,_:"12 13 14 15 79 80 81 83"},E:{"4":0,"11":0.01203,"12":0.01203,"13":0.09024,"14":0.67981,"15":1.55814,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 7.1","6.1":0.00602,"9.1":0.00602,"10.1":0.0361,"11.1":0.08422,"12.1":0.14438,"13.1":0.58355,"14.1":3.05011},P:{"4":0.10638,_:"5.0-5.4 8.2","6.2-6.4":0.06621,"7.2-7.4":0.01103,"9.2":0.02031,"10.1":0.01016,"11.1-11.2":0.05319,"12.0":0.02128,"13.0":0.09575,"14.0":0.14894,"15.0":3.47878},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00147,"4.2-4.3":0.00294,"4.4":0,"4.4.3-4.4.4":0.02746},A:{"11":0.44518,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.29482},Q:{"10.4":0},O:{"0":0.03586},H:{"0":0.10184},L:{"0":20.78558},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js
new file mode 100644
index 0000000000..82cd89ec97
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BF.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00457,"38":0.00685,"40":0.00457,"41":0.00685,"43":0.00913,"45":0.00457,"46":0.00228,"47":0.0274,"48":0.00457,"49":0.00228,"52":0.03425,"56":0.11187,"59":0.00228,"60":0.00228,"67":0.00228,"72":0.02511,"75":0.01598,"76":0.11415,"77":0.00457,"78":0.06392,"80":0.00913,"81":0.00685,"82":0.00685,"83":0.01142,"84":0.00457,"85":0.00457,"86":0.01142,"87":0.00228,"88":0.00913,"89":0.20775,"90":0.00913,"91":0.10958,"92":1.07073,"93":1.69855,"94":0.03425,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 42 44 50 51 53 54 55 57 58 61 62 63 64 65 66 68 69 70 71 73 74 79 95 3.5 3.6"},D:{"27":0.00457,"28":0.00228,"29":0.00457,"31":0.00228,"33":0.03425,"34":0.00457,"37":0.01826,"46":0.00457,"47":0.00228,"49":0.02511,"50":0.04794,"57":0.00457,"58":0.0137,"59":0.08675,"60":0.00228,"62":0.01142,"63":0.00457,"64":0.00228,"65":0.00457,"68":0.00228,"69":0.00228,"70":0.00457,"74":0.0137,"75":0.01826,"76":0.01142,"77":0.04338,"79":0.02283,"80":0.02968,"81":0.0137,"83":0.02055,"85":0.0137,"86":0.02968,"87":0.17579,"88":0.04109,"89":0.03425,"90":0.06849,"91":0.07762,"92":0.20775,"93":0.26711,"94":5.3993,"95":1.76476,"96":0.01826,"97":0.00228,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 30 32 35 36 38 39 40 41 42 43 44 45 48 51 52 53 54 55 56 61 66 67 71 72 73 78 84 98"},F:{"36":0.00228,"77":0.00685,"78":0.00913,"79":0.78992,"80":0.42464,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.92325,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00054,"7.0-7.1":0.01136,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05628,"10.0-10.2":0.00162,"10.3":0.02489,"11.0-11.2":0.17588,"11.3-11.4":0.24137,"12.0-12.1":0.03896,"12.2-12.5":0.96709,"13.0-13.1":0.04005,"13.2":0.02273,"13.3":0.09741,"13.4-13.7":0.21485,"14.0-14.4":0.97033,"14.5-14.8":1.62299},B:{"12":0.06164,"13":0.01142,"14":0.00913,"15":0.00228,"16":0.03653,"17":0.02511,"18":0.15981,"84":0.0137,"85":0.0274,"88":0.00685,"89":0.01826,"90":0.00457,"91":0.01598,"92":0.05023,"93":0.06392,"94":1.26478,"95":0.32419,_:"79 80 81 83 86 87"},E:{"4":0,"10":0.00457,"12":0.01598,"13":0.01142,"14":0.03425,"15":0.07534,_:"0 5 6 7 8 9 11 3.1 3.2 6.1 7.1 9.1","5.1":0.01142,"10.1":0.00228,"11.1":0.00228,"12.1":0.00457,"13.1":0.02968,"14.1":0.13926},P:{"4":0.04255,"5.0-5.4":0.09425,"6.2-6.4":0.01035,"7.2-7.4":0.06382,"8.2":0.01029,"9.2":0.11701,"10.1":0.03182,"11.1-11.2":0.03191,"12.0":0.01064,"13.0":0.06382,"14.0":0.2872,"15.0":0.56376},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00145,"4.2-4.3":0.00218,"4.4":0,"4.4.3-4.4.4":0.11984},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.36071,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01543},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15434},Q:{"10.4":0.14662},O:{"0":0.84887},H:{"0":4.7781},L:{"0":70.51414},S:{"2.5":0.00772}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js
new file mode 100644
index 0000000000..c26767fb58
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BG.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00967,"51":0.00484,"52":0.25142,"56":0.01934,"60":0.01451,"62":0.00484,"63":0.01934,"66":0.00967,"67":0.01451,"68":0.0822,"70":0.00967,"72":0.01934,"73":0.00484,"75":0.00484,"76":0.00484,"77":0.00484,"78":0.27076,"79":0.00967,"80":0.02418,"81":0.01451,"82":0.00484,"83":0.00967,"84":0.02418,"85":0.01451,"86":0.01934,"87":0.02901,"88":0.05319,"89":0.14022,"90":0.03385,"91":0.07736,"92":1.75994,"93":4.17744,"94":0.02418,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 53 54 55 57 58 59 61 64 65 69 71 74 95 3.5 3.6"},D:{"38":0.00967,"48":0.03385,"49":0.59471,"50":0.00967,"53":0.00484,"56":0.00967,"58":0.01934,"61":0.42548,"63":0.01451,"64":0.00484,"65":0.00484,"66":0.00484,"67":0.01451,"68":0.00967,"69":0.04835,"70":0.00967,"71":0.01451,"72":0.00484,"73":0.00967,"74":0.00967,"75":0.01934,"76":0.00967,"77":0.02418,"78":0.01451,"79":0.13538,"80":0.02418,"81":0.05319,"83":0.03868,"84":0.03868,"85":0.03385,"86":0.05319,"87":0.22241,"88":0.04835,"89":0.07253,"90":0.04835,"91":0.22725,"92":0.34812,"93":1.27644,"94":22.78252,"95":6.39671,"96":0.01934,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 51 52 54 55 57 59 60 62 97 98"},F:{"28":0.00967,"36":0.00967,"40":0.00484,"45":0.00484,"46":0.00967,"77":0.00484,"78":0.08703,"79":1.17007,"80":0.64789,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.80584,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00223,"6.0-6.1":0.00223,"7.0-7.1":0.01339,"8.1-8.4":0,"9.0-9.2":0.00149,"9.3":0.02902,"10.0-10.2":0.00595,"10.3":0.0625,"11.0-11.2":0.01637,"11.3-11.4":0.02976,"12.0-12.1":0.02232,"12.2-12.5":0.31697,"13.0-13.1":0.01488,"13.2":0.01116,"13.3":0.04985,"13.4-13.7":0.17485,"14.0-14.4":0.50596,"14.5-14.8":4.37137},B:{"16":0.00484,"17":0.00967,"18":0.02418,"84":0.00967,"85":0.00967,"87":0.00484,"89":0.01451,"91":0.00967,"92":0.01451,"93":0.07736,"94":2.02103,"95":0.71558,_:"12 13 14 15 79 80 81 83 86 88 90"},E:{"4":0,"13":0.01451,"14":0.09187,"15":0.28527,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01451,"12.1":0.02418,"13.1":0.06286,"14.1":0.39164},P:{"4":0.0745,_:"5.0-5.4 8.2","6.2-6.4":0.06621,"7.2-7.4":0.1878,"9.2":0.02087,"10.1":0.01016,"11.1-11.2":0.0745,"12.0":0.04257,"13.0":0.10643,"14.0":0.17029,"15.0":2.14986},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00338,"4.2-4.3":0.01465,"4.4":0,"4.4.3-4.4.4":0.10591},A:{"8":0.00501,"9":0.00501,"11":0.67655,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.18074},Q:{"10.4":0.01033},O:{"0":0.04131},H:{"0":0.22978},L:{"0":41.95478},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js
new file mode 100644
index 0000000000..c218b84415
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BH.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00402,"49":0.02413,"52":0.01608,"63":0.01206,"68":0.00804,"78":0.07238,"79":0.00402,"88":0.00402,"89":0.00804,"91":0.01608,"92":0.28147,"93":0.84039,"94":0.00402,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 69 70 71 72 73 74 75 76 77 80 81 82 83 84 85 86 87 90 95 3.5 3.6"},D:{"38":0.01206,"49":0.07238,"50":0.00804,"53":0.00402,"56":0.01608,"60":0.01608,"62":0.02815,"63":0.01608,"65":0.04825,"66":0.00804,"69":0.00402,"73":0.04825,"74":0.00804,"76":0.00804,"77":0.00402,"78":0.01206,"79":0.06032,"80":0.02413,"81":0.04021,"83":0.04021,"84":0.0965,"85":0.0764,"86":0.1528,"87":0.19703,"88":0.03217,"89":0.11259,"90":0.18095,"91":0.08444,"92":0.3257,"93":1.13794,"94":20.68805,"95":5.935,"96":0.01608,"97":0.00402,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 51 52 54 55 57 58 59 61 64 67 68 70 71 72 75 98"},F:{"28":0.00402,"36":0.01608,"46":0.00804,"68":0.04825,"75":0.00402,"76":0.00804,"77":0.01608,"78":0.06434,"79":0.22116,"80":0.04423,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.66344,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.04351,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.11883,"10.0-10.2":0.0251,"10.3":0.12552,"11.0-11.2":0.05188,"11.3-11.4":0.0251,"12.0-12.1":0.04519,"12.2-12.5":0.43848,"13.0-13.1":0.04017,"13.2":0.01004,"13.3":0.10711,"13.4-13.7":0.40334,"14.0-14.4":1.22674,"14.5-14.8":8.40479},B:{"12":0.00402,"15":0.00804,"17":0.01206,"18":0.05227,"84":0.00402,"85":0.00402,"86":0.00402,"89":0.01608,"91":0.00804,"92":0.02815,"93":0.11661,"94":2.69809,"95":0.91277,_:"13 14 16 79 80 81 83 87 88 90"},E:{"4":0,"11":0.00804,"12":0.00804,"13":0.06434,"14":0.46644,"15":0.89668,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02011,"12.1":0.06836,"13.1":0.26941,"14.1":1.50385},P:{"4":0.216,"5.0-5.4":0.09425,"6.2-6.4":0.02088,"7.2-7.4":0.09257,"8.2":0.01029,"9.2":0.06171,"10.1":0.01029,"11.1-11.2":0.19543,"12.0":0.05143,"13.0":0.216,"14.0":0.39085,"15.0":3.16795},I:{"0":0,"3":0,"4":0.00208,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00156,"4.4":0,"4.4.3-4.4.4":0.02028},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00829,"9":0.01244,"11":0.37735,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.19731},Q:{"10.4":0},O:{"0":3.26453},H:{"0":0.52077},L:{"0":35.37604},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js
new file mode 100644
index 0000000000..1e7b9d50cf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BI.js
@@ -0,0 +1 @@
+module.exports={C:{"5":0.00587,"7":0.01469,"17":0.00587,"20":0.04112,"47":0.03818,"52":0.04699,"54":0.00294,"56":0.06168,"57":0.00294,"59":0.01469,"64":0.00294,"70":0.01469,"72":0.01175,"77":0.00294,"78":0.0235,"79":0.00587,"81":0.00294,"84":0.00587,"88":0.02643,"89":0.10867,"90":0.00881,"91":0.01762,"92":1.03382,"93":2.07059,"94":0.07343,_:"2 3 4 6 8 9 10 11 12 13 14 15 16 18 19 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 55 58 60 61 62 63 65 66 67 68 69 71 73 74 75 76 80 82 83 85 86 87 95 3.5 3.6"},D:{"23":0.00881,"24":0.01469,"25":0.00587,"26":0.01175,"36":0.00294,"47":0.00881,"49":0.04112,"59":0.00881,"63":0.02056,"64":0.03818,"65":0.00881,"66":0.00294,"68":0.00587,"70":0.01762,"71":0.00294,"72":0.00294,"73":0.00881,"74":0.02937,"75":0.00587,"76":0.01469,"77":0.00294,"78":0.02643,"79":0.01469,"80":0.0235,"81":0.27314,"83":0.02056,"84":0.00587,"85":0.00881,"86":0.01469,"87":0.06461,"88":0.0235,"89":0.05287,"90":0.1351,"91":0.1586,"92":0.34363,"93":0.65201,"94":10.10034,"95":2.49058,"96":0.01469,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 60 61 62 67 69 97 98"},F:{"43":0.00294,"50":0.00881,"65":0.00587,"70":0.01175,"74":0.00294,"75":0.00294,"77":0.01762,"78":0.05874,"79":0.73131,"80":0.36419,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 71 72 73 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00087,"15":0.45358,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01912,"8.1-8.4":0,"9.0-9.2":0.00087,"9.3":0.03693,"10.0-10.2":0,"10.3":0.1299,"11.0-11.2":0.02954,"11.3-11.4":0.00521,"12.0-12.1":0.02781,"12.2-12.5":0.70339,"13.0-13.1":0.01608,"13.2":0.02563,"13.3":0.19116,"13.4-13.7":0.26893,"14.0-14.4":1.14394,"14.5-14.8":1.29078},B:{"12":0.05287,"13":0.03231,"14":0.01469,"15":0.01469,"16":0.00881,"17":0.03524,"18":0.25258,"84":0.01469,"85":0.01469,"89":0.04699,"91":0.0235,"92":0.03524,"93":0.11161,"94":2.38778,"95":0.77243,_:"79 80 81 83 86 87 88 90"},E:{"4":0,"13":0.00881,"14":0.03818,"15":0.07343,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00587,"10.1":0.00294,"11.1":0.00587,"12.1":0.00881,"13.1":0.05287,"14.1":0.19384},P:{"4":2.44745,"5.0-5.4":0.05099,"6.2-6.4":0.0204,"7.2-7.4":0.09178,"8.2":0.01029,"9.2":0.07138,"10.1":0.08158,"11.1-11.2":0.07138,"12.0":0.01064,"13.0":0.04079,"14.0":0.12237,"15.0":0.63226},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00185,"4.2-4.3":0.00328,"4.4":0,"4.4.3-4.4.4":0.03725},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01175,"11":0.17916,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.09182},Q:{"10.4":0.04238},O:{"0":1.29253},H:{"0":16.83734},L:{"0":48.27307},S:{"2.5":0.02825}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js
new file mode 100644
index 0000000000..8ba04c664f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BJ.js
@@ -0,0 +1 @@
+module.exports={C:{"19":0.00652,"43":0.00652,"47":0.00977,"48":0.00326,"49":0.00652,"52":0.00977,"56":0.00326,"60":0.00652,"65":0.01629,"68":0.00977,"72":0.01955,"73":0.00977,"78":0.09774,"81":0.00977,"84":0.00652,"85":0.09122,"86":0.01303,"87":0.01303,"88":0.01629,"89":0.04235,"90":0.04887,"91":0.04561,"92":0.62879,"93":1.51171,"94":0.02606,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 50 51 53 54 55 57 58 59 61 62 63 64 66 67 69 70 71 74 75 76 77 79 80 82 83 95 3.5 3.6"},D:{"23":0.00652,"25":0.09122,"28":0.00326,"29":0.00652,"36":0.00652,"40":0.02606,"43":0.00977,"44":0.00326,"47":0.00652,"48":0.00652,"49":0.01955,"50":0.00652,"51":0.00326,"53":0.00977,"55":0.00977,"57":0.00652,"62":0.11077,"63":0.01955,"64":0.00977,"65":0.01303,"67":0.02281,"68":0.00326,"69":0.12706,"70":0.01955,"71":0.02281,"72":0.01303,"73":0.01303,"74":0.04235,"75":0.00977,"76":0.02281,"77":0.04235,"78":0.02281,"79":0.13032,"80":0.05213,"81":0.01955,"83":0.02606,"84":0.06842,"85":0.02281,"86":0.06842,"87":0.39096,"88":0.09448,"89":0.06516,"90":0.17919,"91":0.20525,"92":0.48544,"93":0.98066,"94":11.27594,"95":3.00062,"96":0.00652,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 26 27 30 31 32 33 34 35 37 38 39 41 42 45 46 52 54 56 58 59 60 61 66 97 98"},F:{"42":0.00326,"57":0.00326,"64":0.00326,"73":0.21177,"75":0.00652,"77":0.00652,"78":0.04561,"79":0.70373,"80":0.28019,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 65 66 67 68 69 70 71 72 74 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00124,"15":1.28041,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00248,"7.0-7.1":0.0885,"8.1-8.4":0,"9.0-9.2":0.00124,"9.3":0.02414,"10.0-10.2":0.00124,"10.3":0.01238,"11.0-11.2":0.03466,"11.3-11.4":0.01361,"12.0-12.1":0.0099,"12.2-12.5":1.31506,"13.0-13.1":0.0328,"13.2":0.00681,"13.3":0.06436,"13.4-13.7":0.13553,"14.0-14.4":0.87444,"14.5-14.8":2.29038},B:{"12":0.01629,"13":0.00326,"15":0.00652,"16":0.00326,"17":0.00652,"18":0.04887,"84":0.00977,"85":0.00652,"89":0.03584,"91":0.00326,"92":0.03258,"93":0.0391,"94":1.13378,"95":0.36164,_:"14 79 80 81 83 86 87 88 90"},E:{"4":0,"13":0.00977,"14":0.07493,"15":0.101,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.01303,"12.1":0.0391,"13.1":0.04887,"14.1":0.15964},P:{"4":0.02174,"5.0-5.4":0.09425,"6.2-6.4":0.01053,"7.2-7.4":0.03262,"8.2":0.01029,"9.2":0.01125,"10.1":0.02106,"11.1-11.2":0.01087,"12.0":0.0225,"13.0":0.10872,"14.0":0.65233,"15.0":0.38053},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00067,"4.2-4.3":0.00652,"4.4":0,"4.4.3-4.4.4":0.04},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01273,"11":0.16972,_:"6 7 9 10 5.5"},J:{"7":0,"10":0.00674},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13484},Q:{"10.4":0.00674},O:{"0":0.60678},H:{"0":4.25739},L:{"0":62.739},S:{"2.5":0.10787}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js
new file mode 100644
index 0000000000..2afceb1d2f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BM.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.02194,"52":0.00548,"78":0.21936,"89":0.01097,"90":0.00548,"91":0.01645,"92":0.39485,"93":0.75679,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 94 95 3.5 3.6"},D:{"39":0.00548,"49":0.02742,"53":0.00548,"63":0.04387,"65":0.0329,"67":0.02742,"71":0.01645,"74":0.1371,"76":0.14258,"77":0.10968,"78":0.01097,"79":0.01097,"80":0.00548,"81":0.01097,"83":0.01097,"84":0.01097,"85":0.11516,"86":0.15904,"87":0.11516,"88":0.06581,"89":0.04936,"90":0.07678,"91":0.34001,"92":0.57582,"93":2.35264,"94":21.19566,"95":5.97208,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 66 68 69 70 72 73 75 96 97 98"},F:{"78":0.02194,"79":0.7184,"80":0.42227,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.75556,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00547,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00547,"9.0-9.2":0.08207,"9.3":0.22431,"10.0-10.2":0.00274,"10.3":0.17781,"11.0-11.2":0.01915,"11.3-11.4":0.01915,"12.0-12.1":0.0465,"12.2-12.5":1.37324,"13.0-13.1":0.02462,"13.2":0,"13.3":0.31185,"13.4-13.7":0.72492,"14.0-14.4":1.59208,"14.5-14.8":16.97945},B:{"14":0.00548,"16":0.00548,"17":0.01097,"18":0.07129,"86":0.00548,"92":0.08774,"93":0.32904,"94":5.31948,"95":1.36003,_:"12 13 15 79 80 81 83 84 85 87 88 89 90 91"},E:{"4":0,"13":0.06032,"14":0.57034,"15":2.48974,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01645,"10.1":0.64711,"11.1":0.07129,"12.1":0.10968,"13.1":1.51907,"14.1":6.02143},P:{"4":0.37713,"5.0-5.4":0.09425,"6.2-6.4":0.01053,"7.2-7.4":0.06465,"8.2":0.01029,"9.2":0.01125,"10.1":0.02106,"11.1-11.2":0.03233,"12.0":0.01078,"13.0":0.05388,"14.0":0.20473,"15.0":3.55576},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.01097,"11":0.66356,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.10387},Q:{"10.4":0},O:{"0":0},H:{"0":0.00855},L:{"0":13.52995},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js
new file mode 100644
index 0000000000..35d56309ec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BN.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00435,"48":0.00869,"52":0.01738,"72":0.00435,"78":0.03042,"80":0.00435,"81":0.00869,"83":0.00435,"86":0.01304,"88":0.00869,"89":0.02608,"90":0.01738,"91":0.04346,"92":0.63017,"93":1.52979,"94":0.04346,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 82 84 85 87 95 3.5 3.6"},D:{"26":0.01304,"33":0.01304,"34":0.00869,"38":0.04781,"47":0.14342,"49":0.30422,"50":0.00435,"53":0.01304,"55":0.05215,"56":0.00435,"60":0.00435,"62":0.04781,"63":0.02608,"65":0.05215,"67":0.02173,"68":0.00869,"69":0.00869,"70":0.00869,"71":0.00435,"72":0.02608,"73":0.03477,"74":0.03042,"75":0.0565,"78":0.03911,"79":0.12169,"80":0.02173,"81":0.09127,"83":0.00869,"84":0.01304,"85":0.01304,"86":0.02608,"87":0.16515,"88":0.03042,"89":0.03911,"90":0.0565,"91":0.13473,"92":0.46937,"93":0.90831,"94":22.13418,"95":5.66718,"96":0.04346,"97":0.00435,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 35 36 37 39 40 41 42 43 44 45 46 48 51 52 54 57 58 59 61 64 66 76 77 98"},F:{"28":0.02173,"36":0.00869,"40":0.00869,"46":0.01304,"77":0.01738,"78":0.06954,"79":0.58671,"80":0.26511,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.13911,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00983,"7.0-7.1":0.06176,"8.1-8.4":0.03509,"9.0-9.2":0.1109,"9.3":0.42112,"10.0-10.2":0.01684,"10.3":0.2611,"11.0-11.2":0.04492,"11.3-11.4":0.01965,"12.0-12.1":0.0393,"12.2-12.5":1.10054,"13.0-13.1":0.03088,"13.2":0.02106,"13.3":0.08844,"13.4-13.7":0.2625,"14.0-14.4":0.84225,"14.5-14.8":5.52794},B:{"14":0.01738,"17":0.01304,"18":0.03477,"85":0.00435,"89":0.00435,"92":0.03042,"93":0.04346,"94":1.74275,"95":0.55194,_:"12 13 15 16 79 80 81 83 84 86 87 88 90 91"},E:{"4":0,"11":0.00869,"12":0.01304,"13":0.13907,"14":0.45633,"15":1.55152,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.18253,"10.1":0.03911,"11.1":0.07388,"12.1":0.13907,"13.1":0.35637,"14.1":2.11216},P:{"4":0.59398,"5.0-5.4":0.09425,"6.2-6.4":0.01035,"7.2-7.4":0.03182,"8.2":0.01029,"9.2":0.02121,"10.1":0.03182,"11.1-11.2":0.04243,"12.0":0.04243,"13.0":0.09546,"14.0":0.11667,"15.0":1.76072},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00109,"4.2-4.3":0.00518,"4.4":0,"4.4.3-4.4.4":0.01635},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.07823,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.32793},Q:{"10.4":0},O:{"0":2.35206},H:{"0":1.94843},L:{"0":35.70311},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js
new file mode 100644
index 0000000000..6b99b0a4dd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BO.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00404,"48":0.00404,"52":0.03638,"56":0.00404,"63":0.00808,"68":0.00808,"69":0.00404,"71":0.00404,"72":0.02021,"73":0.01213,"77":0.00404,"78":0.06063,"79":0.00808,"80":0.00808,"82":0.00808,"83":0.00808,"84":0.04042,"85":0.01213,"86":0.00808,"88":0.02425,"89":0.03234,"90":0.02021,"91":0.02829,"92":0.6831,"93":1.72593,"94":0.02425,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 64 65 66 67 70 74 75 76 81 87 95 3.5 3.6"},D:{"24":0.00404,"37":0.00404,"38":0.01213,"49":0.05659,"58":0.00404,"62":0.00404,"63":0.01213,"64":0.00808,"65":0.00808,"66":0.00808,"67":0.02021,"68":0.00808,"69":0.01617,"70":0.08892,"71":0.00808,"72":0.01213,"73":0.00404,"74":0.00808,"75":0.01213,"76":0.01617,"77":0.01213,"78":0.01213,"79":0.08084,"80":0.03638,"81":0.03638,"83":0.04446,"84":0.03638,"85":0.14955,"86":0.06871,"87":0.11722,"88":0.04446,"89":0.04446,"90":0.05659,"91":0.41228,"92":0.44866,"93":0.65885,"94":22.2795,"95":6.24489,"96":0.00808,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 97 98"},F:{"72":0.00404,"77":0.01617,"78":0.05255,"79":1.14389,"80":0.55375,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00052,"15":0.75191,"3.2":0.00052,"4.0-4.1":0,"4.2-4.3":0.00026,"5.0-5.1":0.00155,"6.0-6.1":0.00258,"7.0-7.1":0.00722,"8.1-8.4":0.00206,"9.0-9.2":0.00413,"9.3":0.02451,"10.0-10.2":0.00232,"10.3":0.01264,"11.0-11.2":0.00774,"11.3-11.4":0.00826,"12.0-12.1":0.0049,"12.2-12.5":0.14218,"13.0-13.1":0.00439,"13.2":0.00335,"13.3":0.00929,"13.4-13.7":0.08205,"14.0-14.4":0.21855,"14.5-14.8":1.28887},B:{"12":0.00404,"13":0.01617,"14":0.00404,"15":0.00404,"16":0.00808,"17":0.01213,"18":0.03638,"84":0.00808,"86":0.00404,"89":0.01617,"91":0.01213,"92":0.03638,"93":0.02829,"94":1.51575,"95":0.47291,_:"79 80 81 83 85 87 88 90"},E:{"4":0,"13":0.02829,"14":0.05659,"15":0.17381,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.06871,"11.1":0.01213,"12.1":0.01213,"13.1":0.06467,"14.1":0.22635},P:{"4":0.51386,"5.0-5.4":0.09425,"6.2-6.4":0.01028,"7.2-7.4":0.53441,"8.2":0.01029,"9.2":0.05139,"10.1":0.03083,"11.1-11.2":0.32887,"12.0":0.10277,"13.0":0.32887,"14.0":0.40081,"15.0":2.10683},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00383,"4.2-4.3":0.00918,"4.4":0,"4.4.3-4.4.4":0.0704},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00838,"10":0.00419,"11":0.1006,_:"6 7 9 5.5"},J:{"7":0,"10":0.03575},N:{_:"10 11"},R:{_:"0"},M:{"0":0.14895},Q:{"10.4":0},O:{"0":0.22045},H:{"0":0.44561},L:{"0":53.00182},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js
new file mode 100644
index 0000000000..93aad693bf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BR.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.0299,"60":0.00997,"67":0.00498,"68":0.01495,"72":0.00498,"78":0.07476,"79":0.00997,"80":0.00997,"81":0.00997,"82":0.00498,"83":0.00498,"84":0.00997,"86":0.00498,"87":0.00498,"88":0.01994,"89":0.01495,"90":0.01994,"91":0.0299,"92":0.55821,"93":1.30581,"94":0.00997,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 69 70 71 73 74 75 76 77 85 95 3.5 3.6"},D:{"38":0.00997,"43":0.00498,"47":0.00997,"49":0.09968,"51":0.00997,"53":0.00498,"55":0.00997,"58":0.00997,"61":0.10965,"63":0.01495,"65":0.00498,"67":0.00997,"68":0.00498,"69":0.00997,"70":0.00997,"71":0.00498,"72":0.00997,"73":0.02492,"74":0.01994,"75":0.03987,"76":0.01994,"77":0.00997,"78":0.01994,"79":0.14952,"80":0.03489,"81":0.04984,"83":0.04486,"84":0.08473,"85":0.07476,"86":0.09968,"87":0.45853,"88":0.03987,"89":0.07974,"90":0.08473,"91":2.26274,"92":0.38875,"93":1.01674,"94":26.57469,"95":6.73837,"96":0.03987,"97":0.00997,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 50 52 54 56 57 59 60 62 64 66 98"},F:{"36":0.00997,"71":0.00498,"72":0.00498,"75":0.00498,"77":0.00997,"78":0.18441,"79":2.3375,"80":1.03169,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 73 74 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00062,"15":1.51879,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00558,"6.0-6.1":0.00248,"7.0-7.1":0.00248,"8.1-8.4":0.00496,"9.0-9.2":0.00124,"9.3":0.03346,"10.0-10.2":0.00186,"10.3":0.0409,"11.0-11.2":0.00806,"11.3-11.4":0.01363,"12.0-12.1":0.00868,"12.2-12.5":0.28133,"13.0-13.1":0.01115,"13.2":0.00496,"13.3":0.03718,"13.4-13.7":0.14066,"14.0-14.4":0.39039,"14.5-14.8":3.68637},B:{"14":0.00498,"15":0.00498,"16":0.00498,"17":0.00498,"18":0.02492,"84":0.00997,"85":0.00498,"86":0.00498,"89":0.01994,"90":0.00498,"91":0.00997,"92":0.01994,"93":0.10466,"94":2.47206,"95":0.66287,_:"12 13 79 80 81 83 87 88"},E:{"4":0,"13":0.01495,"14":0.06479,"15":0.22926,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00997,"12.1":0.01495,"13.1":0.07476,"14.1":0.2791},P:{"4":0.1252,_:"5.0-5.4 8.2","6.2-6.4":0.06621,"7.2-7.4":0.1878,"9.2":0.02087,"10.1":0.01016,"11.1-11.2":0.11477,"12.0":0.0313,"13.0":0.11477,"14.0":0.1565,"15.0":1.85712},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00232,"4.2-4.3":0.00509,"4.4":0,"4.4.3-4.4.4":0.02269},A:{"8":0.01645,"9":0.01096,"10":0.00548,"11":0.1864,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.1254},Q:{"10.4":0},O:{"0":0.11537},H:{"0":0.16621},L:{"0":41.48282},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js
new file mode 100644
index 0000000000..300400c0a2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BS.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.06149,"52":0.01419,"78":0.05203,"85":0.01419,"88":0.03784,"89":0.01419,"91":0.00946,"92":0.45881,"93":0.98384,"94":0.01892,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 90 95 3.5 3.6"},D:{"43":0.00473,"49":0.1419,"56":0.00946,"58":0.00473,"63":0.00473,"65":0.03311,"67":0.00946,"69":0.00473,"71":0.00946,"72":0.01892,"73":0.00473,"74":0.16555,"75":0.05203,"76":0.36894,"77":0.02365,"78":0.00946,"79":0.03784,"80":0.02365,"81":0.01892,"83":0.05676,"84":0.00946,"85":0.00473,"86":0.00946,"87":0.08514,"88":0.01419,"89":0.03311,"90":0.05676,"91":0.31691,"92":0.54868,"93":1.95822,"94":16.3185,"95":4.22389,"96":0.03784,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 57 59 60 61 62 64 66 68 70 97 98"},F:{"69":0.00473,"78":0.01419,"79":0.19866,"80":0.08514,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.01444,"15":4.09739,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00181,"7.0-7.1":0,"8.1-8.4":0.00181,"9.0-9.2":0,"9.3":0.11191,"10.0-10.2":0,"10.3":0.15704,"11.0-11.2":0.0361,"11.3-11.4":0.02527,"12.0-12.1":0.03249,"12.2-12.5":0.88085,"13.0-13.1":0.03069,"13.2":0.01264,"13.3":0.12274,"13.4-13.7":0.36822,"14.0-14.4":1.17687,"14.5-14.8":10.96368},B:{"13":0.05203,"14":0.00946,"15":0.00946,"16":0.05676,"17":0.02838,"18":0.09933,"84":0.00473,"86":0.06149,"88":0.00473,"89":0.01419,"90":0.00946,"91":0.02365,"92":0.07568,"93":0.25542,"94":6.39023,"95":1.79267,_:"12 79 80 81 83 85 87"},E:{"4":0,"12":0.00473,"13":0.05676,"14":0.4257,"15":1.19669,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00473,"10.1":0.01419,"11.1":0.0473,"12.1":0.09933,"13.1":0.52976,"14.1":3.06031},P:{"4":0.09465,"5.0-5.4":0.09425,"6.2-6.4":0.02088,"7.2-7.4":0.4522,"8.2":0.01044,"9.2":0.10516,"10.1":0.03155,"11.1-11.2":0.87285,"12.0":0.0631,"13.0":0.27342,"14.0":0.53633,"15.0":4.56404},I:{"0":0,"3":0,"4":0.00115,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00172,"4.4":0,"4.4.3-4.4.4":0.02349},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.45408,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.12121},Q:{"10.4":0},O:{"0":0.01054},H:{"0":0.04989},L:{"0":32.88864},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js
new file mode 100644
index 0000000000..777b5eb176
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BT.js
@@ -0,0 +1 @@
+module.exports={C:{"30":0.00575,"48":0.00288,"52":0.00288,"57":0.00575,"68":0.03451,"72":0.00575,"78":0.00575,"87":0.02301,"88":0.00288,"89":0.01438,"90":0.02301,"91":0.0115,"92":0.32786,"93":0.58383,"94":0.06327,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 95 3.5 3.6"},D:{"20":0.01438,"29":0.02013,"41":0.00575,"49":0.2157,"60":0.00288,"65":0.01438,"66":0.00575,"67":0.01438,"68":0.00288,"69":0.01438,"71":0.01726,"72":0.00863,"74":0.0115,"75":0.01438,"77":0.02876,"78":0.0115,"79":0.05464,"80":0.02876,"81":0.03739,"83":0.00288,"84":0.00288,"85":0.00863,"86":0.01438,"87":0.16393,"88":0.0115,"89":0.03739,"90":0.04889,"91":0.08916,"92":0.3595,"93":0.90594,"94":16.11423,"95":3.61513,"96":0.06327,"97":0.0115,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 64 70 73 76 98"},F:{"46":0.00863,"77":0.00863,"78":0.00575,"79":0.16106,"80":0.04314,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.58456,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00735,"8.1-8.4":0,"9.0-9.2":0.00735,"9.3":0.01798,"10.0-10.2":0.0049,"10.3":0.01553,"11.0-11.2":0.06456,"11.3-11.4":0.01716,"12.0-12.1":0.01798,"12.2-12.5":0.49196,"13.0-13.1":0.02533,"13.2":0.03269,"13.3":0.14628,"13.4-13.7":0.2329,"14.0-14.4":1.60254,"14.5-14.8":3.90215},B:{"12":0.01438,"13":0.0115,"14":0.00575,"15":0.00575,"16":0.01726,"17":0.01438,"18":0.02876,"84":0.0115,"85":0.01726,"87":0.01726,"88":0.00288,"89":0.01726,"90":0.00863,"91":0.02588,"92":0.08916,"93":0.12654,"94":1.35172,"95":0.33362,_:"79 80 81 83 86"},E:{"4":0,"12":0.00575,"13":0.03451,"14":0.16393,"15":0.40552,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0115,"11.1":0.00575,"12.1":0.05464,"13.1":0.10929,"14.1":0.44578},P:{"4":0.28982,"5.0-5.4":0.09425,"6.2-6.4":0.01053,"7.2-7.4":0.21736,"8.2":0.01029,"9.2":0.09316,"10.1":0.01035,"11.1-11.2":0.12421,"12.0":0.0414,"13.0":0.30017,"14.0":0.25876,"15.0":0.9626},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.04026,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.03562},Q:{"10.4":0},O:{"0":3.5905},H:{"0":0.22257},L:{"0":58.73317},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js
new file mode 100644
index 0000000000..02d7439d03
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BW.js
@@ -0,0 +1 @@
+module.exports={C:{"32":0.00463,"34":0.01853,"36":0.00463,"47":0.00926,"49":0.00463,"50":0.00926,"52":0.06948,"60":0.01853,"65":0.00926,"70":0.00926,"72":0.00926,"78":0.1297,"81":0.00463,"82":0.0139,"83":0.00463,"84":0.00463,"86":0.00926,"87":0.00463,"88":0.02316,"89":0.06485,"90":0.01853,"91":0.02316,"92":0.73186,"93":1.77406,"94":0.1297,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 35 37 38 39 40 41 42 43 44 45 46 48 51 53 54 55 56 57 58 59 61 62 63 64 66 67 68 69 71 73 74 75 76 77 79 80 85 95 3.5 3.6"},D:{"38":0.00463,"43":0.05095,"49":0.03242,"53":0.00926,"57":0.03242,"58":0.00926,"62":0.00463,"63":0.01853,"65":0.05558,"66":0.02779,"67":0.03242,"68":0.00926,"69":0.02316,"71":0.02779,"72":0.00926,"73":0.0139,"74":0.02779,"75":0.01853,"76":0.0139,"77":0.00926,"78":0.00926,"79":0.02779,"80":0.05095,"81":0.05095,"83":0.02316,"84":0.03706,"85":0.02779,"86":0.03706,"87":0.15749,"88":0.07874,"89":0.05095,"90":0.1019,"91":0.49562,"92":0.43541,"93":1.3757,"94":19.99634,"95":5.76684,"96":0.13433,"97":0.0139,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 55 56 59 60 61 64 70 98"},F:{"73":0.00926,"77":0.00926,"78":0.02316,"79":0.73186,"80":0.31498,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.07194,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0138,"6.0-6.1":0.00039,"7.0-7.1":0.21013,"8.1-8.4":0,"9.0-9.2":0.00237,"9.3":0.05204,"10.0-10.2":0.00158,"10.3":0.05401,"11.0-11.2":0.04849,"11.3-11.4":0.01892,"12.0-12.1":0.041,"12.2-12.5":0.32643,"13.0-13.1":0.00355,"13.2":0.0067,"13.3":0.08516,"13.4-13.7":0.10211,"14.0-14.4":0.24049,"14.5-14.8":1.66173},B:{"12":0.03706,"13":0.04169,"14":0.02316,"15":0.04169,"16":0.06485,"17":0.04169,"18":0.15286,"80":0.0139,"84":0.05558,"85":0.00926,"88":0.00463,"89":0.1158,"90":0.01853,"91":0.06485,"92":0.05095,"93":0.17602,"94":3.64075,"95":1.33402,_:"79 81 83 86 87"},E:{"4":0,"11":0.0139,"12":0.02316,"13":0.00926,"14":0.31498,"15":0.26402,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00926,"11.1":0.01853,"12.1":0.02779,"13.1":0.10654,"14.1":0.58826},P:{"4":0.33715,"5.0-5.4":0.09425,"6.2-6.4":0.01022,"7.2-7.4":0.35759,"8.2":0.01029,"9.2":0.0613,"10.1":0.02054,"11.1-11.2":0.14303,"12.0":0.03065,"13.0":0.1839,"14.0":0.39845,"15.0":1.63468},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00071,"4.2-4.3":0.00355,"4.4":0,"4.4.3-4.4.4":0.08164},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.00564,"11":1.41638,_:"6 7 8 10 5.5"},J:{"7":0,"10":0.01611},N:{_:"10 11"},R:{_:"0"},M:{"0":0.18255},Q:{"10.4":0},O:{"0":1.49795},H:{"0":1.11826},L:{"0":47.1007},S:{"2.5":0.03758}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js
new file mode 100644
index 0000000000..c2d1724e78
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BY.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00592,"50":0.01777,"52":0.42638,"53":0.00592,"55":0.01184,"56":0.00592,"60":0.00592,"72":0.01184,"78":0.14805,"79":0.01777,"80":0.00592,"81":0.02369,"82":0.01777,"84":0.02369,"85":0.00592,"86":0.02369,"88":0.05922,"89":0.02961,"90":0.01777,"91":0.14213,"92":0.6988,"93":1.75883,"94":0.01777,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 51 54 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 83 87 95 3.5 3.6"},D:{"22":0.01184,"25":0.00592,"41":0.01777,"49":0.33163,"51":0.03553,"53":0.0533,"57":0.02961,"58":0.02961,"59":0.03553,"61":0.14805,"63":0.01184,"64":0.00592,"66":0.01777,"69":0.20135,"70":0.02369,"71":0.01777,"72":0.02961,"73":0.1066,"74":0.01184,"75":0.02369,"76":0.01184,"77":0.02961,"78":0.01184,"79":0.10067,"80":0.04145,"81":0.01184,"83":0.06514,"84":0.08291,"85":0.09475,"86":0.20727,"87":0.35532,"88":0.30794,"89":0.11252,"90":0.21319,"91":0.30794,"92":0.53298,"93":1.22585,"94":24.54669,"95":6.73331,"96":0.07106,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 50 52 54 55 56 60 62 65 67 68 97 98"},F:{"36":0.09475,"67":0.00592,"71":0.01184,"73":0.00592,"74":0.01184,"75":0.00592,"76":0.05922,"77":0.04145,"78":0.15989,"79":4.58363,"80":2.17337,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 72 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.40862},G:{"8":0.00061,"15":1.99457,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00365,"6.0-6.1":0.00487,"7.0-7.1":0.00487,"8.1-8.4":0.00365,"9.0-9.2":0.00183,"9.3":0.05968,"10.0-10.2":0.00426,"10.3":0.02923,"11.0-11.2":0.081,"11.3-11.4":0.01401,"12.0-12.1":0.02619,"12.2-12.5":0.29964,"13.0-13.1":0.01096,"13.2":0.01766,"13.3":0.05908,"13.4-13.7":0.17175,"14.0-14.4":0.62364,"14.5-14.8":2.67729},B:{"17":0.01777,"18":0.04145,"83":0.01184,"84":0.00592,"89":0.01184,"92":0.00592,"93":0.06514,"94":1.39759,"95":0.44415,_:"12 13 14 15 16 79 80 81 85 86 87 88 90 91"},E:{"4":0,"13":0.07106,"14":0.39677,"15":0.67511,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.17766,"10.1":0.01184,"11.1":0.02369,"12.1":0.03553,"13.1":0.14213,"14.1":0.88238},P:{"4":0.01103,_:"5.0-5.4 8.2","6.2-6.4":0.06621,"7.2-7.4":0.01103,"9.2":0.02031,"10.1":0.01016,"11.1-11.2":0.04414,"12.0":0.06621,"13.0":0.06621,"14.0":0.06621,"15.0":1.16967},I:{"0":0,"3":0,"4":0.00095,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00253,"4.2-4.3":0.00538,"4.4":0,"4.4.3-4.4.4":0.02376},A:{"8":0.00686,"11":0.29516,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.11418},Q:{"10.4":0.06117},O:{"0":0.22429},H:{"0":1.28564},L:{"0":30.66047},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js
new file mode 100644
index 0000000000..8cf902d6b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/BZ.js
@@ -0,0 +1 @@
+module.exports={C:{"38":0.03145,"52":0.01573,"58":0.00524,"59":0.00524,"61":0.00524,"63":0.00524,"72":0.00524,"78":0.07339,"81":0.48751,"85":0.02097,"89":0.01573,"91":0.0629,"92":0.55041,"93":1.36816,"94":0.01048,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 60 62 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 82 83 84 86 87 88 90 95 3.5 3.6"},D:{"43":0.01573,"49":0.03669,"53":0.01048,"58":0.00524,"63":0.01048,"64":0.01048,"65":0.00524,"69":0.00524,"70":0.03669,"72":0.00524,"73":0.01048,"74":0.20444,"75":0.04718,"76":0.13105,"77":0.00524,"78":0.01048,"79":0.05242,"80":0.02621,"81":0.02097,"83":0.01048,"84":0.09436,"85":0.05242,"86":0.04718,"87":0.14678,"88":0.01573,"89":0.02097,"90":0.04718,"91":0.15202,"92":0.79678,"93":2.95649,"94":24.6374,"95":5.13192,"96":0.01573,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 54 55 56 57 59 60 61 62 66 67 68 71 97 98"},F:{"28":0.00524,"65":0.01048,"78":0.0629,"79":0.71815,"80":1.81373,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.3443,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00117,"5.0-5.1":0.15403,"6.0-6.1":0.0035,"7.0-7.1":0.02334,"8.1-8.4":0.03734,"9.0-9.2":0.04551,"9.3":0.18437,"10.0-10.2":0.00934,"10.3":0.09452,"11.0-11.2":0.014,"11.3-11.4":0.1902,"12.0-12.1":0.01284,"12.2-12.5":0.73047,"13.0-13.1":0.03501,"13.2":0.00467,"13.3":0.07701,"13.4-13.7":0.23221,"14.0-14.4":0.55077,"14.5-14.8":5.91496},B:{"12":0.01048,"16":0.01573,"17":0.03669,"18":0.04718,"81":0.00524,"83":0.01048,"84":0.01573,"85":0.00524,"86":0.01573,"89":0.02097,"90":0.00524,"91":0.01048,"92":0.01573,"93":0.26734,"94":4.75974,"95":1.45203,_:"13 14 15 79 80 87 88"},E:{"4":0,"12":0.02097,"13":0.05242,"14":0.47702,"15":0.69719,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.11532,"12.1":0.01048,"13.1":0.18871,"14.1":1.13227},P:{"4":0.30379,"5.0-5.4":0.09425,"6.2-6.4":0.01053,"7.2-7.4":0.14627,"8.2":0.01029,"9.2":0.01125,"10.1":0.02106,"11.1-11.2":0.15752,"12.0":0.0225,"13.0":0.19128,"14.0":0.20253,"15.0":2.11531},I:{"0":0,"3":0,"4":0.00099,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00298,"4.4":0,"4.4.3-4.4.4":0.06265},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.08387,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13801},Q:{"10.4":0.05235},O:{"0":0.55204},H:{"0":0.20275},L:{"0":33.64827},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js
new file mode 100644
index 0000000000..ecf5fb60bc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CA.js
@@ -0,0 +1 @@
+module.exports={C:{"38":0.0114,"43":0.01709,"44":0.05698,"45":0.01709,"48":0.0114,"52":0.05698,"55":0.05698,"57":0.01709,"60":0.0114,"63":0.05698,"66":0.0114,"67":0.0057,"68":0.0114,"72":0.0057,"77":0.0114,"78":0.15385,"79":0.0114,"80":0.0114,"81":0.0114,"82":0.03419,"83":0.0114,"84":0.0114,"86":0.0114,"87":0.0114,"88":0.02279,"89":0.03419,"90":0.03419,"91":0.06838,"92":0.99145,"93":2.24501,"94":0.0114,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 50 51 53 54 56 58 59 61 62 64 65 69 70 71 73 74 75 76 85 95 3.5 3.6"},D:{"38":0.0114,"47":0.01709,"48":0.14815,"49":0.36467,"53":0.0057,"58":0.0057,"60":0.01709,"61":0.14245,"63":0.0114,"64":0.02279,"65":0.02279,"66":0.01709,"67":0.02849,"69":0.03419,"70":0.08547,"71":0.0114,"72":0.04558,"73":0.01709,"74":0.03989,"75":0.02279,"76":0.21652,"77":0.0114,"78":0.02279,"79":0.66667,"80":0.06838,"81":0.03989,"83":0.62108,"84":0.11966,"85":0.11396,"86":0.13105,"87":0.41595,"88":0.07977,"89":0.19373,"90":0.13675,"91":0.39886,"92":0.88319,"93":2.73504,"94":21.12249,"95":5.93162,"96":0.01709,"97":0.0057,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 51 52 54 55 56 57 59 62 68 98"},F:{"52":0.0057,"78":0.03419,"79":0.36467,"80":0.17094,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.06237,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00428,"6.0-6.1":0.01283,"7.0-7.1":0.0278,"8.1-8.4":0.03849,"9.0-9.2":0.0171,"9.3":0.2865,"10.0-10.2":0.02566,"10.3":0.29506,"11.0-11.2":0.10904,"11.3-11.4":0.0727,"12.0-12.1":0.06414,"12.2-12.5":1.20161,"13.0-13.1":0.0449,"13.2":0.03421,"13.3":0.1347,"13.4-13.7":0.48748,"14.0-14.4":1.28713,"14.5-14.8":13.16635},B:{"14":0.0057,"16":0.0057,"17":0.06268,"18":0.05128,"84":0.0114,"85":0.01709,"86":0.0114,"87":0.0057,"88":0.0057,"89":0.02279,"90":0.0114,"91":0.02279,"92":0.05698,"93":0.26781,"94":4.98005,"95":1.80627,_:"12 13 15 79 80 81 83"},E:{"4":0,"8":0.0057,"9":0.02279,"11":0.01709,"12":0.01709,"13":0.10826,"14":0.64387,"15":1.80057,_:"0 5 6 7 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01709,"10.1":0.03989,"11.1":0.10256,"12.1":0.16524,"13.1":0.63818,"14.1":4.14814},P:{"4":0.11083,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.15789,_:"8.2","9.2":0.10526,"10.1":0.01016,"11.1-11.2":0.02217,"12.0":0.02217,"13.0":0.08866,"14.0":0.08866,"15.0":3.01448},I:{"0":0,"3":0,"4":0.00076,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00152,"4.2-4.3":0.00419,"4.4":0,"4.4.3-4.4.4":0.02363},A:{"8":0.01441,"9":0.04322,"11":0.70591,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.0086},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.4302},Q:{"10.4":0.01721},O:{"0":0.18499},H:{"0":0.16699},L:{"0":17.93199},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js
new file mode 100644
index 0000000000..f178d444cf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CD.js
@@ -0,0 +1 @@
+module.exports={C:{"5":0.00524,"17":0.00175,"20":0.00175,"30":0.00175,"34":0.00349,"43":0.00175,"44":0.00349,"47":0.00175,"52":0.00524,"56":0.00175,"57":0.01397,"68":0.00175,"72":0.00349,"75":0.00175,"78":0.03143,"79":0.00175,"81":0.00349,"84":0.00524,"85":0.00175,"87":0.00524,"88":0.00524,"89":0.0227,"90":0.00873,"91":0.02619,"92":0.28634,"93":0.73507,"94":0.01048,_:"2 3 4 6 7 8 9 10 11 12 13 14 15 16 18 19 21 22 23 24 25 26 27 28 29 31 32 33 35 36 37 38 39 40 41 42 45 46 48 49 50 51 53 54 55 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 76 77 80 82 83 86 95 3.5 3.6"},D:{"11":0.00349,"18":0.00524,"25":0.00524,"33":0.00349,"43":0.00524,"49":0.00698,"55":0.00175,"56":0.00524,"57":0.00524,"63":0.00873,"64":0.01048,"65":0.00349,"67":0.00175,"68":0.00349,"69":0.02095,"70":0.00698,"71":0.00175,"74":0.00873,"75":0.01397,"76":0.01048,"77":0.00698,"78":0.00349,"79":0.02095,"80":0.00698,"81":0.01397,"83":0.00349,"84":0.04365,"85":0.01921,"86":0.03143,"87":0.02095,"88":0.01746,"89":0.03667,"90":0.02619,"91":0.06111,"92":0.17111,"93":0.27761,"94":3.67708,"95":1.02839,"96":0.00349,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 22 23 24 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 58 59 60 61 62 66 72 73 97 98"},F:{"20":0.00175,"30":0.00349,"35":0.00175,"38":0.00524,"42":0.00349,"60":0.00175,"64":0.00175,"65":0.01222,"70":0.00175,"76":0.00175,"77":0.01921,"78":0.0227,"79":0.41729,"80":0.22349,_:"9 11 12 15 16 17 18 19 21 22 23 24 25 26 27 28 29 31 32 33 34 36 37 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 62 63 66 67 68 69 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.6","10.0-10.1":0,"11.5":0.00175,"12.1":0.00349},G:{"8":0,"15":0.69167,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01928,"5.0-5.1":0.00161,"6.0-6.1":0.01125,"7.0-7.1":0.02169,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05945,"10.0-10.2":0.00161,"10.3":0.12853,"11.0-11.2":0.14058,"11.3-11.4":0.06909,"12.0-12.1":0.15263,"12.2-12.5":1.90471,"13.0-13.1":0.03053,"13.2":0.03133,"13.3":0.20003,"13.4-13.7":0.51173,"14.0-14.4":1.9015,"14.5-14.8":2.15295},B:{"12":0.04714,"13":0.01397,"14":0.01746,"15":0.01571,"16":0.00873,"17":0.03667,"18":0.06111,"84":0.01397,"85":0.00873,"86":0.00175,"88":0.00349,"89":0.01571,"90":0.01048,"91":0.01746,"92":0.0454,"93":0.08905,"94":0.82935,"95":0.22698,_:"79 80 81 83 87"},E:{"4":0,"12":0.00175,"13":0.00698,"14":0.05587,"15":0.05587,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 9.1","5.1":0.00349,"7.1":0.00349,"10.1":0.01222,"11.1":0.00873,"12.1":0.00349,"13.1":0.03143,"14.1":0.11524},P:{"4":0.46519,"5.0-5.4":0.03172,"6.2-6.4":0.04037,"7.2-7.4":0.09515,"8.2":0.02149,"9.2":0.08458,"10.1":0.01057,"11.1-11.2":0.07401,"12.0":0.04229,"13.0":0.14801,"14.0":0.16916,"15.0":0.48633},I:{"0":0,"3":0,"4":0.00181,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00604,"4.2-4.3":0.02959,"4.4":0,"4.4.3-4.4.4":0.16063},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.00512,"11":0.28647,_:"6 7 8 9 5.5"},J:{"7":0,"10":0.01651},N:{_:"10 11"},R:{_:"0"},M:{"0":0.1238},Q:{"10.4":0.07428},O:{"0":1.90644},H:{"0":26.04209},L:{"0":50.04247},S:{"2.5":0.14855}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js
new file mode 100644
index 0000000000..2026bb6f6d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CF.js
@@ -0,0 +1 @@
+module.exports={C:{"21":0.01839,"30":0.00368,"35":0.00368,"40":0.00368,"47":0.02206,"50":0.02942,"60":0.01471,"65":0.00368,"66":0.00735,"78":0.40447,"87":0.00368,"88":0.01839,"89":0.02206,"91":0.01839,"92":1.3274,"93":0.6876,"94":0.01103,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 31 32 33 34 36 37 38 39 41 42 43 44 45 46 48 49 51 52 53 54 55 56 57 58 59 61 62 63 64 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 90 95 3.5 3.6"},D:{"11":0.07722,"44":0.01471,"49":0.03309,"50":0.02574,"55":0.00368,"68":0.00735,"69":0.00368,"73":0.10663,"80":0.01103,"81":0.03677,"83":0.02206,"85":0.00735,"86":0.00735,"88":0.00368,"89":0.05883,"90":0.11766,"91":0.04045,"92":0.09928,"93":0.12502,"94":5.4199,"95":3.11074,"96":0.00735,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 51 52 53 54 56 57 58 59 60 61 62 63 64 65 66 67 70 71 72 74 75 76 77 78 79 84 87 97 98"},F:{"42":0.01839,"73":0.00735,"78":0.01103,"79":0.18017,"80":0.09193,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.20726,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.24132,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02464,"10.0-10.2":0,"10.3":0.21668,"11.0-11.2":0.00145,"11.3-11.4":0.50837,"12.0-12.1":0.0029,"12.2-12.5":0.17501,"13.0-13.1":0.00471,"13.2":0.00761,"13.3":0.00145,"13.4-13.7":0.40546,"14.0-14.4":0.39169,"14.5-14.8":1.43452},B:{"12":0.12502,"13":0.01839,"14":0.02206,"16":0.00735,"17":0.00735,"18":0.10296,"80":0.00368,"84":0.03309,"86":0.00368,"89":0.01471,"91":0.00735,"92":0.09193,"93":0.28681,"94":0.47433,"95":0.08825,_:"15 79 81 83 85 87 88 90"},E:{"4":0,"14":0.00735,"15":0.04412,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 10.1 11.1","9.1":0.01103,"12.1":0.02206,"13.1":0.00735,"14.1":0.03309},P:{"4":0.13454,"5.0-5.4":0.02051,"6.2-6.4":0.02149,"7.2-7.4":0.03105,"8.2":0.02149,"9.2":0.0207,"10.1":1.3765,"11.1-11.2":0.0207,"12.0":0.0621,"13.0":0.07245,"14.0":0.14489,"15.0":0.21734},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00011,"4.2-4.3":0.00189,"4.4":0,"4.4.3-4.4.4":0.02329},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.04412,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.49952},Q:{"10.4":0},O:{"0":0.20866},H:{"0":5.23793},L:{"0":74.0802},S:{"2.5":0.06955}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js
new file mode 100644
index 0000000000..f674c0cb16
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CG.js
@@ -0,0 +1 @@
+module.exports={C:{"35":0.03782,"52":0.02521,"68":0.0042,"72":0.0042,"78":0.07143,"87":0.0084,"88":0.01261,"89":0.61769,"90":0.0042,"91":0.02101,"92":1.08832,"93":2.95821,"94":0.01681,"95":0.02101,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 3.5 3.6"},D:{"11":0.0042,"31":0.0084,"34":0.0042,"56":0.0042,"60":0.0042,"63":0.05042,"74":0.01681,"75":0.54626,"76":0.02101,"78":0.0042,"79":0.06723,"80":0.0084,"81":0.01261,"83":0.02101,"84":0.01681,"85":0.01261,"86":0.04622,"87":0.19329,"88":0.02941,"89":0.05883,"90":0.03782,"91":0.07984,"92":0.23111,"93":0.44121,"94":10.05959,"95":2.86156,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 59 61 62 64 65 66 67 68 69 70 71 72 73 77 96 97 98"},F:{"22":0.0042,"28":0.0084,"36":0.01261,"77":0.0084,"78":0.0084,"79":2.25647,"80":1.06311,_:"9 11 12 15 16 17 18 19 20 21 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.52137,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00777,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.13352,"8.1-8.4":0.00141,"9.0-9.2":0,"9.3":0.01554,"10.0-10.2":0.00212,"10.3":0.11445,"11.0-11.2":2.26985,"11.3-11.4":0.01554,"12.0-12.1":0.0113,"12.2-12.5":1.79158,"13.0-13.1":0.00565,"13.2":0.02685,"13.3":0.02896,"13.4-13.7":0.10173,"14.0-14.4":0.81949,"14.5-14.8":1.19604},B:{"12":0.05883,"13":0.01261,"14":0.13026,"15":0.02521,"16":0.08824,"17":0.01681,"18":0.36978,"84":0.0084,"85":0.0042,"88":0.05883,"89":0.02521,"90":0.0084,"91":0.01261,"92":0.02521,"93":0.09665,"94":3.5675,"95":1.29001,_:"79 80 81 83 86 87"},E:{"4":0,"14":0.03362,"15":0.05463,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 11.1","7.1":0.0084,"9.1":0.01261,"10.1":0.05883,"12.1":0.01261,"13.1":0.13446,"14.1":0.08404},P:{"4":0.55659,"5.0-5.4":0.03172,"6.2-6.4":0.04037,"7.2-7.4":0.05251,"8.2":0.03151,"9.2":0.05251,"10.1":0.01057,"11.1-11.2":0.35706,"12.0":0.04229,"13.0":0.28355,"14.0":0.07351,"15.0":0.70361},I:{"0":0,"3":0,"4":0.00046,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00837,"4.2-4.3":0.01356,"4.4":0,"4.4.3-4.4.4":0.08199},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.31935,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.08119},N:{_:"10 11"},R:{_:"0"},M:{"0":0.04639},Q:{"10.4":0.04059},O:{"0":0.97423},H:{"0":1.30116},L:{"0":57.53306},S:{"2.5":0.63209}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js
new file mode 100644
index 0000000000..9b0be3a887
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CH.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.02249,"52":0.03936,"55":0.00562,"56":0.00562,"57":0.01687,"60":0.01687,"63":0.01125,"67":0.01125,"68":0.01687,"70":0.00562,"72":0.01125,"75":0.00562,"78":0.42735,"79":0.00562,"80":0.01125,"81":0.00562,"82":0.01125,"83":0.01125,"84":0.01687,"85":0.03374,"86":0.01125,"87":0.01687,"88":0.11246,"89":0.04498,"90":0.03374,"91":0.14058,"92":1.9568,"93":4.57712,"94":0.01687,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 58 59 61 62 64 65 66 69 71 73 74 76 77 95 3.5 3.6"},D:{"38":0.01125,"41":0.00562,"49":0.10684,"52":0.10684,"63":0.01125,"64":0.00562,"65":0.01125,"66":0.03936,"67":0.01687,"68":0.00562,"69":0.01125,"70":0.01125,"71":0.01125,"72":0.01125,"73":0.01125,"74":0.01125,"75":0.01687,"76":0.01125,"77":0.00562,"78":0.01125,"79":0.09559,"80":0.08435,"81":0.02249,"83":0.04498,"84":0.0731,"85":0.0731,"86":0.04498,"87":0.60166,"88":0.25304,"89":0.10121,"90":0.08435,"91":0.21367,"92":0.52856,"93":1.34952,"94":18.14542,"95":5.04945,"96":0.00562,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 97 98"},F:{"28":0.01125,"46":0.00562,"63":0.00562,"78":0.07872,"79":1.01214,"80":0.47796,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.96462,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0024,"7.0-7.1":0.01438,"8.1-8.4":0.03594,"9.0-9.2":0.11261,"9.3":0.29471,"10.0-10.2":0.00958,"10.3":0.16293,"11.0-11.2":0.02636,"11.3-11.4":0.08147,"12.0-12.1":0.05271,"12.2-12.5":0.64214,"13.0-13.1":0.07188,"13.2":0.02875,"13.3":0.13897,"13.4-13.7":0.47202,"14.0-14.4":1.83777,"14.5-14.8":15.00169},B:{"14":0.01125,"16":0.01687,"17":0.02249,"18":0.05623,"84":0.01125,"85":0.02249,"86":0.01687,"87":0.01687,"88":0.01687,"89":0.02812,"90":0.03374,"91":0.04498,"92":0.09559,"93":0.37112,"94":5.70735,"95":1.97367,_:"12 13 15 79 80 81 83"},E:{"4":0,"8":0.01687,"10":0.02249,"11":0.02812,"12":0.02249,"13":0.11246,"14":0.98965,"15":2.5416,_:"0 5 6 7 9 3.1 3.2 5.1 6.1 7.1","9.1":0.01125,"10.1":0.05061,"11.1":0.12933,"12.1":0.2699,"13.1":0.95029,"14.1":4.41406},P:{"4":0.09508,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.01044,"8.2":0.03147,"9.2":0.02113,"10.1":0.01041,"11.1-11.2":0.03169,"12.0":0.03169,"13.0":0.11621,"14.0":0.27468,"15.0":3.28564},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00078,"4.2-4.3":0.00156,"4.4":0,"4.4.3-4.4.4":0.01954},A:{"11":0.52856,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.53837},Q:{"10.4":0.01751},O:{"0":0.07441},H:{"0":0.21548},L:{"0":15.56972},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js
new file mode 100644
index 0000000000..68c48ae3db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CI.js
@@ -0,0 +1 @@
+module.exports={C:{"40":0.00766,"43":0.00766,"47":0.00383,"48":0.00766,"52":0.0766,"57":0.00383,"68":0.01149,"72":0.02298,"75":0.00383,"76":0.00766,"78":0.04596,"79":0.00383,"81":0.00766,"84":0.01532,"85":0.00383,"87":0.00766,"88":0.01149,"89":0.06128,"90":0.01915,"91":0.03064,"92":0.71621,"93":1.74648,"94":0.04979,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 77 80 82 83 86 95 3.5 3.6"},D:{"22":0.01532,"31":0.01149,"33":0.00766,"38":0.00383,"40":0.01915,"43":0.00383,"47":0.00766,"49":0.24895,"50":0.00383,"55":0.00383,"56":0.00383,"57":0.01149,"63":0.01532,"64":0.01149,"65":0.01149,"66":0.06128,"67":0.01149,"68":0.00766,"69":0.05362,"70":0.02298,"71":0.01915,"72":0.01915,"73":0.01532,"74":0.08809,"75":0.03064,"76":0.05745,"77":0.03447,"78":0.06511,"79":0.04213,"80":0.06128,"81":0.09958,"83":0.06128,"84":0.05362,"85":0.08426,"86":0.08809,"87":0.67791,"88":0.18767,"89":0.17235,"90":0.14171,"91":0.32172,"92":0.63578,"93":1.01112,"94":15.52299,"95":4.75686,"96":0.04213,"97":0.02298,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 32 34 35 36 37 39 41 42 44 45 46 48 51 52 53 54 58 59 60 61 62 98"},F:{"75":0.00383,"76":0.00383,"77":0.01532,"78":0.03064,"79":0.74302,"80":0.4213,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00291,"15":2.91585,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01456,"6.0-6.1":0,"7.0-7.1":0.01456,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.21264,"10.0-10.2":0.0102,"10.3":0.43985,"11.0-11.2":0.43694,"11.3-11.4":0.29129,"12.0-12.1":0.07865,"12.2-12.5":2.92022,"13.0-13.1":0.03932,"13.2":0.02767,"13.3":0.21556,"13.4-13.7":0.42966,"14.0-14.4":2.33617,"14.5-14.8":4.17278},B:{"12":0.01915,"13":0.00766,"14":0.00766,"15":0.00766,"16":0.01149,"17":0.01915,"18":0.05362,"84":0.01915,"85":0.00766,"86":0.00383,"88":0.00383,"89":0.02681,"90":0.00766,"91":0.01532,"92":0.04596,"93":0.12256,"94":1.66988,"95":0.50556,_:"79 80 81 83 87"},E:{"4":0,"12":0.00383,"13":0.00383,"14":0.13022,"15":0.23363,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.01915,"11.1":0.00766,"12.1":0.02298,"13.1":0.06128,"14.1":0.25278},P:{"4":0.20757,"5.0-5.4":0.03172,"6.2-6.4":0.01038,"7.2-7.4":0.20757,"8.2":0.03151,"9.2":0.09341,"10.1":0.01021,"11.1-11.2":0.10378,"12.0":0.02076,"13.0":0.07265,"14.0":0.26984,"15.0":0.77838},I:{"0":0,"3":0,"4":0.00145,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00036,"4.2-4.3":0.00581,"4.4":0,"4.4.3-4.4.4":0.0479},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.30257,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01851},N:{_:"10 11"},R:{_:"0"},M:{"0":0.17273},Q:{"10.4":0.01851},O:{"0":0.48735},H:{"0":1.92734},L:{"0":47.89451},S:{"2.5":0.01851}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js
new file mode 100644
index 0000000000..9cdd83e97f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CK.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.12172,"89":0.00609,"91":0.01217,"92":0.3895,"93":0.99202,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 94 95 3.5 3.6"},D:{"49":1.4363,"55":0.03043,"65":0.02434,"67":0.01217,"79":0.01217,"81":0.02434,"83":0.01826,"86":0.07912,"87":0.00609,"88":0.00609,"91":0.05477,"92":0.07303,"93":0.39559,"94":46.13797,"95":6.28075,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 63 64 66 68 69 70 71 72 73 74 75 76 77 78 80 84 85 89 90 96 97 98"},F:{"79":0.17041,"80":0.26778,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.15063,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01034,"10.0-10.2":0,"10.3":0.03187,"11.0-11.2":0.01206,"11.3-11.4":0.00517,"12.0-12.1":0.04737,"12.2-12.5":0.24287,"13.0-13.1":0.07062,"13.2":0.01034,"13.3":0.09474,"13.4-13.7":0.32641,"14.0-14.4":1.79657,"14.5-14.8":4.81353},B:{"17":0.01217,"18":0.06086,"85":0.00609,"89":0.01217,"93":0.04869,"94":1.54584,"95":0.37733,_:"12 13 14 15 16 79 80 81 83 84 86 87 88 90 91 92"},E:{"4":0,"13":0.13389,"14":0.55383,"15":0.14606,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.10346,"11.1":0.00609,"12.1":0.03043,"13.1":0.14606,"14.1":0.5234},P:{"4":0.05107,"5.0-5.4":0.03172,"6.2-6.4":0.02043,"7.2-7.4":0.12257,"8.2":0.03151,"9.2":0.04086,"10.1":0.01021,"11.1-11.2":0.20428,"12.0":0.13278,"13.0":0.25535,"14.0":0.55155,"15.0":2.59434},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.15215,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.26608},Q:{"10.4":0},O:{"0":0.18},H:{"0":0.09261},L:{"0":26.26574},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js
new file mode 100644
index 0000000000..5131ff8589
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CL.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.0179,"72":0.00448,"73":0.00895,"78":0.05819,"88":0.00448,"89":0.00895,"90":0.01343,"91":0.0179,"92":0.44312,"93":1.12348,"94":0.00448,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 82 83 84 85 86 87 95 3.5 3.6"},D:{"38":0.0179,"48":0.00895,"49":0.09847,"53":0.00448,"63":0.00448,"65":0.00895,"67":0.00895,"68":0.00895,"70":0.00448,"72":0.0179,"73":0.00448,"74":0.00895,"75":0.00895,"76":0.00895,"77":0.00895,"78":0.00895,"79":0.094,"80":0.0179,"81":0.0179,"83":0.0179,"84":0.04028,"85":0.04028,"86":0.03133,"87":0.23723,"88":0.03581,"89":0.17456,"90":0.05371,"91":0.14771,"92":0.36703,"93":1.05634,"94":23.63776,"95":6.67819,"96":0.01343,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 50 51 52 54 55 56 57 58 59 60 61 62 64 66 69 71 97 98"},F:{"68":0.00448,"69":0.00895,"77":0.00448,"78":0.21037,"79":2.51551,"80":1.20852,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.62184,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00286,"6.0-6.1":0.00215,"7.0-7.1":0.00215,"8.1-8.4":0.00072,"9.0-9.2":0,"9.3":0.0365,"10.0-10.2":0.00215,"10.3":0.0229,"11.0-11.2":0.00787,"11.3-11.4":0.01646,"12.0-12.1":0.01503,"12.2-12.5":0.31778,"13.0-13.1":0.01503,"13.2":0.00573,"13.3":0.05511,"13.4-13.7":0.18681,"14.0-14.4":0.51318,"14.5-14.8":4.32802},B:{"15":0.00448,"18":0.0179,"84":0.00895,"86":0.00448,"89":0.00895,"90":0.00448,"91":0.01343,"92":0.0179,"93":0.05371,"94":1.92468,"95":0.61769,_:"12 13 14 16 17 79 80 81 83 85 87 88"},E:{"4":0,"12":0.00895,"13":0.02686,"14":0.14771,"15":0.54607,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01343,"12.1":0.03581,"13.1":0.15218,"14.1":0.59083},P:{"4":0.08408,"5.0-5.4":0.02029,"6.2-6.4":0.07101,"7.2-7.4":0.08408,"8.2":0.02149,"9.2":0.02102,"10.1":0.02029,"11.1-11.2":0.16817,"12.0":0.02102,"13.0":0.14715,"14.0":0.17868,"15.0":1.35587},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00331,"4.4":0,"4.4.3-4.4.4":0.0243},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.02174,"9":0.00544,"10":0.01087,"11":0.19023,_:"6 7 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15464},Q:{"10.4":0},O:{"0":0.05523},H:{"0":0.16209},L:{"0":46.87994},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js
new file mode 100644
index 0000000000..2be222d9b5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CM.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.00301,"31":0.00602,"37":0.00602,"38":0.00602,"42":0.00301,"43":0.01204,"45":0.00602,"47":0.01505,"48":0.00602,"49":0.00301,"50":0.00903,"51":0.00903,"52":0.19565,"56":0.00903,"57":0.00602,"60":0.00602,"61":0.00301,"64":0.00602,"68":0.00903,"69":0.00602,"70":0.00301,"72":0.03612,"73":0.00903,"78":0.05418,"79":0.00602,"80":0.00903,"81":0.01806,"82":0.00301,"83":0.00602,"84":0.01204,"85":0.00602,"86":0.00903,"87":0.00903,"88":0.02408,"89":0.05418,"90":0.03311,"91":0.05117,"92":0.88193,"93":1.81202,"94":0.14147,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 39 40 41 44 46 53 54 55 58 59 62 63 65 66 67 71 74 75 76 77 95 3.5 3.6"},D:{"33":0.00301,"34":0.00602,"38":0.01505,"43":0.01204,"49":0.06923,"50":0.01505,"53":0.00301,"55":0.00602,"56":0.04515,"57":0.00602,"58":0.01204,"62":0.00602,"63":0.0602,"64":0.00602,"65":0.00903,"67":0.00602,"68":0.08127,"69":0.00903,"70":0.01505,"71":0.00602,"72":0.00602,"73":0.00903,"74":0.01505,"75":0.00903,"76":0.06923,"77":0.01204,"78":0.00602,"79":0.2107,"80":0.02408,"81":0.05117,"83":0.02107,"84":0.0301,"85":0.0301,"86":0.12943,"87":0.44548,"88":0.04816,"89":0.11438,"90":0.10836,"91":0.10535,"92":0.34615,"93":0.5117,"94":7.48286,"95":2.09496,"96":0.01505,"97":0.00602,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 40 41 42 44 45 46 47 48 51 52 54 59 60 61 66 98"},F:{"30":0.01505,"34":0.00301,"73":0.03913,"76":0.00602,"77":0.01204,"78":0.02408,"79":0.67123,"80":0.31906,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.4963,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03056,"8.1-8.4":0.00183,"9.0-9.2":0.00061,"9.3":0.08618,"10.0-10.2":0.03851,"10.3":0.20475,"11.0-11.2":0.25121,"11.3-11.4":0.08068,"12.0-12.1":0.12591,"12.2-12.5":1.39233,"13.0-13.1":0.0489,"13.2":0.04951,"13.3":0.13935,"13.4-13.7":0.40951,"14.0-14.4":1.29698,"14.5-14.8":1.45528},B:{"12":0.04214,"13":0.01806,"14":0.05418,"15":0.01806,"16":0.02709,"17":0.02107,"18":0.08428,"84":0.02107,"85":0.01806,"86":0.00301,"87":0.00301,"88":0.00301,"89":0.02107,"90":0.01806,"91":0.0301,"92":0.05117,"93":0.07224,"94":0.83076,"95":0.21672,_:"79 80 81 83"},E:{"4":0,"10":0.00903,"13":0.01806,"14":0.06622,"15":0.03612,_:"0 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01806,"11.1":0.00301,"12.1":0.00602,"13.1":0.02107,"14.1":0.08428},P:{"4":0.4421,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.15789,_:"8.2","9.2":0.10526,"10.1":0.01016,"11.1-11.2":0.06316,"12.0":0.0421,"13.0":0.11579,"14.0":0.18947,"15.0":0.51578},I:{"0":0,"3":0,"4":0.00092,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00368,"4.2-4.3":0.01566,"4.4":0,"4.4.3-4.4.4":0.14048},A:{"8":0.01666,"9":0.01666,"11":0.43323,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.04892},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.51719},Q:{"10.4":0.07688},O:{"0":0.81072},H:{"0":4.30088},L:{"0":66.1499},S:{"2.5":0.05591}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js
new file mode 100644
index 0000000000..1f40e614e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CN.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.03688,"33":0.00335,"36":0.03018,"43":1.13667,"45":0.00335,"52":0.02682,"53":0.00335,"54":0.01677,"55":0.00335,"56":0.00671,"57":0.00671,"58":0.00335,"59":0.00671,"60":0.00335,"63":0.00335,"68":0.00671,"72":0.00671,"75":0.10059,"78":0.03018,"79":0.00671,"80":0.00671,"81":0.00671,"82":0.01006,"83":0.00671,"84":0.00671,"86":0.00671,"87":0.00671,"88":0.00671,"89":0.01341,"90":0.01677,"91":0.02682,"92":0.23471,"93":0.54654,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 37 38 39 40 41 42 44 46 47 48 49 50 51 61 62 64 65 66 67 69 70 71 73 74 76 77 85 94 95 3.5 3.6"},D:{"11":0.01341,"17":0.00671,"31":0.00671,"33":0.00335,"39":0.01006,"40":0.01006,"41":0.01006,"42":0.01341,"43":0.01006,"44":0.00671,"45":0.02347,"46":0.00671,"47":0.02682,"48":0.09724,"49":0.13412,"50":0.01677,"51":0.01006,"52":0.00671,"53":0.01341,"54":0.01677,"55":0.06371,"56":0.01677,"57":0.12071,"58":0.02682,"59":0.02012,"60":0.01006,"61":0.01341,"62":0.114,"63":0.07041,"64":0.00335,"65":0.04694,"66":0.01006,"67":0.02347,"68":0.02012,"69":1.18696,"70":0.44595,"71":0.02347,"72":0.60689,"73":0.07377,"74":0.54654,"75":0.32189,"76":0.03353,"77":0.01341,"78":0.42248,"79":0.22465,"80":0.10394,"81":0.09053,"83":0.19112,"84":0.15759,"85":0.09724,"86":0.23136,"87":0.20118,"88":0.15089,"89":0.23471,"90":0.08718,"91":0.15759,"92":0.7779,"93":0.40907,"94":3.10488,"95":0.61695,"96":0.02012,_:"4 5 6 7 8 9 10 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 32 34 35 36 37 38 97 98"},F:{"77":0.00335,"78":0.00335,"79":0.0503,"80":0.02012,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00093,"15":1.36597,"3.2":0,"4.0-4.1":0.00653,"4.2-4.3":0.04385,"5.0-5.1":0.01773,"6.0-6.1":0.03359,"7.0-7.1":0.014,"8.1-8.4":0.02799,"9.0-9.2":0.1017,"9.3":0.06531,"10.0-10.2":0.36855,"10.3":0.41147,"11.0-11.2":0.76416,"11.3-11.4":0.0961,"12.0-12.1":0.12409,"12.2-12.5":0.41614,"13.0-13.1":0.04945,"13.2":0.03079,"13.3":0.15209,"13.4-13.7":0.93864,"14.0-14.4":1.36037,"14.5-14.8":2.93628},B:{"13":0.00335,"14":0.00335,"15":0.00335,"16":0.01341,"17":0.02682,"18":0.12071,"84":0.00671,"85":0.00671,"86":0.01006,"87":0.00671,"88":0.00335,"89":0.01677,"90":0.00335,"91":0.01677,"92":0.04024,"93":0.06035,"94":2.6254,"95":0.73095,_:"12 79 80 81 83"},E:{"4":0,"9":0.01006,"11":0.00671,"12":0.01006,"13":0.03018,"14":0.13412,"15":0.24477,_:"0 5 6 7 8 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00335,"10.1":0.00671,"11.1":0.01341,"12.1":0.03018,"13.1":0.14753,"14.1":0.30512},P:{"4":0.11083,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.15789,_:"8.2","9.2":0.10526,"10.1":0.01016,"11.1-11.2":0.02217,"12.0":0.02217,"13.0":0.01145,"14.0":0.08013,"15.0":0.32053},I:{"0":0,"3":0,"4":0.03679,"2.1":0,"2.2":0,"2.3":0,"4.1":0.11036,"4.2-4.3":0.08584,"4.4":0,"4.4.3-4.4.4":0.47824},A:{"6":0.068,"7":0.034,"8":1.19006,"9":0.95205,"10":0.17001,"11":8.70443,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.19941},Q:{"10.4":4.97196},O:{"0":10.3095},H:{"0":0.0881},L:{"0":40.82448},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js
new file mode 100644
index 0000000000..14ea77ef6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CO.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.00493,"15":0.00493,"17":0.00986,"50":0.00986,"52":0.01479,"60":0.00493,"68":0.00493,"73":0.00493,"78":0.04437,"84":0.01479,"87":0.00493,"88":0.01972,"89":0.00986,"90":0.03944,"91":0.01972,"92":0.37961,"93":0.93177,"94":0.00986,_:"2 3 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"22":0.00986,"23":0.00493,"24":0.00986,"26":0.00493,"38":0.02465,"47":0.00986,"49":0.11339,"53":0.00493,"58":0.00493,"61":0.02958,"62":0.00493,"63":0.00986,"65":0.01479,"66":0.00986,"67":0.00986,"68":0.00493,"69":0.02465,"70":0.00986,"71":0.00986,"72":0.01972,"73":0.00986,"74":0.01479,"75":0.01479,"76":0.01972,"77":0.01479,"78":0.01479,"79":0.12325,"80":0.04437,"81":0.04437,"83":0.03944,"84":0.0493,"85":0.03944,"86":0.05916,"87":0.21199,"88":0.07395,"89":0.06902,"90":0.07395,"91":0.30073,"92":0.55709,"93":1.01558,"94":28.40666,"95":7.98167,"96":0.01479,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 59 60 64 97 98"},F:{"77":0.00986,"78":0.11339,"79":1.32617,"80":0.61625,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.12818,"3.2":0.00045,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00223,"6.0-6.1":0.00447,"7.0-7.1":0.0076,"8.1-8.4":0.00089,"9.0-9.2":0.00179,"9.3":0.05096,"10.0-10.2":0.00179,"10.3":0.03263,"11.0-11.2":0.00492,"11.3-11.4":0.01162,"12.0-12.1":0.00626,"12.2-12.5":0.29545,"13.0-13.1":0.00715,"13.2":0.00447,"13.3":0.02995,"13.4-13.7":0.09118,"14.0-14.4":0.29858,"14.5-14.8":2.4861},B:{"14":0.00986,"17":0.00493,"18":0.01972,"84":0.00986,"89":0.01479,"91":0.00986,"92":0.01972,"93":0.05916,"94":1.82903,"95":0.57681,_:"12 13 15 16 79 80 81 83 85 86 87 88 90"},E:{"4":0,"12":0.00493,"13":0.03451,"14":0.15283,"15":0.39933,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00493,"11.1":0.01479,"12.1":0.01972,"13.1":0.12818,"14.1":0.45356},P:{"4":0.21054,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.10526,"10.1":0.01016,"11.1-11.2":0.05264,"12.0":0.02105,"13.0":0.08422,"14.0":0.10527,"15.0":0.80005},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00425,"4.2-4.3":0.00921,"4.4":0,"4.4.3-4.4.4":0.05244},A:{"8":0.01065,"10":0.00532,"11":0.11714,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.14703},Q:{"10.4":0},O:{"0":0.03549},H:{"0":0.12},L:{"0":46.31562},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js
new file mode 100644
index 0000000000..ed31edd8ce
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CR.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.00455,"52":0.01366,"63":0.00911,"73":0.05009,"78":0.15484,"83":0.00455,"84":0.00911,"88":0.13207,"89":0.01366,"90":0.09108,"91":0.02732,"92":0.56925,"93":1.82615,"94":0.03188,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 85 86 87 95 3.5 3.6"},D:{"47":0.00455,"49":0.07742,"63":0.00911,"65":0.01366,"67":0.00911,"71":0.00455,"74":0.00911,"75":0.00911,"76":0.02732,"77":0.00911,"78":0.00455,"79":0.01822,"80":0.02277,"81":0.02277,"83":0.0592,"84":0.00911,"85":0.00911,"86":0.03643,"87":0.61934,"88":0.05465,"89":0.04554,"90":0.12296,"91":0.12296,"92":0.36887,"93":1.08841,"94":23.37568,"95":6.12968,"96":0.00455,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 68 69 70 72 73 97 98"},F:{"28":0.00455,"78":0.11385,"79":1.09751,"80":0.55559,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.74137,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00276,"6.0-6.1":0.00644,"7.0-7.1":0.01563,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0524,"10.0-10.2":0,"10.3":0.04045,"11.0-11.2":0.00368,"11.3-11.4":0.02298,"12.0-12.1":0.00919,"12.2-12.5":0.37416,"13.0-13.1":0.00644,"13.2":0.00552,"13.3":0.05332,"13.4-13.7":0.14065,"14.0-14.4":0.46241,"14.5-14.8":5.24832},B:{"17":0.01366,"18":0.01822,"80":0.00455,"84":0.00455,"85":0.00455,"88":0.01366,"89":0.02277,"90":0.01366,"91":0.03188,"92":0.01822,"93":0.09563,"94":2.58212,"95":0.80606,_:"12 13 14 15 16 79 81 83 86 87"},E:{"4":0,"13":0.0592,"14":0.22315,"15":0.88803,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.01822,"10.1":0.00911,"11.1":0.03188,"12.1":0.03643,"13.1":0.26869,"14.1":1.34798},P:{"4":0.11403,"5.0-5.4":0.03172,"6.2-6.4":0.02043,"7.2-7.4":0.0933,"8.2":0.03151,"9.2":0.02073,"10.1":0.01021,"11.1-11.2":0.1244,"12.0":0.0311,"13.0":0.14513,"14.0":0.23843,"15.0":2.46721},I:{"0":0,"3":0,"4":0.00627,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00179,"4.2-4.3":0.00716,"4.4":0,"4.4.3-4.4.4":0.05012},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.16394,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.33759},Q:{"10.4":0},O:{"0":0.03267},H:{"0":0.26806},L:{"0":42.56238},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js
new file mode 100644
index 0000000000..56d8555b4f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CU.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.00267,"15":0.01337,"24":0.00802,"28":0.00535,"32":0.00267,"33":0.00802,"34":0.01337,"35":0.00535,"36":0.00267,"37":0.00535,"38":0.01069,"39":0.00535,"40":0.01604,"41":0.00802,"42":0.00535,"43":0.01604,"45":0.02138,"46":0.00802,"47":0.01604,"48":0.0294,"49":0.00535,"50":0.03208,"51":0.00535,"52":0.16573,"53":0.01337,"54":0.08554,"55":0.01337,"56":0.0695,"57":0.12563,"58":0.05346,"59":0.04544,"60":0.0695,"61":0.03742,"62":0.02406,"63":0.01337,"64":0.05079,"65":0.0294,"66":0.03742,"67":0.09088,"68":0.06148,"69":0.05881,"70":0.04277,"71":0.05613,"72":0.139,"73":0.02406,"74":0.02406,"75":0.01871,"76":0.01337,"77":0.02138,"78":0.22988,"79":0.01337,"80":0.01871,"81":0.07484,"82":0.06148,"83":0.03742,"84":0.0989,"85":0.04544,"86":0.10959,"87":0.07217,"88":0.17909,"89":0.28601,"90":0.14969,"91":0.33413,"92":2.19453,"93":4.96911,"94":0.10157,"95":0.00267,_:"2 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 25 26 27 29 30 31 44 3.5 3.6"},D:{"11":0.00267,"25":0.00535,"26":0.02138,"41":0.00267,"42":0.00267,"43":0.00802,"49":0.00535,"50":0.00535,"51":0.00535,"53":0.00267,"54":0.00267,"55":0.00535,"56":0.01337,"58":0.00535,"59":0.00802,"60":0.01069,"61":0.00535,"62":0.05346,"63":0.01069,"65":0.01871,"66":0.00802,"67":0.01069,"68":0.01604,"69":0.00535,"70":0.0294,"71":0.02406,"72":0.01871,"73":0.00535,"74":0.01604,"75":0.01337,"76":0.00535,"77":0.05613,"78":0.01069,"79":0.07217,"80":0.03208,"81":0.09088,"83":0.01604,"84":0.08821,"85":0.139,"86":0.15236,"87":0.5346,"88":0.22186,"89":0.08019,"90":0.10692,"91":0.1684,"92":0.55064,"93":0.51054,"94":4.58954,"95":1.28037,"96":0.00535,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 31 32 33 34 35 36 37 38 39 40 44 45 46 47 48 52 57 64 97 98"},F:{"34":0.00535,"36":0.00535,"42":0.00267,"47":0.00267,"64":0.00267,"70":0.00267,"75":0.00802,"76":0.01337,"77":0.0294,"78":0.02406,"79":0.52391,"80":0.24057,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 43 44 45 46 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00055,"15":0.62791,"3.2":0.00055,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00055,"6.0-6.1":0,"7.0-7.1":0.05602,"8.1-8.4":0.03328,"9.0-9.2":0.00832,"9.3":0.05159,"10.0-10.2":0.02052,"10.3":0.08653,"11.0-11.2":0.06545,"11.3-11.4":0.15531,"12.0-12.1":0.10262,"12.2-12.5":0.95296,"13.0-13.1":0.06434,"13.2":0.06601,"13.3":0.26403,"13.4-13.7":0.42489,"14.0-14.4":1.40004,"14.5-14.8":1.16429},B:{"12":0.00802,"13":0.02138,"14":0.01871,"15":0.01337,"16":0.01871,"17":0.02138,"18":0.12563,"79":0.00267,"84":0.05079,"85":0.03742,"87":0.00535,"88":0.00267,"89":0.03742,"90":0.06148,"91":0.02138,"92":0.0401,"93":0.09623,"94":0.67894,"95":0.17107,_:"80 81 83 86"},E:{"4":0,"11":0.01069,"13":0.01069,"14":0.02673,"15":0.03208,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1","5.1":0.05613,"13.1":0.01604,"14.1":0.03742},P:{"4":0.4002,"5.0-5.4":0.04105,"6.2-6.4":0.01026,"7.2-7.4":0.2668,"8.2":0.01026,"9.2":0.15392,"10.1":0.08209,"11.1-11.2":0.19497,"12.0":0.14366,"13.0":0.22575,"14.0":0.50281,"15.0":0.91327},I:{"0":0,"3":0,"4":0.00319,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01274,"4.2-4.3":0.12422,"4.4":0,"4.4.3-4.4.4":0.7756},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00636,"9":0.00636,"11":0.1049,_:"6 7 10 5.5"},J:{"7":0,"10":0.00733},N:{_:"10 11"},R:{_:"0"},M:{"0":0.9304},Q:{"10.4":0.01465},O:{"0":0.21978},H:{"0":1.18602},L:{"0":65.43266},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js
new file mode 100644
index 0000000000..b4387f7564
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CV.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.11139,"61":0.01485,"78":0.04827,"89":0.02228,"90":0.00743,"91":0.00371,"92":0.57923,"93":1.42951,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 94 95 3.5 3.6"},D:{"11":0.00743,"19":0.01114,"38":0.01485,"39":0.00371,"42":0.01114,"43":0.02599,"49":0.18936,"50":0.01114,"55":0.01857,"56":0.00743,"57":0.00743,"63":0.00371,"64":0.00371,"65":0.00743,"68":0.01485,"69":0.01114,"70":0.04084,"73":0.08911,"74":0.01114,"75":0.02599,"76":0.02228,"77":0.01857,"78":0.00743,"79":0.0297,"80":0.03713,"81":0.02599,"83":0.01485,"84":0.01857,"85":0.02599,"86":0.0297,"87":0.04456,"88":0.04456,"89":0.88741,"90":0.20422,"91":0.1151,"92":0.2562,"93":0.78716,"94":16.73078,"95":4.6264,"96":0.02228,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 44 45 46 47 48 51 52 53 54 58 59 60 61 62 66 67 71 72 97 98"},F:{"78":0.00743,"79":0.81315,"80":0.37501,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.03829,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01426,"6.0-6.1":0,"7.0-7.1":0.09235,"8.1-8.4":0,"9.0-9.2":0.00204,"9.3":0.1005,"10.0-10.2":0.0163,"10.3":0.33953,"11.0-11.2":0.055,"11.3-11.4":0.02241,"12.0-12.1":0.03327,"12.2-12.5":1.13743,"13.0-13.1":0.02105,"13.2":0.01901,"13.3":0.07809,"13.4-13.7":0.22545,"14.0-14.4":1.19515,"14.5-14.8":2.39981},B:{"12":0.01857,"13":0.01114,"14":0.01114,"15":0.00743,"16":0.01114,"17":0.01485,"18":0.05198,"84":0.02599,"85":0.11139,"87":0.01114,"89":0.01114,"90":0.00743,"91":0.0297,"92":0.02228,"93":0.05941,"94":2.6288,"95":0.85028,_:"79 80 81 83 86 88"},E:{"4":0,"10":0.00371,"13":0.01857,"14":0.20422,"15":0.33417,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0297,"12.1":0.03713,"13.1":0.10396,"14.1":0.97652},P:{"4":0.51279,"5.0-5.4":0.02051,"6.2-6.4":0.02149,"7.2-7.4":0.21537,"8.2":0.02149,"9.2":0.12307,"10.1":0.21537,"11.1-11.2":0.20512,"12.0":0.32819,"13.0":0.19486,"14.0":0.24614,"15.0":1.4153},I:{"0":0,"3":0,"4":0.00035,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00139,"4.2-4.3":0.00695,"4.4":0,"4.4.3-4.4.4":0.06047},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.44185,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.0503},Q:{"10.4":0},O:{"0":0.20118},H:{"0":0.45831},L:{"0":54.73865},S:{"2.5":0.00629}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js
new file mode 100644
index 0000000000..bf55ac742e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CX.js
@@ -0,0 +1 @@
+module.exports={C:{"92":6.77729,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 95 3.5 3.6"},D:{"81":6.77729,"94":20.33898,"95":8.47161,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 88 89 90 91 92 93 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0},B:{"95":1.69432,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.08408,"5.0-5.4":0.02029,"6.2-6.4":0.07101,"7.2-7.4":0.08408,"8.2":0.02149,"9.2":0.02102,"10.1":0.02029,"11.1-11.2":0.16817,"12.0":0.02102,"13.0":0.14715,"14.0":0.17868,"15.0":1.35587},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":28.81},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js
new file mode 100644
index 0000000000..a3079a482a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CY.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.28507,"70":0.00492,"72":0.00492,"78":0.06881,"84":0.01966,"88":0.01966,"89":0.02949,"91":0.01475,"92":0.44235,"93":1.19435,"94":0.00983,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 73 74 75 76 77 79 80 81 82 83 85 86 87 90 95 3.5 3.6"},D:{"38":0.01475,"42":1.11079,"47":0.01475,"49":0.17203,"53":0.00983,"54":0.00983,"56":0.00983,"57":0.01475,"65":0.02949,"67":0.00492,"69":0.01475,"70":1.54331,"71":0.00983,"72":0.02458,"73":0.00983,"74":0.03441,"75":0.00983,"76":0.00983,"77":0.00983,"78":0.01475,"79":0.08847,"80":0.00492,"81":0.01475,"83":0.01475,"84":0.01475,"85":0.02949,"86":0.01966,"87":0.18677,"88":0.02458,"89":0.06881,"90":0.03932,"91":0.11305,"92":0.38337,"93":1.23367,"94":25.14023,"95":6.85643,"96":0.00492,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 48 50 51 52 55 58 59 60 61 62 63 64 66 68 97 98"},F:{"28":0.00492,"40":0.00492,"78":0.04915,"79":0.80115,"80":0.43744,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.76077,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00132,"6.0-6.1":0.00527,"7.0-7.1":0.01054,"8.1-8.4":0,"9.0-9.2":0.00263,"9.3":0.05664,"10.0-10.2":0.01185,"10.3":0.1001,"11.0-11.2":0.07771,"11.3-11.4":0.01976,"12.0-12.1":0.02371,"12.2-12.5":0.44257,"13.0-13.1":0.01581,"13.2":0.00922,"13.3":0.06454,"13.4-13.7":0.24104,"14.0-14.4":0.76264,"14.5-14.8":8.56154},B:{"16":0.01475,"17":0.00983,"18":0.01966,"84":0.00492,"89":0.00983,"91":0.02458,"92":0.01475,"93":0.07373,"94":2.61478,"95":0.8503,_:"12 13 14 15 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.05407,"14":0.27524,"15":0.71268,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01475,"12.1":0.32931,"13.1":0.34897,"14.1":1.39586},P:{"4":0.08385,"5.0-5.4":0.04105,"6.2-6.4":0.01026,"7.2-7.4":0.2668,"8.2":0.01026,"9.2":0.15392,"10.1":0.08209,"11.1-11.2":0.06289,"12.0":0.02096,"13.0":0.10481,"14.0":0.15722,"15.0":3.01858},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0022,"4.2-4.3":0.00551,"4.4":0,"4.4.3-4.4.4":0.0584},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.40795,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.11698},Q:{"10.4":0},O:{"0":0.92057},H:{"0":0.30817},L:{"0":33.45074},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js
new file mode 100644
index 0000000000..0c418ee4de
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/CZ.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.01222,"52":0.20777,"56":0.055,"60":0.01222,"68":0.01833,"70":0.00611,"72":0.00611,"73":0.01833,"78":0.28111,"81":0.01222,"82":0.01222,"83":0.00611,"84":0.4461,"85":0.01222,"86":0.01222,"87":0.02444,"88":0.06722,"89":0.09778,"90":0.04889,"91":0.09167,"92":1.82108,"93":4.5527,"94":0.01833,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 57 58 59 61 62 63 64 65 66 67 69 71 74 75 76 77 79 80 95 3.5 3.6"},D:{"4":0.00611,"38":0.01222,"42":0.01222,"43":0.00611,"45":0.00611,"48":0.00611,"49":0.20777,"53":0.01222,"55":0.00611,"56":0.00611,"57":0.00611,"58":0.01833,"59":0.00611,"60":0.01222,"61":0.10389,"62":0.00611,"63":0.01222,"64":0.01222,"65":0.01222,"66":0.01222,"67":0.01833,"68":0.01222,"69":0.01222,"70":0.01833,"71":0.01222,"72":0.01833,"73":0.00611,"74":0.00611,"75":0.02444,"76":0.00611,"77":0.01222,"78":0.03056,"79":0.10389,"80":0.01833,"81":0.04889,"83":0.04278,"84":0.03667,"85":0.03667,"86":0.11,"87":0.47666,"88":0.08555,"89":0.20777,"90":0.17111,"91":0.45221,"92":0.39722,"93":1.31387,"94":27.10229,"95":6.45933,"96":0.01222,_:"5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 44 46 47 50 51 52 54 97 98"},F:{"36":0.00611,"52":0.00611,"77":0.00611,"78":0.17722,"79":2.2244,"80":1.06943,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.03056},G:{"8":0,"15":2.69768,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00464,"6.0-6.1":0.00186,"7.0-7.1":0.00557,"8.1-8.4":0.00093,"9.0-9.2":0.00279,"9.3":0.04831,"10.0-10.2":0.00464,"10.3":0.0576,"11.0-11.2":0.02229,"11.3-11.4":0.01301,"12.0-12.1":0.01486,"12.2-12.5":0.30656,"13.0-13.1":0.01022,"13.2":0.01022,"13.3":0.05388,"13.4-13.7":0.1635,"14.0-14.4":0.48306,"14.5-14.8":5.38143},B:{"16":0.01222,"17":0.01833,"18":0.04278,"84":0.01222,"86":0.01833,"89":0.03056,"90":0.03056,"91":0.04278,"92":0.09778,"93":0.22,"94":4.83991,"95":1.31387,_:"12 13 14 15 79 80 81 83 85 87 88"},E:{"4":0,"12":0.00611,"13":0.02444,"14":0.31777,"15":0.97165,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 10.1","5.1":0.01222,"9.1":0.00611,"11.1":0.01833,"12.1":0.04889,"13.1":0.20166,"14.1":1.17942},P:{"4":0.09643,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.02079,"10.1":0.03119,"11.1-11.2":0.03214,"12.0":0.02143,"13.0":0.075,"14.0":0.11786,"15.0":1.75719},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00231,"4.2-4.3":0.01155,"4.4":0,"4.4.3-4.4.4":0.06004},A:{"8":0.01298,"9":0.01298,"10":0.03245,"11":0.67491,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.32279},Q:{"10.4":0.00778},O:{"0":0.18278},H:{"0":0.48232},L:{"0":27.11517},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js
new file mode 100644
index 0000000000..dec07ed7fe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DE.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01182,"51":0.01773,"52":0.10636,"56":0.00591,"59":0.01773,"60":0.01182,"63":0.00591,"65":0.00591,"66":0.00591,"68":0.02955,"72":0.01773,"76":0.00591,"77":0.11818,"78":0.43727,"79":0.13,"80":0.01773,"81":0.02364,"82":0.01773,"83":0.03545,"84":0.03545,"85":0.01773,"86":0.03545,"87":0.01773,"88":0.05318,"89":0.08273,"90":0.15954,"91":0.18318,"92":2.84223,"93":6.49399,"94":0.01773,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 53 54 55 57 58 61 62 64 67 69 70 71 73 74 75 95 3.5 3.6"},D:{"4":0.00591,"34":0.00591,"35":0.02955,"37":0.00591,"38":0.01182,"39":0.00591,"41":0.00591,"42":0.00591,"43":0.00591,"45":0.00591,"47":0.00591,"48":0.00591,"49":0.27181,"51":0.03545,"52":0.02955,"53":0.00591,"55":0.00591,"56":0.01182,"57":0.00591,"58":0.01182,"59":0.01182,"60":0.01182,"61":0.11818,"62":0.01182,"63":0.01182,"64":0.01182,"65":0.20682,"66":0.07682,"67":0.01182,"68":0.02364,"69":0.05909,"70":0.02364,"71":0.05318,"72":0.04136,"73":0.00591,"74":0.01773,"75":1.3118,"76":0.04136,"77":0.01182,"78":0.07682,"79":0.07091,"80":0.36045,"81":0.04136,"83":0.09454,"84":0.17727,"85":0.15954,"86":0.17727,"87":0.92771,"88":0.27772,"89":0.08273,"90":0.11818,"91":0.195,"92":0.47272,"93":1.03408,"94":18.11699,"95":3.90585,"96":0.00591,_:"5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 40 44 46 50 54 97 98"},F:{"36":0.00591,"46":0.00591,"68":0.00591,"70":0.00591,"71":0.00591,"72":0.01182,"75":0.00591,"77":0.01773,"78":0.25409,"79":2.98405,"80":1.12862,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 73 74 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00306,"15":4.43531,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00306,"6.0-6.1":0.00306,"7.0-7.1":0.00612,"8.1-8.4":0.00459,"9.0-9.2":0.02447,"9.3":0.09329,"10.0-10.2":0.00918,"10.3":0.09177,"11.0-11.2":0.02447,"11.3-11.4":0.06424,"12.0-12.1":0.01988,"12.2-12.5":0.44353,"13.0-13.1":0.02141,"13.2":0.01529,"13.3":0.07035,"13.4-13.7":0.22941,"14.0-14.4":0.90389,"14.5-14.8":8.82169},B:{"12":0.05318,"15":0.00591,"17":0.01773,"18":0.05909,"83":0.00591,"84":0.02364,"85":0.02364,"86":0.02955,"87":0.01773,"88":0.01773,"89":0.03545,"90":0.02955,"91":0.11818,"92":0.09454,"93":0.24227,"94":5.11719,"95":1.28225,_:"13 14 16 79 80 81"},E:{"4":0,"11":0.00591,"12":0.01182,"13":0.14182,"14":0.59681,"15":1.76088,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01182,"11.1":0.05909,"12.1":0.07682,"13.1":0.37818,"14.1":2.59996},P:{"4":0.12676,"5.0-5.4":0.01064,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.01056,"10.1":0.03119,"11.1-11.2":0.06338,"12.0":0.03169,"13.0":0.13732,"14.0":0.17958,"15.0":3.6866},I:{"0":0,"3":0,"4":0.00091,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00182,"4.2-4.3":0.005,"4.4":0,"4.4.3-4.4.4":0.03318},A:{"6":0.01267,"7":0.01901,"8":0.01901,"9":0.01901,"10":0.00634,"11":0.53851,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.71593},Q:{"10.4":0.00409},O:{"0":0.15955},H:{"0":0.40667},L:{"0":20.57634},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js
new file mode 100644
index 0000000000..b8f5617a5d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DJ.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00329,"51":0.00657,"52":0.00329,"60":0.00986,"67":0.023,"72":0.00657,"78":0.04599,"81":0.00329,"86":0.023,"88":0.00986,"89":0.01643,"91":0.00329,"92":0.82125,"93":2.80868,"94":0.03942,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 53 54 55 56 57 58 59 61 62 63 64 65 66 68 69 70 71 73 74 75 76 77 79 80 82 83 84 85 87 90 95 3.5 3.6"},D:{"37":0.01971,"38":0.00329,"49":0.03614,"55":0.00657,"56":0.00657,"58":0.01971,"59":0.23324,"63":0.03285,"67":0.01314,"70":0.00657,"72":0.00657,"74":0.00657,"76":0.02957,"78":0.00986,"79":0.00657,"80":0.01971,"81":0.01643,"83":0.01643,"84":0.02628,"85":0.00986,"86":0.02957,"87":0.11169,"88":0.02628,"89":0.04599,"90":0.0887,"91":0.51246,"92":0.4172,"93":0.42377,"94":15.17999,"95":3.99785,"96":0.01971,"97":0.03614,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 60 61 62 64 65 66 68 69 71 73 75 77 98"},F:{"28":0.00986,"46":0.00657,"78":0.02628,"79":0.18068,"80":0.25623,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.83301,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0058,"6.0-6.1":0,"7.0-7.1":0.00166,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00828,"10.0-10.2":0.05217,"10.3":0.01159,"11.0-11.2":0.01242,"11.3-11.4":0.15567,"12.0-12.1":0.01656,"12.2-12.5":0.23848,"13.0-13.1":0.22606,"13.2":0,"13.3":0.02567,"13.4-13.7":0.31052,"14.0-14.4":0.93486,"14.5-14.8":5.44686},B:{"12":0.01643,"14":0.05585,"15":0.03942,"16":0.08541,"17":0.02957,"18":0.08213,"83":0.00657,"84":0.00329,"85":0.01643,"87":0.03285,"88":0.00657,"89":0.07884,"90":0.00329,"91":0.09855,"92":0.03614,"93":0.09527,"94":1.65236,"95":0.58802,_:"13 79 80 81 86"},E:{"4":0,"13":0.00657,"14":0.11826,"15":0.05913,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00329,"12.1":0.00986,"13.1":0.09527,"14.1":0.36464},P:{"4":0.43364,"5.0-5.4":0.04105,"6.2-6.4":0.14119,"7.2-7.4":0.67568,"8.2":0.01026,"9.2":0.11093,"10.1":0.03025,"11.1-11.2":0.36305,"12.0":0.15127,"13.0":0.62525,"14.0":0.24203,"15.0":2.69262},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00052,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03305},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.28251,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01343},N:{_:"10 11"},R:{_:"0"},M:{"0":0.0873},Q:{"10.4":1.7459},O:{"0":3.34407},H:{"0":0.97267},L:{"0":49.9745},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js
new file mode 100644
index 0000000000..ef9d571356
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DK.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.02131,"61":0.0071,"78":0.12784,"82":0.04971,"88":0.03551,"89":0.02131,"90":0.02131,"91":0.03551,"92":0.54685,"93":1.25705,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 87 94 95 3.5 3.6"},D:{"38":0.0071,"49":0.04971,"52":0.0071,"59":0.0071,"66":0.0142,"67":0.0142,"68":0.0142,"69":0.17045,"70":0.02841,"71":0.0142,"72":0.0071,"74":0.0071,"75":0.02131,"76":0.04971,"77":0.0071,"78":0.03551,"79":0.07812,"80":0.07102,"81":0.02841,"83":0.02841,"84":0.03551,"85":0.04261,"86":0.04971,"87":0.3551,"88":0.07812,"89":0.12784,"90":0.23437,"91":0.64628,"92":1.4275,"93":5.3336,"94":34.99155,"95":7.91163,"96":0.0071,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 60 61 62 63 64 65 73 97 98"},F:{"76":0.0071,"78":0.07102,"79":0.7173,"80":0.31249,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.21292,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00371,"8.1-8.4":0,"9.0-9.2":0.02414,"9.3":0.06314,"10.0-10.2":0.00557,"10.3":0.10586,"11.0-11.2":0.03157,"11.3-11.4":0.026,"12.0-12.1":0.02043,"12.2-12.5":0.52744,"13.0-13.1":0.01857,"13.2":0.01114,"13.3":0.08914,"13.4-13.7":0.24515,"14.0-14.4":1.04559,"14.5-14.8":13.1284},B:{"18":0.0071,"84":0.0071,"87":0.0071,"89":0.0142,"90":0.0142,"91":0.02131,"92":0.04261,"93":0.13494,"94":3.12488,"95":0.90906,_:"12 13 14 15 16 17 79 80 81 83 85 86 88"},E:{"4":0,"11":0.0071,"12":0.02131,"13":0.15624,"14":1.61215,"15":2.33656,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0142,"11.1":0.08522,"12.1":0.19886,"13.1":0.83804,"14.1":5.19866},P:{"4":0.01087,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.02079,"10.1":0.03119,"11.1-11.2":0.01087,"12.0":0.02143,"13.0":0.02174,"14.0":0.06521,"15.0":1.15196},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00296,"4.2-4.3":0.00222,"4.4":0,"4.4.3-4.4.4":0.0296},A:{"10":0.03716,"11":0.28243,_:"6 7 8 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.19996},Q:{"10.4":0.0058},O:{"0":0.01739},H:{"0":0.05762},L:{"0":9.09894},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js
new file mode 100644
index 0000000000..03fb764c72
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DM.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.03262,"51":0.00544,"77":0.08698,"78":0.01087,"92":0.6034,"93":0.5436,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 88 89 90 91 94 95 3.5 3.6"},D:{"38":0.02174,"49":0.01087,"56":0.01631,"59":0.09241,"63":0.00544,"65":0.01087,"69":0.01631,"71":0.00544,"73":0.01631,"74":0.02174,"75":0.24462,"76":2.34835,"77":0.29898,"78":0.00544,"79":0.0598,"80":0.00544,"81":0.02174,"83":0.03805,"84":0.12503,"85":0.01087,"86":0.01631,"87":0.01631,"88":0.13046,"89":0.03262,"90":0.04349,"91":0.22831,"92":1.46772,"93":2.0983,"94":23.46178,"95":7.25162,"96":0.04349,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 60 61 62 64 66 67 68 70 72 97 98"},F:{"28":0.01631,"78":0.01087,"79":0.40226,"80":0.1957,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.15502,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00399,"6.0-6.1":0,"7.0-7.1":0.01482,"8.1-8.4":0,"9.0-9.2":0.06613,"9.3":0.34947,"10.0-10.2":0.00684,"10.3":0.02337,"11.0-11.2":0.00513,"11.3-11.4":0.00969,"12.0-12.1":0.00171,"12.2-12.5":0.28505,"13.0-13.1":0.00399,"13.2":0.00057,"13.3":0.02052,"13.4-13.7":0.05359,"14.0-14.4":0.1391,"14.5-14.8":3.56142},B:{"16":0.01087,"18":0.14677,"80":0.01087,"84":0.02174,"85":0.01087,"89":0.02718,"91":0.01087,"92":0.03262,"93":0.22831,"94":4.44665,"95":1.67972,_:"12 13 14 15 17 79 81 83 86 87 88 90"},E:{"4":0,"13":0.00544,"14":0.20657,"15":0.80453,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00544,"11.1":0.03805,"12.1":0.01087,"13.1":0.0598,"14.1":0.63058},P:{"4":0.33012,"5.0-5.4":0.04105,"6.2-6.4":0.14119,"7.2-7.4":0.05692,"8.2":0.01026,"9.2":0.11093,"10.1":0.03025,"11.1-11.2":0.10245,"12.0":0.02277,"13.0":0.09107,"14.0":0.22767,"15.0":4.0753},I:{"0":0,"3":0,"4":0.02195,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00523,"4.4":0,"4.4.3-4.4.4":0.24667},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.61427,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.07759},Q:{"10.4":0},O:{"0":1.58827},H:{"0":0.22901},L:{"0":37.77218},S:{"2.5":0.00913}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js
new file mode 100644
index 0000000000..68c2fabc07
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DO.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.00922,"15":0.00461,"17":0.00922,"52":0.02767,"73":0.0369,"74":0.00461,"78":0.0369,"79":0.00922,"80":0.00922,"81":0.01845,"82":0.01384,"84":0.01384,"88":0.01384,"89":0.07379,"90":0.01384,"91":0.0369,"92":0.37818,"93":1.20834,"94":0.01384,_:"2 3 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 75 76 77 83 85 86 87 95 3.5 3.6"},D:{"24":0.00922,"25":0.00461,"38":0.02306,"39":0.00461,"47":0.00922,"48":0.00922,"49":0.43814,"56":0.00461,"63":0.01384,"65":0.01384,"67":0.00461,"68":0.00922,"70":0.01845,"71":0.00461,"72":0.01845,"73":0.00922,"74":0.00922,"75":0.02306,"76":0.03228,"77":0.00461,"78":0.00922,"79":0.06457,"80":0.04151,"81":0.02306,"83":0.06457,"84":0.11069,"85":0.17064,"86":0.17526,"87":0.309,"88":0.0784,"89":0.06457,"90":0.10146,"91":0.21215,"92":0.4243,"93":1.27752,"94":22.52962,"95":5.33608,"96":0.01845,"97":0.00461,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 50 51 52 53 54 55 57 58 59 60 61 62 64 66 69 98"},F:{"68":0.01384,"70":0.00461,"72":0.01384,"78":0.12452,"79":1.06537,"80":0.48887,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 71 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.92096,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00464,"6.0-6.1":0.00773,"7.0-7.1":0.02318,"8.1-8.4":0.00773,"9.0-9.2":0,"9.3":0.04173,"10.0-10.2":0.00773,"10.3":0.05564,"11.0-11.2":0.02009,"11.3-11.4":0.02009,"12.0-12.1":0.02782,"12.2-12.5":0.77121,"13.0-13.1":0.01855,"13.2":0.017,"13.3":0.119,"13.4-13.7":0.36474,"14.0-14.4":1.33841,"14.5-14.8":8.68114},B:{"12":0.00922,"16":0.00461,"17":0.00922,"18":0.24905,"84":0.00922,"85":0.00922,"86":0.00461,"87":0.01384,"89":0.02306,"90":0.00922,"91":0.00922,"92":0.02306,"93":0.09224,"94":3.57891,"95":0.91779,_:"13 14 15 79 80 81 83 88"},E:{"4":0,"12":0.02306,"13":0.03228,"14":0.37818,"15":0.54422,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.05534,"11.1":0.01845,"12.1":0.07379,"13.1":0.20293,"14.1":0.79326},P:{"4":0.09648,"5.0-5.4":0.01072,"6.2-6.4":0.14119,"7.2-7.4":0.08576,"8.2":0.01026,"9.2":0.01072,"10.1":0.01072,"11.1-11.2":0.42881,"12.0":0.01072,"13.0":0.07504,"14.0":0.13936,"15.0":1.20066},I:{"0":0,"3":0,"4":0.00163,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00109,"4.2-4.3":0.0049,"4.4":0,"4.4.3-4.4.4":0.04086},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.04025,"9":0.01006,"10":0.01509,"11":0.21131,_:"6 7 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.3125},Q:{"10.4":0},O:{"0":0.0916},H:{"0":0.26525},L:{"0":38.4555},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js
new file mode 100644
index 0000000000..1f84eb27d7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/DZ.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.01858,"30":0.00372,"33":0.00743,"34":0.00372,"35":0.00372,"36":0.00372,"38":0.01115,"39":0.00372,"40":0.00743,"41":0.00372,"43":0.01115,"45":0.00372,"47":0.01858,"48":0.01486,"52":0.17837,"56":0.00743,"60":0.00372,"65":0.00372,"68":0.00372,"70":0.00743,"71":0.00372,"72":0.01486,"78":0.06317,"80":0.00372,"81":0.00372,"82":0.00372,"83":0.00372,"84":0.02601,"85":0.00743,"86":0.00743,"87":0.00743,"88":0.03344,"89":0.06317,"90":0.01486,"91":0.03716,"92":0.64287,"93":1.71308,"94":0.03716,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 37 42 44 46 49 50 51 53 54 55 57 58 59 61 62 63 64 66 67 69 73 74 75 76 77 79 95 3.5 3.6"},D:{"11":0.00743,"18":0.00743,"22":0.00743,"26":0.01115,"29":0.00372,"30":0.00743,"31":0.01115,"32":0.01115,"33":0.02973,"34":0.01115,"37":0.00743,"38":0.01858,"39":0.02973,"40":0.03344,"42":0.00743,"43":0.2564,"46":0.00743,"47":0.01115,"49":0.24897,"50":0.05202,"51":0.01115,"52":0.02601,"53":0.00743,"54":0.01486,"55":0.01486,"56":0.04831,"57":0.01115,"58":0.0223,"59":0.00743,"60":0.01486,"61":0.08547,"62":0.01486,"63":0.0706,"64":0.01486,"65":0.01115,"66":0.00743,"67":0.02973,"68":0.01486,"69":0.04088,"70":0.04088,"71":0.01858,"72":0.01486,"73":0.01858,"74":0.0223,"75":0.01486,"76":0.0223,"77":0.02601,"78":0.0223,"79":0.10405,"80":0.03716,"81":0.10776,"83":0.05574,"84":0.04831,"85":0.04831,"86":0.13749,"87":0.56855,"88":0.07804,"89":0.10405,"90":0.1152,"91":0.24154,"92":0.45335,"93":0.72834,"94":15.7001,"95":4.60041,"96":0.01858,"97":0.01115,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 23 24 25 27 28 35 36 41 44 45 48 98"},F:{"25":0.00743,"28":0.01115,"65":0.00372,"69":0.00372,"75":0.00372,"76":0.00372,"77":0.01858,"78":0.04088,"79":1.07764,"80":0.56112,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 70 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00036,"15":0.41855,"3.2":0.00036,"4.0-4.1":0.00036,"4.2-4.3":0.00018,"5.0-5.1":0.01154,"6.0-6.1":0.00162,"7.0-7.1":0.06402,"8.1-8.4":0.00469,"9.0-9.2":0.0027,"9.3":0.08367,"10.0-10.2":0.00216,"10.3":0.05951,"11.0-11.2":0.0083,"11.3-11.4":0.00884,"12.0-12.1":0.00974,"12.2-12.5":0.18719,"13.0-13.1":0.00866,"13.2":0.00631,"13.3":0.03372,"13.4-13.7":0.10279,"14.0-14.4":0.17745,"14.5-14.8":0.61079},B:{"12":0.00743,"13":0.00743,"14":0.00743,"15":0.00372,"16":0.01486,"17":0.01115,"18":0.02601,"84":0.00743,"89":0.01486,"90":0.00743,"91":0.01115,"92":0.01858,"93":0.07804,"94":0.86211,"95":0.26384,_:"79 80 81 83 85 86 87 88"},E:{"4":0,"12":0.00372,"13":0.04459,"14":0.02973,"15":0.06689,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01858,"11.1":0.00372,"12.1":0.00743,"13.1":0.01858,"14.1":0.0706},P:{"4":0.29232,"5.0-5.4":0.01044,"6.2-6.4":0.02088,"7.2-7.4":0.2088,"8.2":0.01044,"9.2":0.07308,"10.1":0.04176,"11.1-11.2":0.19836,"12.0":0.08352,"13.0":0.22968,"14.0":0.29232,"15.0":1.15883},I:{"0":0,"3":0,"4":0.00086,"2.1":0,"2.2":0,"2.3":0.00115,"4.1":0.0023,"4.2-4.3":0.01006,"4.4":0,"4.4.3-4.4.4":0.0736},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01347,"9":0.02021,"11":0.18185,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.10054},Q:{"10.4":0.03142},O:{"0":0.33305},H:{"0":0.49379},L:{"0":62.82036},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js
new file mode 100644
index 0000000000..52f928cb93
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EC.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.02196,"66":0.01098,"68":0.01098,"72":0.01098,"73":0.01647,"76":0.00549,"78":0.08234,"79":0.00549,"80":0.01098,"81":0.00549,"82":0.00549,"84":0.01647,"87":0.01647,"88":0.0494,"89":0.03293,"90":0.04391,"91":0.04391,"92":0.81237,"93":2.50298,"94":0.01098,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 74 75 77 83 85 86 95 3.5 3.6"},D:{"22":0.01098,"38":0.03293,"47":0.01647,"49":0.13174,"53":0.00549,"55":0.02196,"61":0.40619,"63":0.01647,"65":0.01098,"66":0.01098,"67":0.00549,"69":0.00549,"70":0.01098,"71":0.01098,"73":0.00549,"74":0.02745,"75":0.02745,"76":0.02196,"77":0.01647,"78":0.01098,"79":0.14271,"80":0.02196,"81":0.02745,"83":0.03842,"84":0.03293,"85":0.03842,"86":0.05489,"87":0.53792,"88":0.0494,"89":0.07136,"90":0.06038,"91":0.40619,"92":0.62026,"93":1.03193,"94":30.2883,"95":8.41464,"96":0.01098,"97":0.00549,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 56 57 58 59 60 62 64 68 72 98"},F:{"75":0.00549,"77":0.01098,"78":0.0988,"79":1.38872,"80":0.66417,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.0009,"15":1.44148,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01217,"6.0-6.1":0.01352,"7.0-7.1":0.0036,"8.1-8.4":0.00045,"9.0-9.2":0.00225,"9.3":0.0401,"10.0-10.2":0.0018,"10.3":0.02659,"11.0-11.2":0.01217,"11.3-11.4":0.00541,"12.0-12.1":0.00541,"12.2-12.5":0.28478,"13.0-13.1":0.00721,"13.2":0.00541,"13.3":0.01983,"13.4-13.7":0.07931,"14.0-14.4":0.27802,"14.5-14.8":2.26609},B:{"18":0.02196,"84":0.00549,"89":0.01098,"91":0.09331,"92":0.02196,"93":0.06587,"94":2.20109,"95":0.68613,_:"12 13 14 15 16 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.01647,"14":0.1482,"15":0.59281,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.06587,"10.1":0.00549,"11.1":0.02196,"12.1":0.03842,"13.1":0.17016,"14.1":0.55988},P:{"4":0.22689,"5.0-5.4":0.01072,"6.2-6.4":0.14119,"7.2-7.4":0.1547,"8.2":0.01026,"9.2":0.01031,"10.1":0.01072,"11.1-11.2":0.13407,"12.0":0.04125,"13.0":0.18564,"14.0":0.20627,"15.0":1.74295},I:{"0":0,"3":0,"4":0.00066,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00396,"4.2-4.3":0.00396,"4.4":0,"4.4.3-4.4.4":0.04555},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.1482,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15789},Q:{"10.4":0},O:{"0":0.0406},H:{"0":0.11531},L:{"0":38.51655},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js
new file mode 100644
index 0000000000..4d0f9b6186
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EE.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.05597,"66":0.02099,"68":0.11893,"71":0.02798,"78":0.13992,"82":0.37079,"84":0.04198,"87":0.04897,"88":0.02099,"89":0.02798,"90":0.01399,"91":0.05597,"92":1.09837,"93":2.77042,"94":0.01399,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 72 73 74 75 76 77 79 80 81 83 85 86 95 3.5 3.6"},D:{"38":0.007,"49":0.11893,"59":0.05597,"60":0.02099,"64":0.007,"69":0.96545,"70":0.007,"71":0.007,"72":0.007,"73":0.04198,"75":0.02798,"76":0.02099,"78":0.007,"79":0.05597,"80":0.01399,"81":0.01399,"83":0.02099,"84":0.02099,"85":0.007,"86":0.02798,"87":0.06996,"88":0.11194,"89":0.15391,"90":0.12593,"91":3.12721,"92":0.74857,"93":1.87493,"94":27.66918,"95":7.91947,"96":0.01399,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 61 62 63 65 66 67 68 74 77 97 98"},F:{"78":0.15391,"79":3.44203,"80":1.67204,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.74668,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00201,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.01607,"9.0-9.2":0,"9.3":0.02411,"10.0-10.2":0.00904,"10.3":0.13362,"11.0-11.2":0.01306,"11.3-11.4":0.01105,"12.0-12.1":0.02612,"12.2-12.5":0.24413,"13.0-13.1":0.01105,"13.2":0.01005,"13.3":0.05023,"13.4-13.7":0.13362,"14.0-14.4":0.72635,"14.5-14.8":5.88518},B:{"18":0.01399,"85":0.007,"88":0.007,"89":0.05597,"91":0.007,"92":0.03498,"93":0.10494,"94":9.52855,"95":1.28027,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 90"},E:{"4":0,"12":0.007,"13":0.06296,"14":0.59466,"15":1.42019,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02798,"12.1":0.08395,"13.1":0.3568,"14.1":1.54612},P:{"4":0.04268,"5.0-5.4":0.07162,"6.2-6.4":0.04092,"7.2-7.4":0.37855,"8.2":0.01026,"9.2":0.04092,"10.1":0.02134,"11.1-11.2":0.06403,"12.0":0.03201,"13.0":0.0747,"14.0":0.16006,"15.0":1.72869},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01539,"4.4":0,"4.4.3-4.4.4":0.0477},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.23786,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.2253},Q:{"10.4":0},O:{"0":0.04206},H:{"0":0.19055},L:{"0":17.56248},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js
new file mode 100644
index 0000000000..763aa86af7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/EG.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00395,"52":0.07507,"55":0.00395,"56":0.00395,"60":0.00395,"72":0.0079,"78":0.03951,"84":0.01976,"87":0.00395,"88":0.01185,"89":0.02371,"90":0.0079,"91":0.01976,"92":4.354,"93":16.7957,"94":0.02371,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 57 58 59 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"26":0.00395,"31":0.00395,"33":0.01185,"38":0.0079,"40":0.0158,"43":0.15804,"47":0.00395,"48":0.00395,"49":0.08297,"53":0.0079,"61":0.0079,"63":0.0158,"65":0.00395,"67":0.00395,"68":0.00395,"69":0.01185,"70":0.0079,"71":0.0079,"72":0.0079,"73":0.0079,"74":0.01185,"75":0.0079,"76":0.0079,"77":0.0079,"78":0.0079,"79":0.09878,"80":0.02371,"81":0.0158,"83":0.01976,"84":0.01976,"85":0.01976,"86":0.05927,"87":0.12643,"88":0.03161,"89":0.03556,"90":0.03556,"91":0.09087,"92":0.26077,"93":0.42276,"94":9.88935,"95":3.12919,"96":0.01185,"97":0.00395,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 32 34 35 36 37 39 41 42 44 45 46 50 51 52 54 55 56 57 58 59 60 62 64 66 98"},F:{"62":0.0079,"64":0.0158,"68":0.0079,"69":0.00395,"70":0.01185,"71":0.01976,"72":0.03556,"73":0.02766,"74":0.01185,"75":0.0158,"76":0.0158,"77":0.03951,"78":0.04346,"79":0.04741,"80":0.0158,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 63 65 66 67 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00117,"15":1.5523,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00117,"5.0-5.1":0.00466,"6.0-6.1":0.90084,"7.0-7.1":0.01981,"8.1-8.4":0.00699,"9.0-9.2":0.02564,"9.3":0.14334,"10.0-10.2":0.16782,"10.3":0.30999,"11.0-11.2":0.11421,"11.3-11.4":0.0909,"12.0-12.1":0.07575,"12.2-12.5":2.78994,"13.0-13.1":0.04662,"13.2":0.02098,"13.3":0.17481,"13.4-13.7":0.50345,"14.0-14.4":2.5487,"14.5-14.8":2.1513},B:{"12":0.00395,"14":0.00395,"15":0.00395,"16":0.0079,"18":0.01976,"84":0.0079,"89":0.01185,"91":0.0079,"92":0.01185,"93":0.02766,"94":0.75859,"95":0.26867,_:"13 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.03556,"14":0.07112,"15":0.11853,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.0158,"11.1":0.0079,"12.1":0.03951,"13.1":0.03951,"14.1":0.15409},P:{"4":0.21666,"5.0-5.4":0.01072,"6.2-6.4":0.14119,"7.2-7.4":0.07222,"8.2":0.01026,"9.2":0.02063,"10.1":0.01072,"11.1-11.2":0.11349,"12.0":0.04127,"13.0":0.13412,"14.0":0.15475,"15.0":1.10391},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00527,"4.2-4.3":0.05179,"4.4":0,"4.4.3-4.4.4":0.77771},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01376,"9":0.00918,"10":0.00459,"11":0.11471,_:"6 7 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.13913},Q:{"10.4":0},O:{"0":0.39319},H:{"0":0.33215},L:{"0":46.14847},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js
new file mode 100644
index 0000000000..e86fad9bb7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ER.js
@@ -0,0 +1 @@
+module.exports={C:{"29":0.00901,"34":0.00676,"35":0.00451,"37":0.00676,"41":0.00676,"43":0.02253,"44":0.01127,"45":0.00676,"47":0.00901,"48":0.01127,"50":0.00901,"52":0.00451,"53":0.01802,"56":0.01127,"57":0.00901,"59":0.00225,"61":0.00901,"70":0.00451,"72":0.00676,"78":0.18925,"79":0.00225,"80":0.00225,"81":0.00451,"82":0.02929,"83":0.00225,"84":0.03154,"85":0.01352,"87":0.00225,"88":0.00676,"89":0.01127,"90":0.00225,"91":0.02478,"92":0.82235,"93":3.76927,"94":0.79531,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 36 38 39 40 42 46 49 51 54 55 58 60 62 63 64 65 66 67 68 69 71 73 74 75 76 77 86 95 3.5 3.6"},D:{"11":0.00676,"26":0.00451,"33":0.01352,"37":0.02704,"38":0.00225,"39":0.00451,"40":0.05633,"43":0.04506,"46":0.00451,"50":0.03154,"53":0.00225,"54":0.00451,"55":0.06984,"57":0.00676,"58":0.01802,"63":0.00676,"64":0.00451,"65":0.00225,"67":0.00901,"69":0.01127,"70":0.0721,"71":0.03154,"73":0.00901,"74":0.01802,"75":0.12166,"77":0.00451,"78":0.00225,"79":0.02478,"80":0.01127,"81":0.14645,"83":0.01127,"86":0.02253,"87":0.11941,"88":0.01352,"89":0.01802,"90":0.10139,"91":0.08111,"92":0.35597,"93":0.2253,"94":5.17289,"95":1.86323,"96":0.00225,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 41 42 44 45 47 48 49 51 52 56 59 60 61 62 66 68 72 76 84 85 97 98"},F:{"67":0.00451,"76":0.00901,"77":0.01577,"78":0.01352,"79":0.77053,"80":0.42356,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.22781,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00023,"7.0-7.1":0.2212,"8.1-8.4":0.00251,"9.0-9.2":0.00228,"9.3":0.11983,"10.0-10.2":0.00319,"10.3":0.05877,"11.0-11.2":0.00251,"11.3-11.4":0.02233,"12.0-12.1":0.0057,"12.2-12.5":0.24056,"13.0-13.1":0.00228,"13.2":0.02164,"13.3":0.00478,"13.4-13.7":0.07358,"14.0-14.4":0.34604,"14.5-14.8":0.92239},B:{"12":0.01352,"13":0.00451,"14":0.00676,"15":0.00451,"16":0.17348,"17":0.00225,"18":0.04731,"84":0.01352,"89":0.00901,"91":0.02253,"92":0.01352,"93":0.02704,"94":0.81559,"95":0.31091,_:"79 80 81 83 85 86 87 88 90"},E:{"4":0,"10":0.00676,"13":0.00451,"14":0.00901,"15":0.00901,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.01352,"13.1":0.01127,"14.1":0.04506},P:{"4":0.5934,"5.0-5.4":0.07162,"6.2-6.4":0.04092,"7.2-7.4":0.37855,"8.2":0.01026,"9.2":0.04092,"10.1":0.03093,"11.1-11.2":0.10231,"12.0":0.03069,"13.0":0.08185,"14.0":0.17393,"15.0":0.36832},I:{"0":0,"3":0,"4":0.0009,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00239,"4.2-4.3":0.13675,"4.4":0,"4.4.3-4.4.4":0.27829},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.15771,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.21692},Q:{"10.4":0},O:{"0":2.24663},H:{"0":13.89128},L:{"0":60.26705},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js
new file mode 100644
index 0000000000..06e18dbb49
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ES.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00959,"52":0.08148,"53":0.00479,"55":0.00959,"56":0.00479,"59":0.00479,"60":0.01438,"64":0.00479,"66":0.00479,"67":0.00959,"68":0.01917,"69":0.00959,"72":0.00959,"78":0.18213,"79":0.00959,"80":0.00959,"81":0.00959,"82":0.00959,"83":0.00479,"84":0.02397,"85":0.00959,"86":0.01438,"87":0.01438,"88":0.07669,"89":0.02876,"90":0.01917,"91":0.04793,"92":0.79564,"93":2.00827,"94":0.01438,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 54 57 58 61 62 63 65 70 71 73 74 75 76 77 95 3.5 3.6"},D:{"38":0.02876,"49":0.20131,"53":0.00959,"58":0.00479,"61":0.09107,"63":0.01438,"64":0.00479,"65":0.01438,"66":0.02397,"67":0.01917,"68":0.00959,"69":0.01917,"70":0.01438,"71":0.00959,"72":0.00959,"73":0.01438,"74":0.01438,"75":0.0719,"76":0.01917,"77":0.01438,"78":0.01917,"79":0.11503,"80":0.03834,"81":0.02876,"83":0.03834,"84":0.06231,"85":0.06231,"86":0.09107,"87":0.28279,"88":0.05752,"89":0.09586,"90":0.09107,"91":0.23006,"92":0.39303,"93":1.65838,"94":22.82906,"95":6.7821,"96":0.00959,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 60 62 97 98"},F:{"36":0.00479,"56":0.00479,"78":0.39303,"79":0.67581,"80":0.52723,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00104,"15":2.38061,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00209,"6.0-6.1":0.00417,"7.0-7.1":0.0073,"8.1-8.4":0.00626,"9.0-9.2":0.00209,"9.3":0.09698,"10.0-10.2":0.00834,"10.3":0.09489,"11.0-11.2":0.02607,"11.3-11.4":0.03233,"12.0-12.1":0.02503,"12.2-12.5":0.4682,"13.0-13.1":0.03233,"13.2":0.01251,"13.3":0.08133,"13.4-13.7":0.23775,"14.0-14.4":0.80709,"14.5-14.8":6.09803},B:{"17":0.00959,"18":0.01917,"84":0.00479,"85":0.00479,"86":0.00479,"87":0.00959,"89":0.01438,"90":0.00959,"91":0.01917,"92":0.03834,"93":0.10065,"94":2.41567,"95":0.84836,_:"12 13 14 15 16 79 80 81 83 88"},E:{"4":0,"12":0.00959,"13":0.0671,"14":0.44096,"15":0.98736,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01438,"11.1":0.05272,"12.1":0.07669,"13.1":0.33072,"14.1":1.79738},P:{"4":0.11742,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.01044,"8.2":0.03147,"9.2":0.01035,"10.1":0.01041,"11.1-11.2":0.09607,"12.0":0.03202,"13.0":0.13877,"14.0":0.17079,"15.0":2.22026},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00185,"4.2-4.3":0.00739,"4.4":0,"4.4.3-4.4.4":0.04804},A:{"8":0.00542,"9":0.00542,"11":0.36302,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.23952},Q:{"10.4":0.01041},O:{"0":0.05728},H:{"0":0.19719},L:{"0":39.4316},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js
new file mode 100644
index 0000000000..7b4bb3e3b4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ET.js
@@ -0,0 +1 @@
+module.exports={C:{"29":0.0069,"31":0.00345,"34":0.0069,"35":0.0069,"37":0.00345,"38":0.00345,"40":0.0069,"43":0.0207,"44":0.0069,"45":0.00345,"47":0.03105,"48":0.0069,"49":0.00345,"52":0.30015,"54":0.00345,"56":0.0138,"57":0.00345,"58":0.00345,"60":0.0138,"61":0.00345,"63":0.01725,"64":0.0069,"66":0.01035,"67":0.0069,"68":0.03105,"72":0.0207,"77":0.1173,"78":0.09315,"79":0.0069,"81":0.00345,"82":0.00345,"83":0.00345,"84":0.13455,"85":0.00345,"86":0.0069,"87":0.01035,"88":0.07245,"89":0.05175,"90":0.0207,"91":0.03105,"92":0.84525,"93":2.10795,"94":0.2277,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 32 33 36 39 41 42 46 50 51 53 55 59 62 65 69 70 71 73 74 75 76 80 95 3.5 3.6"},D:{"11":0.01035,"31":0.0069,"33":0.01035,"34":0.0069,"37":0.0069,"38":0.01035,"39":0.00345,"40":0.22425,"42":0.00345,"43":0.1173,"44":0.0069,"46":0.0069,"49":0.04485,"50":0.01035,"53":0.0138,"55":0.0207,"56":0.0276,"57":0.01035,"58":0.0069,"60":0.0069,"61":0.01725,"62":0.00345,"63":0.02415,"64":0.01035,"65":0.01725,"66":0.00345,"67":0.0207,"68":0.01035,"69":0.0276,"70":0.0345,"71":0.0207,"72":0.0276,"73":0.0345,"74":0.0138,"75":0.0414,"76":0.01035,"77":0.0138,"78":0.03105,"79":0.22425,"80":0.0276,"81":0.0552,"83":0.0207,"84":0.03105,"85":0.04485,"86":0.11385,"87":0.21045,"88":0.04485,"89":0.0483,"90":0.06555,"91":0.18285,"92":0.4485,"93":0.5865,"94":12.4959,"95":4.40565,"96":0.15525,"97":0.05175,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 35 36 41 45 47 48 51 52 54 59 98"},F:{"25":0.0069,"29":0.00345,"42":0.00345,"46":0.00345,"73":0.00345,"75":0.0069,"76":0.00345,"77":0.01725,"78":0.0414,"79":1.32825,"80":0.83145,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.32168,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00031,"5.0-5.1":0.00061,"6.0-6.1":0.02366,"7.0-7.1":0.1825,"8.1-8.4":0.05684,"9.0-9.2":0.00492,"9.3":0.0974,"10.0-10.2":0.02427,"10.3":0.42799,"11.0-11.2":0.02151,"11.3-11.4":0.07251,"12.0-12.1":0.05223,"12.2-12.5":0.46455,"13.0-13.1":0.02765,"13.2":0.01014,"13.3":0.05377,"13.4-13.7":0.09125,"14.0-14.4":0.28911,"14.5-14.8":0.8486},B:{"12":0.0483,"13":0.07245,"14":0.02415,"15":0.0207,"16":0.03105,"17":0.07245,"18":0.10005,"84":0.01035,"85":0.0069,"88":0.02415,"89":0.02415,"90":0.0069,"91":0.0138,"92":0.1104,"93":0.0552,"94":1.82505,"95":0.6486,_:"79 80 81 83 86 87"},E:{"4":0,"8":0.02415,"13":0.00345,"14":0.02415,"15":0.04485,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.01035,"13.1":0.0276,"14.1":0.0759},P:{"4":0.6203,"5.0-5.4":0.06101,"6.2-6.4":0.03051,"7.2-7.4":0.24405,"8.2":0.04068,"9.2":0.06101,"10.1":0.02134,"11.1-11.2":0.19321,"12.0":0.04068,"13.0":0.11186,"14.0":0.25422,"15.0":0.74233},I:{"0":0,"3":0,"4":0.0028,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00389,"4.2-4.3":0.04278,"4.4":0,"4.4.3-4.4.4":0.12736},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.1242,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.00655},N:{_:"10 11"},R:{_:"0"},M:{"0":0.20957},Q:{"10.4":0.05894},O:{"0":1.39494},H:{"0":7.06199},L:{"0":54.44982},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js
new file mode 100644
index 0000000000..e00ddec88c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FI.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.01197,"43":0.01197,"48":0.00599,"50":0.01197,"51":0.00599,"52":0.04788,"54":0.00599,"55":0.01796,"56":0.02394,"59":0.01796,"60":0.02993,"61":0.00599,"63":0.01197,"65":0.01197,"66":0.00599,"68":0.01197,"74":0.00599,"78":0.29925,"79":0.01796,"80":0.01197,"81":0.02394,"82":0.02394,"83":0.00599,"84":0.07781,"86":0.00599,"88":0.03591,"89":0.01796,"90":0.04788,"91":0.13167,"92":1.63391,"93":3.91419,"94":0.01796,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 49 53 57 58 62 64 67 69 70 71 72 73 75 76 77 85 87 95 3.5 3.6"},D:{"28":0.01197,"38":0.02993,"42":0.02993,"48":0.10175,"49":0.14963,"52":0.07781,"53":0.00599,"56":0.03591,"57":0.00599,"58":0.01197,"59":0.01197,"60":0.05387,"61":0.05985,"63":0.01197,"64":0.55062,"65":0.01197,"66":0.07781,"67":0.02394,"68":0.01197,"69":0.25137,"70":0.56858,"71":0.01197,"72":0.57456,"73":0.00599,"75":0.05387,"76":0.03591,"77":0.01197,"78":0.03591,"79":1.23291,"80":0.63441,"81":0.04788,"83":0.08379,"84":0.24539,"85":0.21546,"86":0.25736,"87":0.56858,"88":0.03591,"89":0.05985,"90":0.08379,"91":0.37107,"92":1.3167,"93":2.25635,"94":24.33501,"95":5.57802,"96":0.01197,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 50 51 54 55 62 74 97 98"},F:{"69":0.01197,"70":0.01796,"71":0.02394,"78":0.07781,"79":0.97556,"80":0.41895,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.24667,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00141,"7.0-7.1":0,"8.1-8.4":0.00986,"9.0-9.2":0.00563,"9.3":0.05212,"10.0-10.2":0.01409,"10.3":0.10987,"11.0-11.2":0.02958,"11.3-11.4":0.07888,"12.0-12.1":0.04648,"12.2-12.5":0.46059,"13.0-13.1":0.02113,"13.2":0.01549,"13.3":0.09578,"13.4-13.7":0.4127,"14.0-14.4":1.37755,"14.5-14.8":8.10329},B:{"12":0.00599,"14":0.00599,"17":0.01197,"18":0.01796,"81":0.01796,"83":0.01197,"84":0.01796,"85":0.01796,"86":0.02993,"89":0.01796,"91":0.00599,"92":0.02993,"93":0.19152,"94":3.00447,"95":0.86783,_:"13 15 16 79 80 87 88 90"},E:{"4":0.01796,"8":0.00599,"10":0.00599,"12":0.00599,"13":0.17357,"14":0.41895,"15":1.27481,_:"0 5 6 7 9 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01197,"11.1":0.06584,"12.1":0.08379,"13.1":0.33516,"14.1":2.09475},P:{"4":0.08513,"5.0-5.4":0.01064,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.02128,"10.1":0.03119,"11.1-11.2":0.07449,"12.0":0.04257,"13.0":0.15962,"14.0":0.24475,"15.0":1.86224},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00055,"4.2-4.3":0.00771,"4.4":0,"4.4.3-4.4.4":0.01983},A:{"6":0.01427,"7":0.01427,"8":0.25689,"9":0.05709,"10":0.1784,"11":0.40675,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.51781},Q:{"10.4":0},O:{"0":0.11641},H:{"0":0.39142},L:{"0":23.36478},S:{"2.5":0.00803}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js
new file mode 100644
index 0000000000..5502760b24
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FJ.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.0034,"47":0.01701,"52":0.02041,"60":0.0068,"65":0.02721,"66":0.0034,"71":0.0034,"73":0.0034,"78":0.03401,"84":0.0136,"86":0.0034,"87":0.0034,"88":0.02041,"89":0.01701,"90":0.04761,"91":0.0102,"92":0.6632,"93":1.73111,"94":0.02721,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 67 68 69 70 72 74 75 76 77 79 80 81 82 83 85 95 3.5 3.6"},D:{"11":0.0034,"38":0.0034,"39":0.01701,"41":0.0068,"45":0.0136,"47":0.0034,"49":0.04761,"53":0.02041,"56":0.03741,"60":0.0034,"63":0.0102,"65":0.0136,"66":0.0034,"67":0.0068,"69":0.03061,"70":0.0068,"74":0.0102,"75":0.02041,"76":0.0068,"77":0.07482,"78":0.0034,"79":0.06462,"80":0.0068,"81":0.02721,"83":0.0136,"84":0.0068,"85":0.0102,"86":0.02721,"87":0.11563,"88":0.02041,"89":0.04761,"90":0.04081,"91":0.07482,"92":0.3333,"93":1.45563,"94":14.9542,"95":3.95536,"96":0.01701,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 42 43 44 46 48 50 51 52 54 55 57 58 59 61 62 64 68 71 72 73 97 98"},F:{"28":0.0034,"77":0.06462,"78":0.0034,"79":0.26868,"80":0.11904,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00081,"15":0.65617,"3.2":0,"4.0-4.1":0.00081,"4.2-4.3":0,"5.0-5.1":0.02783,"6.0-6.1":0.00081,"7.0-7.1":0.05283,"8.1-8.4":0.00766,"9.0-9.2":0.00161,"9.3":0.13752,"10.0-10.2":0.02258,"10.3":0.6356,"11.0-11.2":0.01492,"11.3-11.4":0.00968,"12.0-12.1":0.04235,"12.2-12.5":0.33675,"13.0-13.1":0.01452,"13.2":0.00524,"13.3":0.11655,"13.4-13.7":0.17745,"14.0-14.4":0.41298,"14.5-14.8":1.3567},B:{"12":0.01701,"13":0.0068,"14":0.0102,"15":0.03061,"16":0.0136,"17":0.02381,"18":0.07142,"80":0.02041,"81":0.0034,"84":0.02381,"85":0.05442,"86":0.02381,"87":0.25508,"88":0.0034,"89":0.02721,"90":0.04421,"91":0.04421,"92":0.07822,"93":0.15305,"94":2.97928,"95":0.71421,_:"79 83"},E:{"4":0,"13":0.04081,"14":0.17685,"15":0.15305,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0068,"11.1":0.0068,"12.1":0.02041,"13.1":0.15305,"14.1":0.53056},P:{"4":0.66451,"5.0-5.4":0.01022,"6.2-6.4":0.05112,"7.2-7.4":2.77051,"8.2":0.02045,"9.2":0.21469,"10.1":0.08179,"11.1-11.2":1.13478,"12.0":0.28625,"13.0":0.78719,"14.0":1.42104,"15.0":3.72127},I:{"0":0,"3":0,"4":0.00199,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00199,"4.2-4.3":0.00398,"4.4":0,"4.4.3-4.4.4":0.06462},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.73462,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.07258},Q:{"10.4":0.24413},O:{"0":1.37898},H:{"0":0.46849},L:{"0":51.1893},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js
new file mode 100644
index 0000000000..f46ec25a3d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FK.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01212,"63":0.01212,"69":0.13739,"78":0.96176,"82":0.06466,"84":0.07274,"87":0.04041,"88":0.10507,"89":0.01212,"91":0.35561,"92":1.8629,"93":5.28967,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 83 85 86 90 94 95 3.5 3.6"},D:{"33":0.01212,"49":1.13148,"50":0.01212,"81":0.10507,"87":0.01212,"88":0.03233,"91":0.10507,"92":0.11719,"93":0.52533,"94":14.15966,"95":2.63069,"97":0.01212,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 89 90 96 98"},F:{"77":0.08486,"79":2.0003,"80":0.8082,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.3036,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.17202,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0.10097,"12.0-12.1":0.02057,"12.2-12.5":6.27881,"13.0-13.1":0.05048,"13.2":0,"13.3":0.04114,"13.4-13.7":0.05983,"14.0-14.4":0.3347,"14.5-14.8":9.33408},B:{"12":0.13739,"13":0.01212,"14":0.04041,"16":0.04041,"17":0.07274,"18":0.48088,"83":0.01212,"85":0.07274,"88":0.01212,"90":0.01212,"91":0.02021,"92":0.05253,"93":0.40814,"94":2.36803,"95":0.42026,_:"15 79 80 81 84 86 87 89"},E:{"4":0,"12":0.1576,"13":0.6506,"14":0.07274,"15":0.74354,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.05253,"11.1":0.01212,"12.1":0.03233,"13.1":0.3152,"14.1":2.13769},P:{"4":0.6203,"5.0-5.4":0.06101,"6.2-6.4":0.03051,"7.2-7.4":0.07179,"8.2":0.04068,"9.2":0.01026,"10.1":0.01026,"11.1-11.2":1.00506,"12.0":0.01026,"13.0":1.85628,"14.0":1.02557,"15.0":10.1429},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00016,"4.4":0,"4.4.3-4.4.4":0.01176},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.99409,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.97115},Q:{"10.4":0},O:{"0":0},H:{"0":0.33844},L:{"0":25.71182},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js
new file mode 100644
index 0000000000..815a93fe7e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FM.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.03875,"82":0.03322,"87":0.01661,"88":0.02214,"90":0.03322,"91":0.01661,"92":1.2456,"93":3.05587,"94":0.0775,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 85 86 89 95 3.5 3.6"},D:{"49":0.16608,"57":0.00554,"71":0.00554,"72":0.03875,"76":0.03875,"79":0.0775,"81":0.08304,"87":0.01107,"88":0.02214,"89":0.02768,"90":0.09965,"91":0.09965,"92":0.37645,"93":1.21238,"94":24.47466,"95":5.75744,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 73 74 75 77 78 80 83 84 85 86 96 97 98"},F:{"79":0.42074,"80":0.53146,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.20578,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":1.50532,"10.0-10.2":0.00293,"10.3":0.00293,"11.0-11.2":0,"11.3-11.4":0.00293,"12.0-12.1":0.00293,"12.2-12.5":1.32289,"13.0-13.1":0,"13.2":0.00878,"13.3":0.2039,"13.4-13.7":0.55315,"14.0-14.4":0.84388,"14.5-14.8":3.09844},B:{"16":0.02214,"17":0.02214,"18":0.02214,"84":0.04982,"85":0.00554,"86":0.1384,"87":0.02768,"89":0.01107,"90":0.00554,"91":0.01661,"92":0.53699,"93":0.17715,"94":8.33168,"95":1.77152,_:"12 13 14 15 79 80 81 83 88"},E:{"4":0,"13":0.01661,"14":0.08304,"15":0.18269,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.0609,"13.1":0.88576,"14.1":0.60896},P:{"4":0.02165,"5.0-5.4":0.02065,"6.2-6.4":0.01083,"7.2-7.4":0.21651,"8.2":0.0103,"9.2":0.05413,"10.1":0.02059,"11.1-11.2":0.28147,"12.0":0.10296,"13.0":0.10826,"14.0":0.06495,"15.0":1.45065},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02678},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.40966,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.00446},Q:{"10.4":0.02678},O:{"0":0.04464},H:{"0":0.0169},L:{"0":36.26258},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js
new file mode 100644
index 0000000000..bb64baaadd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FO.js
@@ -0,0 +1 @@
+module.exports={C:{"36":0.01131,"48":0.00566,"78":0.53742,"89":0.00566,"90":0.02829,"91":0.05657,"92":0.53742,"93":1.51042,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 94 95 3.5 3.6"},D:{"38":0.02263,"49":0.02829,"53":0.02263,"67":0.01131,"71":0.07354,"75":0.05091,"77":0.00566,"78":0.05091,"79":0.09051,"80":0.02829,"81":0.02829,"84":0.02263,"85":0.01697,"86":0.01697,"87":0.1188,"88":0.02829,"89":0.06223,"90":0.06223,"91":0.28285,"92":1.34637,"93":4.26538,"94":25.5357,"95":7.86323,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 72 73 74 76 83 96 97 98"},F:{"78":0.11314,"79":0.78632,"80":0.50347,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.78802,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03473,"10.0-10.2":0.04051,"10.3":0.16495,"11.0-11.2":0.07524,"11.3-11.4":0.00868,"12.0-12.1":0.03473,"12.2-12.5":0.60481,"13.0-13.1":0.13312,"13.2":0.24598,"13.3":0.08971,"13.4-13.7":0.61928,"14.0-14.4":4.25971,"14.5-14.8":18.82724},B:{"15":0.02829,"18":0.03394,"89":0.0396,"90":0.00566,"93":0.10183,"94":3.13398,"95":0.82592,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 91 92"},E:{"4":0,"12":0.04526,"13":0.01697,"14":1.06352,"15":1.08049,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01131,"11.1":0.29982,"12.1":0.0792,"13.1":0.6449,"14.1":3.81848},P:{"4":0.6203,"5.0-5.4":0.06101,"6.2-6.4":0.03051,"7.2-7.4":0.24405,"8.2":0.04068,"9.2":0.06101,"10.1":0.02134,"11.1-11.2":0.03125,"12.0":0.04068,"13.0":0.06251,"14.0":0.27087,"15.0":2.08365},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00272,"4.4":0,"4.4.3-4.4.4":0.00163},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.74672,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15638},Q:{"10.4":0},O:{"0":0},H:{"0":0.18507},L:{"0":11.74678},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js
new file mode 100644
index 0000000000..e27f518d8a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/FR.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.01013,"47":0.01519,"48":0.03038,"50":0.00506,"52":0.11645,"56":0.01519,"59":0.01519,"60":0.02532,"63":0.01013,"66":0.00506,"68":0.05063,"72":0.01519,"74":0.01013,"77":0.01013,"78":0.5468,"79":0.02025,"80":0.02025,"81":0.44048,"82":0.02025,"83":0.01519,"84":0.02532,"85":0.02025,"86":0.01519,"87":0.01013,"88":0.0405,"89":0.07088,"90":0.08607,"91":0.10632,"92":1.72648,"93":4.04027,"94":0.01519,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 49 51 53 54 55 57 58 61 62 64 65 67 69 70 71 73 75 76 95 3.6","3.5":0.00506},D:{"38":0.00506,"48":0.00506,"49":0.43036,"50":0.01013,"51":0.01013,"52":0.02532,"53":0.01013,"54":0.14176,"56":0.10126,"57":0.02025,"58":0.01013,"59":0.00506,"60":0.05063,"61":0.07595,"63":0.01519,"64":0.04557,"65":0.01519,"66":0.04557,"67":0.02025,"68":0.00506,"69":0.01013,"70":0.03544,"71":0.02025,"72":0.03544,"73":0.01013,"74":0.02025,"75":0.03038,"76":0.02025,"77":0.01519,"78":0.02532,"79":0.10126,"80":0.07595,"81":0.03544,"83":0.10126,"84":0.15695,"85":0.22277,"86":0.20758,"87":0.61262,"88":0.0962,"89":0.1367,"90":0.09113,"91":0.16708,"92":0.4101,"93":1.19487,"94":19.39635,"95":4.73391,"96":0.01519,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 55 62 97 98"},F:{"68":0.01013,"69":0.00506,"70":0.00506,"71":0.01013,"72":0.01013,"77":0.00506,"78":0.07088,"79":0.83033,"80":0.36454,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.01263,"15":3.81049,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00158,"6.0-6.1":0.00947,"7.0-7.1":0.01105,"8.1-8.4":0.01736,"9.0-9.2":0.01736,"9.3":0.2352,"10.0-10.2":0.02526,"10.3":0.15311,"11.0-11.2":0.06945,"11.3-11.4":0.05051,"12.0-12.1":0.04893,"12.2-12.5":0.71032,"13.0-13.1":0.05998,"13.2":0.02368,"13.3":0.12786,"13.4-13.7":0.37726,"14.0-14.4":1.1965,"14.5-14.8":8.82064},B:{"14":0.00506,"15":0.01013,"16":0.01013,"17":0.02532,"18":0.06582,"83":0.01013,"84":0.02025,"85":0.02025,"86":0.02025,"87":0.01013,"88":0.00506,"89":0.02025,"90":0.01013,"91":0.03544,"92":0.04557,"93":0.17721,"94":3.68586,"95":1.09867,_:"12 13 79 80 81"},E:{"4":0,"11":0.01013,"12":0.01519,"13":0.0962,"14":0.62781,"15":1.286,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01013,"10.1":0.03038,"11.1":0.0962,"12.1":0.15695,"13.1":0.52149,"14.1":2.19734},P:{"4":0.05317,"5.0-5.4":0.01063,_:"6.2-6.4 8.2","7.2-7.4":0.02127,"9.2":0.05317,"10.1":0.02127,"11.1-11.2":0.11697,"12.0":0.05317,"13.0":0.18077,"14.0":0.24457,"15.0":2.83915},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00262,"4.2-4.3":0.00589,"4.4":0,"4.4.3-4.4.4":0.0458},A:{"8":0.0343,"9":0.02858,"10":0.01715,"11":0.45159,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.49864},Q:{"10.4":0.00494},O:{"0":0.50357},H:{"0":0.35055},L:{"0":29.74312},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js
new file mode 100644
index 0000000000..a41f95e8a3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GA.js
@@ -0,0 +1 @@
+module.exports={C:{"37":0.00367,"52":0.04035,"54":0.02568,"68":0.00734,"72":0.05502,"77":0.00367,"78":0.0807,"81":0.011,"86":0.00367,"88":0.12838,"89":0.02201,"91":0.04402,"92":0.49885,"93":1.34982,"94":0.00734,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 79 80 82 83 84 85 87 90 95 3.5 3.6"},D:{"38":0.011,"43":0.00367,"48":0.011,"49":0.02934,"56":0.00734,"57":0.00367,"58":0.01467,"63":0.07703,"65":0.00734,"68":0.00734,"69":0.43649,"70":0.00367,"71":0.00367,"74":0.04768,"75":0.03668,"76":0.08803,"77":0.00734,"78":0.00734,"79":0.34479,"80":0.01834,"81":0.01467,"83":0.011,"84":0.03301,"85":0.011,"86":0.02201,"87":0.0807,"88":0.04035,"89":0.011,"90":0.07336,"91":0.14672,"92":0.2861,"93":0.51352,"94":13.6633,"95":4.07882,"96":0.2861,"97":0.08436,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 50 51 52 53 54 55 59 60 61 62 64 66 67 72 73 98"},F:{"28":0.21641,"67":0.00367,"77":0.01467,"78":0.04035,"79":1.78998,"80":0.70792,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00769,"15":1.29198,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.06642,"6.0-6.1":0,"7.0-7.1":0.03705,"8.1-8.4":0.0014,"9.0-9.2":0,"9.3":0.06502,"10.0-10.2":0.00419,"10.3":0.02377,"11.0-11.2":0.13633,"11.3-11.4":0.0035,"12.0-12.1":0.00489,"12.2-12.5":1.79535,"13.0-13.1":0.00909,"13.2":0.0014,"13.3":0.02377,"13.4-13.7":0.09788,"14.0-14.4":0.81098,"14.5-14.8":2.60983},B:{"12":0.01467,"13":0.01834,"14":0.01834,"15":0.011,"16":0.00734,"17":0.01834,"18":0.06969,"84":0.00367,"85":0.01834,"87":0.00367,"89":0.03301,"90":0.00734,"91":0.05869,"92":0.02201,"93":0.0807,"94":2.44289,"95":0.8363,_:"79 80 81 83 86 88"},E:{"4":0,"8":0.00367,"10":0.00367,"11":0.00734,"13":0.02568,"14":0.06236,"15":0.06602,_:"0 5 6 7 9 12 3.1 3.2 5.1 7.1 9.1","6.1":0.00367,"10.1":0.00367,"11.1":0.02934,"12.1":0.02201,"13.1":0.04768,"14.1":0.15772},P:{"4":0.42935,"5.0-5.4":0.02045,"6.2-6.4":0.02045,"7.2-7.4":1.79918,"8.2":0.02045,"9.2":0.06134,"10.1":0.03067,"11.1-11.2":0.06134,"12.0":0.04089,"13.0":0.36801,"14.0":0.34757,"15.0":1.77873},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00018,"4.2-4.3":0.00073,"4.4":0,"4.4.3-4.4.4":0.02441},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.00435,"11":0.74392,_:"6 7 8 10 5.5"},J:{"7":0,"10":0.00633},N:{_:"10 11"},R:{_:"0"},M:{"0":0.10131},Q:{"10.4":0.1583},O:{"0":0.98146},H:{"0":2.65566},L:{"0":52.57934},S:{"2.5":0.00633}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js
new file mode 100644
index 0000000000..44e116c00a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GB.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00933,"52":0.03731,"59":0.00933,"68":0.00466,"78":0.13526,"81":0.00466,"82":0.01399,"84":0.01399,"87":0.00466,"88":0.01399,"89":0.02798,"90":0.04664,"91":0.02798,"92":0.68561,"93":1.6324,"94":0.00933,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 83 85 86 95 3.5 3.6"},D:{"35":0.00933,"36":0.00466,"38":0.01399,"40":0.1819,"43":0.00466,"49":0.12593,"60":0.01866,"61":0.06063,"63":0.00933,"64":0.01399,"65":0.01399,"66":0.04664,"67":0.01399,"69":0.03265,"70":0.01866,"71":0.00466,"72":0.02332,"73":0.00466,"74":0.01866,"75":0.02332,"76":0.0513,"77":0.01866,"78":0.01399,"79":0.07462,"80":0.0513,"81":0.02798,"83":0.0513,"84":0.03731,"85":0.06063,"86":0.04198,"87":0.27984,"88":0.06063,"89":0.08862,"90":0.13059,"91":0.24253,"92":0.56901,"93":1.83762,"94":18.1896,"95":4.34218,"96":0.00933,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 37 39 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 62 68 97 98"},F:{"46":0.00466,"71":0.00933,"78":0.05597,"79":0.6343,"80":0.18656,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.00522,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00552,"6.0-6.1":0.00552,"7.0-7.1":0.0193,"8.1-8.4":0.01379,"9.0-9.2":0.01103,"9.3":0.28404,"10.0-10.2":0.01379,"10.3":0.2868,"11.0-11.2":0.0524,"11.3-11.4":0.06618,"12.0-12.1":0.04137,"12.2-12.5":1.35403,"13.0-13.1":0.04137,"13.2":0.01655,"13.3":0.12134,"13.4-13.7":0.40814,"14.0-14.4":1.58292,"14.5-14.8":18.23665},B:{"14":0.00466,"15":0.00933,"16":0.00933,"17":0.01866,"18":0.07462,"84":0.00466,"85":0.01399,"86":0.00466,"88":0.00466,"89":0.01399,"90":0.00933,"91":0.02798,"92":0.0513,"93":0.26118,"94":4.95783,"95":1.36189,_:"12 13 79 80 81 83 87"},E:{"4":0,"8":0.00466,"11":0.00933,"12":0.01399,"13":0.10261,"14":0.74158,"15":1.58576,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00466,"10.1":0.01866,"11.1":0.07462,"12.1":0.13059,"13.1":0.53636,"14.1":4.24424},P:{"4":0.03234,"5.0-5.4":0.02051,"6.2-6.4":0.01049,"7.2-7.4":0.04184,"8.2":0.01079,"9.2":0.01078,"10.1":0.04266,"11.1-11.2":0.07546,"12.0":0.03234,"13.0":0.14014,"14.0":0.18326,"15.0":3.70832},I:{"0":0,"3":0,"4":0.01329,"2.1":0,"2.2":0.00081,"2.3":0,"4.1":0.00109,"4.2-4.3":0.0038,"4.4":0,"4.4.3-4.4.4":0.02903},A:{"8":0.01027,"9":0.01027,"11":0.43653,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.31477},Q:{"10.4":0.00534},O:{"0":0.13338},H:{"0":0.19193},L:{"0":21.49204},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js
new file mode 100644
index 0000000000..8f2db4f24e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GD.js
@@ -0,0 +1 @@
+module.exports={C:{"60":0.00451,"69":0.01354,"78":0.09479,"83":0.00451,"86":0.01354,"87":0.01354,"89":0.01806,"91":0.00451,"92":0.40626,"93":0.78092,"94":0.01354,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 84 85 88 90 95 3.5 3.6"},D:{"47":0.00903,"49":0.01806,"50":0.0316,"55":0.00451,"62":0.00903,"63":0.02257,"65":0.00451,"67":0.01806,"68":0.00451,"74":0.09931,"76":0.08125,"77":0.01354,"79":0.0632,"81":0.04063,"84":0.04514,"85":0.01354,"86":0.00903,"87":0.04965,"88":0.05417,"89":0.08125,"90":0.04514,"91":0.07674,"92":0.31147,"93":1.12399,"94":21.34671,"95":4.6765,"96":0.08125,"97":0.00451,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 51 52 53 54 56 57 58 59 60 61 64 66 69 70 71 72 73 75 78 80 83 98"},F:{"37":0.00451,"65":0.06771,"78":0.02708,"79":0.41077,"80":0.12188,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.64779,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00429,"6.0-6.1":0,"7.0-7.1":0.17039,"8.1-8.4":0,"9.0-9.2":0.01286,"9.3":0.1361,"10.0-10.2":0,"10.3":0.25076,"11.0-11.2":0.00536,"11.3-11.4":0.00857,"12.0-12.1":0.00321,"12.2-12.5":0.56903,"13.0-13.1":0.00643,"13.2":0.01715,"13.3":0.04072,"13.4-13.7":0.14574,"14.0-14.4":0.29255,"14.5-14.8":5.39774},B:{"13":0.00903,"15":0.00451,"16":0.00903,"17":0.02257,"18":0.01354,"84":0.00903,"86":0.00451,"89":0.00451,"90":0.00451,"91":0.01354,"92":0.2257,"93":0.08125,"94":5.66507,"95":1.59796,_:"12 14 79 80 81 83 85 87 88"},E:{"4":0,"10":0.09931,"13":0.01354,"14":0.25278,"15":1.20072,_:"0 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1","5.1":0.01354,"9.1":0.00451,"10.1":0.00451,"11.1":0.00451,"12.1":0.05417,"13.1":0.17153,"14.1":2.2254},P:{"4":0.07591,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.33615,"8.2":0.01023,"9.2":0.02169,"10.1":0.01023,"11.1-11.2":0.30362,"12.0":0.06506,"13.0":0.23856,"14.0":0.1735,"15.0":4.33747},I:{"0":0,"3":0,"4":0.00902,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01052,"4.4":0,"4.4.3-4.4.4":0.09018},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.02745,"11":0.78507,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.1975},Q:{"10.4":0.01097},O:{"0":0.72964},H:{"0":0.23372},L:{"0":38.87735},S:{"2.5":0.00549}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js
new file mode 100644
index 0000000000..b53706f7a9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GE.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00933,"52":0.028,"56":0.00933,"68":0.00933,"78":0.01866,"83":0.00467,"84":0.00933,"88":0.11665,"89":0.00467,"91":0.00933,"92":0.40128,"93":0.9472,"94":0.01866,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 85 86 87 90 95 3.5 3.6"},D:{"38":0.00933,"39":0.00933,"43":0.00933,"47":0.014,"49":0.16331,"50":0.00933,"53":0.00467,"55":0.00933,"56":0.014,"58":0.00467,"59":0.014,"62":0.00933,"63":0.01866,"65":0.00933,"66":0.02333,"67":0.028,"68":0.028,"69":0.00933,"70":0.00933,"71":0.01866,"72":0.014,"73":0.03733,"74":0.01866,"75":0.02333,"76":0.02333,"77":0.00933,"78":0.014,"79":0.2053,"80":0.06532,"81":0.028,"83":0.06532,"84":0.04666,"85":0.05133,"86":0.11198,"87":0.26596,"88":0.15398,"89":0.10732,"90":0.17264,"91":0.16331,"92":0.37328,"93":0.9332,"94":22.93339,"95":7.24163,"96":0.04199,"97":0.014,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 44 45 46 48 51 52 54 57 60 61 64 98"},F:{"28":0.028,"36":0.00933,"43":0.00467,"46":0.01866,"48":0.01866,"57":0.014,"60":0.04666,"67":0.00933,"72":0.01866,"77":0.04199,"78":0.10732,"79":2.63162,"80":1.46512,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 44 45 47 49 50 51 52 53 54 55 56 58 62 63 64 65 66 68 69 70 71 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.08546,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.06916,"6.0-6.1":0.00485,"7.0-7.1":0.1371,"8.1-8.4":0.01092,"9.0-9.2":0.00243,"9.3":0.22568,"10.0-10.2":0.01699,"10.3":0.15166,"11.0-11.2":0.07401,"11.3-11.4":0.04247,"12.0-12.1":0.03883,"12.2-12.5":1.11382,"13.0-13.1":0.02791,"13.2":0.01335,"13.3":0.11163,"13.4-13.7":0.33609,"14.0-14.4":1.2667,"14.5-14.8":5.40047},B:{"12":0.014,"13":0.08865,"14":0.20997,"15":0.00467,"16":0.11198,"17":0.00933,"18":0.16798,"84":0.06066,"85":0.014,"87":0.014,"88":0.00467,"89":0.02333,"90":0.00933,"91":0.01866,"92":0.03266,"93":0.05599,"94":2.13236,"95":0.86321,_:"79 80 81 83 86"},E:{"4":0,"13":0.03733,"14":0.10265,"15":0.32662,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1","5.1":0.00467,"9.1":0.00467,"11.1":0.00933,"12.1":0.04199,"13.1":0.08399,"14.1":0.4666},P:{"4":0.4151,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.09579,"8.2":0.01023,"9.2":0.02129,"10.1":0.01023,"11.1-11.2":0.11708,"12.0":0.05322,"13.0":0.14901,"14.0":0.18094,"15.0":1.28787},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00373,"4.2-4.3":0.01867,"4.4":0,"4.4.3-4.4.4":0.08961},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.14931,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.08001},Q:{"10.4":0},O:{"0":0.12268},H:{"0":0.26764},L:{"0":38.96997},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js
new file mode 100644
index 0000000000..97784c91e3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GF.js
@@ -0,0 +1 @@
+module.exports={C:{"35":0.03811,"43":0.01429,"52":0.02858,"60":0.00953,"68":0.06193,"72":0.03335,"73":0.00476,"78":0.2382,"81":0.01429,"82":0.00953,"83":0.00953,"84":0.00476,"85":0.10957,"86":0.00953,"87":0.00953,"88":0.01906,"89":0.01906,"90":0.00953,"91":0.04764,"92":1.54354,"93":4.07798,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 74 75 76 77 79 80 94 95 3.5 3.6"},D:{"47":0.01906,"49":0.38112,"57":0.03811,"63":0.07622,"65":0.03811,"67":0.01429,"69":0.00476,"76":0.01429,"77":0.00476,"78":0.01429,"79":0.03335,"81":0.01429,"84":0.01429,"86":0.00953,"87":0.03335,"88":0.03335,"89":0.01906,"90":0.03811,"91":0.17627,"92":0.35254,"93":1.77697,"94":17.42671,"95":4.33048,"96":0.01429,"97":0.00476,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 58 59 60 61 62 64 66 68 70 71 72 73 74 75 80 83 85 98"},F:{"36":0.00953,"46":0.00953,"78":0.04764,"79":0.63838,"80":0.30013,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.94153,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.04363,"8.1-8.4":0,"9.0-9.2":0.00485,"9.3":0.1115,"10.0-10.2":0.00485,"10.3":0.12484,"11.0-11.2":0.22422,"11.3-11.4":0.01454,"12.0-12.1":0.21089,"12.2-12.5":0.39026,"13.0-13.1":0.0509,"13.2":0.00364,"13.3":0.03151,"13.4-13.7":0.16847,"14.0-14.4":0.77205,"14.5-14.8":7.02598},B:{"12":0.07622,"14":0.01429,"15":0.00953,"16":0.00953,"17":0.01429,"18":0.07146,"84":0.04288,"87":0.00953,"88":0.00953,"89":0.00476,"90":0.02382,"91":0.02858,"92":0.0667,"93":0.21914,"94":6.93638,"95":1.30057,_:"13 79 80 81 83 85 86"},E:{"4":0,"11":0.00476,"12":0.00953,"13":0.10004,"14":0.51928,"15":1.29581,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01429,"10.1":0.03335,"11.1":0.1191,"12.1":0.13339,"13.1":0.33824,"14.1":1.70075},P:{"4":0.01039,"5.0-5.4":0.01022,"6.2-6.4":0.05112,"7.2-7.4":0.10394,"8.2":0.02045,"9.2":0.01039,"10.1":0.08179,"11.1-11.2":0.18709,"12.0":0.01039,"13.0":0.18709,"14.0":0.14551,"15.0":2.68157},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00145,"4.4":0,"4.4.3-4.4.4":0.01426},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.46687,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.37706},Q:{"10.4":0},O:{"0":0.03142},H:{"0":0.04958},L:{"0":37.84308},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js
new file mode 100644
index 0000000000..1544103ed1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GG.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.18715,"70":0.00535,"78":0.03743,"88":0.00535,"90":0.03208,"92":0.38498,"93":1.19238,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 91 94 95 3.5 3.6"},D:{"38":0.01069,"41":0.00535,"63":0.10159,"65":0.01069,"67":0.00535,"69":0.00535,"76":0.09625,"77":0.03208,"79":0.01069,"81":0.01604,"85":0.02139,"87":0.04278,"88":0.01604,"89":0.14437,"90":0.19784,"91":0.52935,"92":0.52401,"93":1.28328,"94":21.28106,"95":5.24541,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 66 68 70 71 72 73 74 75 78 80 83 84 86 96 97 98"},F:{"78":0.20319,"79":0.20319,"80":0.08555,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.03296,"15":4.21261,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":1.89957,"10.0-10.2":0,"10.3":0.58725,"11.0-11.2":0.30261,"11.3-11.4":0.02097,"12.0-12.1":0.03296,"12.2-12.5":1.91156,"13.0-13.1":0.00899,"13.2":0.00899,"13.3":0.20674,"13.4-13.7":0.58126,"14.0-14.4":1.62392,"14.5-14.8":18.51632},B:{"17":0.00535,"18":0.02674,"81":0.02674,"87":0.01604,"89":0.02139,"91":0.02139,"92":0.03208,"93":0.20319,"94":4.33107,"95":1.70569,_:"12 13 14 15 16 79 80 83 84 85 86 88 90"},E:{"4":0,"11":0.18715,"12":0.02674,"13":0.04812,"14":1.04801,"15":2.20296,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02674,"11.1":0.17645,"12.1":0.10694,"13.1":1.08544,"14.1":8.2023},P:{"4":0.18633,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.21739,"8.2":0.01023,"9.2":0.05176,"10.1":0.01023,"11.1-11.2":0.3002,"12.0":0.07897,"13.0":0.12409,"14.0":0.28203,"15.0":3.10237},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.15495,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.16751},Q:{"10.4":0},O:{"0":0},H:{"0":0.07048},L:{"0":12.95739},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js
new file mode 100644
index 0000000000..67d0a2bdff
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GH.js
@@ -0,0 +1 @@
+module.exports={C:{"33":0.00293,"34":0.00879,"36":0.01172,"38":0.00586,"40":0.00586,"41":0.01172,"42":0.00586,"43":0.00586,"44":0.00586,"45":0.01172,"47":0.01466,"48":0.00879,"49":0.01172,"50":0.01466,"51":0.01466,"52":0.03224,"53":0.01759,"54":0.01466,"55":0.01466,"56":0.02052,"57":0.01466,"58":0.00879,"59":0.01466,"60":0.00879,"61":0.01466,"62":0.00586,"63":0.01172,"64":0.00293,"65":0.00586,"66":0.00879,"67":0.00879,"68":0.00879,"69":0.01172,"70":0.00586,"71":0.00293,"72":0.01172,"73":0.00586,"74":0.00293,"75":0.00586,"76":0.00879,"77":0.00586,"78":0.0381,"79":0.01759,"80":0.00586,"81":0.01172,"82":0.00586,"83":0.00879,"84":0.01172,"85":0.01172,"86":0.01172,"87":0.00879,"88":0.01759,"89":0.03224,"90":0.01759,"91":0.03517,"92":0.67999,"93":1.31602,"94":0.11138,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 37 39 46 95 3.5 3.6"},D:{"34":0.00293,"37":0.00293,"39":0.00879,"40":0.01172,"41":0.00879,"42":0.00586,"43":0.01172,"44":0.00586,"45":0.01172,"46":0.01466,"47":0.01759,"48":0.01172,"49":0.09672,"50":0.02052,"51":0.01172,"52":0.00879,"53":0.01172,"54":0.01172,"55":0.01759,"56":0.01466,"57":0.02345,"58":0.01759,"59":0.01172,"60":0.02052,"61":0.01172,"62":0.00879,"63":0.02638,"64":0.01759,"65":0.02052,"66":0.00879,"67":0.01759,"68":0.02052,"69":0.02931,"70":0.02052,"71":0.00879,"72":0.01466,"73":0.00879,"74":0.02345,"75":0.01759,"76":0.04397,"77":0.0381,"78":0.02052,"79":0.07034,"80":0.04983,"81":0.0469,"83":0.04397,"84":0.02638,"85":0.02638,"86":0.04983,"87":0.14362,"88":0.0381,"89":0.05569,"90":0.07328,"91":0.1231,"92":0.55396,"93":0.65068,"94":9.95954,"95":2.81083,"96":0.02345,"97":0.02052,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 98"},F:{"36":0.00293,"42":0.00879,"51":0.00293,"53":0.00586,"54":0.00586,"55":0.00586,"56":0.00293,"65":0.01172,"68":0.00293,"73":0.00586,"77":0.01172,"78":0.05569,"79":0.80016,"80":0.41327,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 52 57 58 60 62 63 64 66 67 69 70 71 72 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00586},G:{"8":0.01056,"15":2.88797,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00132,"5.0-5.1":0,"6.0-6.1":0.00264,"7.0-7.1":0.01188,"8.1-8.4":0.00264,"9.0-9.2":0,"9.3":0.05676,"10.0-10.2":0.00528,"10.3":0.15443,"11.0-11.2":0.59528,"11.3-11.4":0.066,"12.0-12.1":0.06072,"12.2-12.5":1.71457,"13.0-13.1":0.07787,"13.2":0.05148,"13.3":0.21383,"13.4-13.7":0.49497,"14.0-14.4":2.82198,"14.5-14.8":3.96766},B:{"12":0.0381,"13":0.01759,"14":0.01466,"15":0.01759,"16":0.03517,"17":0.02345,"18":0.11431,"79":0.00293,"80":0.00586,"81":0.00879,"83":0.00879,"84":0.04397,"85":0.02931,"86":0.01172,"87":0.00879,"88":0.00586,"89":0.04103,"90":0.02345,"91":0.02931,"92":0.06155,"93":0.1231,"94":1.94032,"95":0.55982},E:{"4":0,"10":0.00293,"11":0.00879,"12":0.01172,"13":0.03224,"14":0.09672,"15":0.22862,_:"0 5 6 7 8 9 3.1 3.2 6.1 7.1","5.1":0.00879,"9.1":0.00293,"10.1":0.00293,"11.1":0.02638,"12.1":0.02638,"13.1":0.08207,"14.1":0.26379},P:{"4":0.16966,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.11664,"8.2":0.01023,"9.2":0.07422,"10.1":0.01023,"11.1-11.2":0.11664,"12.0":0.04241,"13.0":0.11664,"14.0":0.27569,"15.0":0.82707},I:{"0":0,"3":0,"4":0.00069,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00685,"4.2-4.3":0.00651,"4.4":0,"4.4.3-4.4.4":0.0425},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01077,"9":0.00718,"10":0.00359,"11":0.12208,_:"6 7 5.5"},J:{"7":0,"10":0.01414},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.32517},Q:{"10.4":0},O:{"0":2.17725},H:{"0":13.45856},L:{"0":43.75479},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js
new file mode 100644
index 0000000000..be825b739a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GI.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01732,"78":0.05772,"89":0.01732,"90":0.03463,"91":0.01154,"92":0.22511,"93":0.68687,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 94 95 3.5 3.6"},D:{"49":0.13276,"60":0.03463,"74":0.01154,"78":0.01154,"79":0.04618,"81":0.05772,"83":0.01732,"84":0.13276,"86":0.02886,"87":0.02886,"88":0.01154,"89":0.05772,"90":0.09812,"91":0.19625,"92":0.58874,"93":2.03752,"94":27.46318,"95":8.66954,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 80 85 96 97 98"},F:{"36":0.03463,"78":0.01154,"79":0.25397,"80":0.28283,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.70967,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.01362,"7.0-7.1":0.00454,"8.1-8.4":0,"9.0-9.2":0.15665,"9.3":0.13168,"10.0-10.2":0.00227,"10.3":0.05676,"11.0-11.2":0.00454,"11.3-11.4":0.01589,"12.0-12.1":0.01816,"12.2-12.5":0.33373,"13.0-13.1":0.02724,"13.2":0.00454,"13.3":0.19071,"13.4-13.7":0.17708,"14.0-14.4":2.34522,"14.5-14.8":15.49936},B:{"17":0.01154,"18":0.11544,"91":0.06349,"92":0.03463,"93":0.12121,"94":4.53679,"95":1.40837,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 89 90"},E:{"4":0,"11":0.00577,"13":0.23088,"14":0.92929,"15":1.22366,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01732,"12.1":0.13853,"13.1":0.61183,"14.1":5.21212},P:{"4":0.19914,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.11664,"8.2":0.01023,"9.2":0.07422,"10.1":0.01023,"11.1-11.2":0.09433,"12.0":0.04241,"13.0":0.02096,"14.0":0.05241,"15.0":2.63081},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.17316,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.1057},Q:{"10.4":0},O:{"0":0.29596},H:{"0":0.23617},L:{"0":17.07363},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js
new file mode 100644
index 0000000000..2cccea707e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GL.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.25512,"84":0.02773,"86":0.00555,"87":0.01109,"88":0.07764,"90":0.01109,"91":0.09983,"92":1.48078,"93":1.39759,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 89 94 95 3.5 3.6"},D:{"49":0.02773,"62":0.01109,"65":0.01109,"74":0.09983,"75":0.01109,"76":0.01109,"79":0.04991,"80":0.47141,"81":0.11092,"83":0.00555,"85":0.01664,"86":0.01664,"87":0.2052,"88":0.1331,"89":0.26621,"90":0.04437,"91":0.49359,"92":0.66552,"93":2.61771,"94":18.62901,"95":5.92313,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 63 64 66 67 68 69 70 71 72 73 77 78 84 96 97 98"},F:{"74":0.04437,"78":0.49359,"79":1.95219,"80":0.44923,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":8.22779,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.1181,"9.3":0.05468,"10.0-10.2":0,"10.3":0.13122,"11.0-11.2":0.0175,"11.3-11.4":0,"12.0-12.1":0.00875,"12.2-12.5":0.79828,"13.0-13.1":0.00875,"13.2":0.01531,"13.3":0.06124,"13.4-13.7":0.23183,"14.0-14.4":0.56645,"14.5-14.8":11.62433},B:{"13":0.01109,"14":0.01109,"15":0.0721,"18":0.09428,"84":0.01664,"89":0.02773,"91":0.03882,"92":0.06655,"93":0.18302,"94":3.33869,"95":1.24785,_:"12 16 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"11":0.00555,"13":0.54905,"14":1.15911,"15":2.07975,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00555,"11.1":0.03882,"12.1":0.21629,"13.1":0.72098,"14.1":6.78276},P:{"4":0.11744,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.11664,"8.2":0.01023,"9.2":0.07422,"10.1":0.01023,"11.1-11.2":0.09433,"12.0":0.03203,"13.0":0.02135,"14.0":0.62992,"15.0":2.79728},I:{"0":0,"3":0,"4":0.00089,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00038,"4.2-4.3":0.00038,"4.4":0,"4.4.3-4.4.4":0.01616},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.06483,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.16031},Q:{"10.4":0},O:{"0":0.12468},H:{"0":0.801},L:{"0":18.51978},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js
new file mode 100644
index 0000000000..1eef3b1d1e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GM.js
@@ -0,0 +1 @@
+module.exports={C:{"33":0.00249,"34":0.00249,"40":0.02237,"42":0.00497,"43":0.00994,"44":0.00994,"46":0.00994,"47":0.00249,"50":0.01492,"51":0.00994,"52":0.02983,"53":0.00994,"54":0.0174,"55":0.01243,"56":0.01243,"57":0.01492,"58":0.01243,"59":0.01243,"60":0.01243,"61":0.00994,"62":0.00994,"63":0.0348,"65":0.00497,"66":0.00249,"68":0.00497,"69":0.02486,"72":0.00746,"73":0.00497,"76":0.00497,"78":0.0174,"79":0.00497,"81":0.00249,"83":0.00746,"85":0.00249,"86":0.00746,"87":0.00497,"88":0.00497,"89":0.02486,"90":0.00746,"91":0.02486,"92":0.6215,"93":1.54629,"94":0.10441,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 38 39 41 45 48 49 64 67 70 71 74 75 77 80 82 84 95 3.5 3.6"},D:{"11":0.00497,"30":0.00994,"31":0.01492,"34":0.01243,"36":0.00249,"37":0.00249,"39":0.00497,"40":0.12927,"41":0.00994,"43":0.00497,"44":0.00746,"45":0.01243,"46":0.01243,"47":0.01989,"48":0.00249,"49":0.02237,"50":0.01243,"51":0.00994,"52":0.00497,"53":0.01492,"54":0.00497,"55":0.02237,"56":0.00994,"57":0.01243,"58":0.01243,"59":0.01243,"60":0.02486,"61":0.00746,"62":0.00746,"63":0.01243,"64":0.01243,"65":0.01243,"67":0.01989,"68":0.00249,"69":0.01492,"70":0.00746,"72":0.01243,"74":0.02237,"75":0.00994,"76":0.01243,"77":0.00746,"78":0.00994,"79":0.11684,"80":0.02735,"81":0.02237,"83":0.00994,"84":0.00746,"85":0.02735,"86":0.0174,"87":0.05966,"88":0.0348,"89":0.00497,"90":0.03978,"91":0.13673,"92":0.13922,"93":0.34804,"94":6.60282,"95":1.66313,"96":0.06712,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 32 33 35 38 42 66 71 73 97 98"},F:{"19":0.00249,"31":0.00994,"42":0.00746,"43":0.00497,"48":0.00249,"53":0.00746,"54":0.00497,"55":0.00249,"56":0.00746,"65":0.00746,"68":0.00249,"75":0.00497,"76":0.00497,"78":0.0174,"79":0.58421,"80":0.17651,_:"9 11 12 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 39 40 41 44 45 46 47 49 50 51 52 57 58 60 62 63 64 66 67 69 70 71 72 73 74 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00746},G:{"8":0,"15":1.98225,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00247,"5.0-5.1":0.00865,"6.0-6.1":0.00247,"7.0-7.1":0.06546,"8.1-8.4":0.00247,"9.0-9.2":0.00618,"9.3":0.14574,"10.0-10.2":0.00494,"10.3":0.58788,"11.0-11.2":0.04693,"11.3-11.4":0.08645,"12.0-12.1":0.04199,"12.2-12.5":1.94519,"13.0-13.1":0.0988,"13.2":0.02594,"13.3":0.17785,"13.4-13.7":0.46191,"14.0-14.4":2.10575,"14.5-14.8":4.5462},B:{"12":0.02237,"13":0.02237,"14":0.00746,"15":0.01243,"16":0.05966,"17":0.00994,"18":0.31572,"79":0.00497,"80":0.00497,"81":0.00746,"83":0.00746,"84":0.00746,"85":0.01492,"86":0.01243,"87":0.00497,"89":0.0174,"90":0.00746,"91":0.0174,"92":0.01989,"93":0.10938,"94":0.93722,"95":0.29335,_:"88"},E:{"4":0,"8":0.00497,"10":0.00249,"11":0.00746,"12":0.00994,"13":0.01243,"14":0.04723,"15":0.1417,_:"0 5 6 7 9 3.1 3.2 6.1 7.1 9.1","5.1":0.00497,"10.1":0.00497,"11.1":0.0348,"12.1":0.00746,"13.1":0.07209,"14.1":0.26103},P:{"4":0.8594,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.58316,"8.2":0.01023,"9.2":0.133,"10.1":0.01023,"11.1-11.2":0.18416,"12.0":0.03069,"13.0":0.09208,"14.0":0.20462,"15.0":1.46302},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00131,"4.2-4.3":0.01358,"4.4":0,"4.4.3-4.4.4":0.06776},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01175,"11":0.05288,_:"6 7 9 10 5.5"},J:{"7":0,"10":0.30056},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.14277},Q:{"10.4":0.02254},O:{"0":0.83405},H:{"0":1.90649},L:{"0":63.96284},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js
new file mode 100644
index 0000000000..3817d32e09
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GN.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.0033,"6":0.0011,"15":0.0022,"17":0.0011,"32":0.0011,"35":0.0022,"37":0.01209,"38":0.0011,"39":0.0011,"47":0.0022,"49":0.0011,"52":0.0011,"72":0.0033,"76":0.0022,"77":0.0011,"78":0.00769,"79":0.0011,"84":0.0011,"86":0.0011,"88":0.0022,"89":0.00659,"90":0.01099,"91":0.0055,"92":0.10111,"93":0.34948,"94":0.0033,_:"2 3 5 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 36 40 41 42 43 44 45 46 48 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 80 81 82 83 85 87 95 3.5 3.6"},D:{"11":0.01649,"23":0.0011,"25":0.0022,"28":0.0011,"33":0.0033,"37":0.0033,"38":0.0011,"40":0.0033,"42":0.01429,"43":0.0044,"45":0.0011,"49":0.0033,"50":0.0011,"55":0.00769,"56":0.0022,"63":0.0022,"64":0.0022,"65":0.00659,"69":0.0022,"70":0.0055,"72":0.0022,"74":0.0033,"75":0.01099,"76":0.0044,"77":0.0044,"78":0.0033,"79":0.0033,"80":0.00659,"81":0.01209,"83":0.00659,"84":0.0022,"85":0.0011,"86":0.0044,"87":0.01978,"88":0.00769,"89":0.04506,"90":0.01099,"91":0.02198,"92":0.08352,"93":0.10441,"94":1.43969,"95":0.4363,"96":0.0022,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 24 26 27 29 30 31 32 34 35 36 39 41 44 46 47 48 51 52 53 54 57 58 59 60 61 62 66 67 68 71 73 97 98"},F:{"36":0.0022,"37":0.0033,"42":0.0011,"67":0.0011,"77":0.0022,"78":0.00659,"79":0.09561,"80":0.05385,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.48801,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.08751,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.08666,"10.0-10.2":0.08162,"10.3":0.11948,"11.0-11.2":0.31132,"11.3-11.4":0.90366,"12.0-12.1":0.32562,"12.2-12.5":2.10181,"13.0-13.1":0.24064,"13.2":0.02861,"13.3":0.15734,"13.4-13.7":0.48717,"14.0-14.4":1.3395,"14.5-14.8":1.6525},B:{"12":0.02198,"13":0.0055,"16":0.0011,"17":0.0055,"18":0.02748,"84":0.0055,"85":0.00879,"88":0.01099,"89":0.00879,"90":0.0011,"91":0.0044,"92":0.03627,"93":0.04176,"94":0.42861,"95":0.10441,_:"14 15 79 80 81 83 86 87"},E:{"4":0,"8":0.0033,"12":0.00769,"13":0.00659,"14":0.01758,"15":0.02528,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.04396,"11.1":0.03187,"12.1":0.01868,"13.1":0.01209,"14.1":0.03627},P:{"4":1.14107,"5.0-5.4":0.11108,"6.2-6.4":0.14137,"7.2-7.4":0.62607,"8.2":0.06059,"9.2":0.13127,"10.1":0.01023,"11.1-11.2":0.37362,"12.0":0.13127,"13.0":0.18176,"14.0":0.65637,"15.0":0.57558},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00713,"4.2-4.3":0.00881,"4.4":0,"4.4.3-4.4.4":0.23328},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00389,"11":0.08563,_:"6 7 9 10 5.5"},J:{"7":0,"10":0.07121},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.0356},Q:{"10.4":0.12461},O:{"0":0.27593},H:{"0":7.06174},L:{"0":74.84866},S:{"2.5":0.25813}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js
new file mode 100644
index 0000000000..84501a4a4a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GP.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.01339,"52":0.00892,"60":1.71341,"68":0.02231,"70":0.01785,"72":0.0357,"78":0.07585,"79":0.00446,"83":0.00892,"84":0.02677,"85":0.00892,"88":0.01339,"89":0.00892,"90":0.01339,"91":0.0357,"92":1.10211,"93":2.35594,"94":0.00892,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 71 73 74 75 76 77 80 81 82 86 87 95 3.5 3.6"},D:{"44":0.00892,"47":0.00446,"49":0.04908,"58":0.00446,"63":0.00892,"64":0.00892,"65":0.01339,"74":0.01339,"76":0.00892,"77":0.00892,"79":0.02677,"80":0.00892,"81":0.01785,"83":0.0357,"84":0.08032,"85":0.02231,"86":0.00892,"87":0.23202,"88":0.03123,"89":0.17402,"90":0.02677,"91":0.08924,"92":0.22756,"93":0.99503,"94":17.00468,"95":4.13627,"96":0.00892,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 45 46 48 50 51 52 53 54 55 56 57 59 60 61 62 66 67 68 69 70 71 72 73 75 78 97 98"},F:{"78":0.05801,"79":0.50867,"80":0.28557,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.00367,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00449,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.003,"9.0-9.2":0,"9.3":0.53622,"10.0-10.2":0,"10.3":0.0719,"11.0-11.2":0.02846,"11.3-11.4":0.01348,"12.0-12.1":0.02996,"12.2-12.5":0.55719,"13.0-13.1":0.02696,"13.2":0.00449,"13.3":0.12132,"13.4-13.7":0.36547,"14.0-14.4":1.1713,"14.5-14.8":8.03131},B:{"15":0.00446,"16":0.00892,"17":0.03123,"18":0.06247,"80":0.00446,"84":0.00446,"86":0.02231,"88":0.00446,"89":0.02231,"90":0.01785,"91":0.01785,"92":0.02677,"93":0.13832,"94":4.81004,"95":1.28059,_:"12 13 14 79 81 83 85 87"},E:{"4":0,"12":0.00892,"13":0.05354,"14":0.48636,"15":2.16853,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0357,"11.1":0.08478,"12.1":0.13832,"13.1":1.08873,"14.1":2.56119},P:{"4":0.06221,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.12441,"8.2":0.01023,"9.2":0.06221,"10.1":0.01023,"11.1-11.2":0.31103,"12.0":0.04147,"13.0":0.27993,"14.0":0.3836,"15.0":4.04338},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00048,"4.2-4.3":0.00032,"4.4":0,"4.4.3-4.4.4":0.01027},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.2231,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.35443},Q:{"10.4":0},O:{"0":0.00554},H:{"0":0.62392},L:{"0":35.23391},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js
new file mode 100644
index 0000000000..801d521a22
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GQ.js
@@ -0,0 +1 @@
+module.exports={C:{"29":0.00993,"42":0.00496,"52":0.07445,"54":0.00496,"56":0.01985,"57":0.01489,"60":0.00496,"64":0.00496,"68":0.00993,"71":0.02482,"72":0.01985,"77":0.00993,"78":0.08437,"79":0.00496,"80":0.00993,"82":0.00993,"84":0.00993,"86":0.56082,"89":0.05956,"90":0.01489,"91":0.02482,"92":1.81646,"93":4.15403,"94":0.07445,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 53 55 58 59 61 62 63 65 66 67 69 70 73 74 75 76 81 83 85 87 88 95 3.5 3.6"},D:{"18":0.03474,"38":0.00496,"46":0.01489,"47":0.00993,"49":0.03474,"50":0.14889,"53":0.01985,"54":0.12904,"55":0.29778,"60":0.02978,"62":0.01985,"63":0.03474,"64":0.12904,"68":0.00496,"69":0.07941,"70":0.01489,"75":0.03474,"76":0.00496,"78":0.08437,"79":0.23822,"81":0.03474,"83":0.06948,"84":0.00496,"85":0.03474,"86":0.02482,"87":0.12408,"88":0.02482,"89":0.02482,"90":0.15385,"91":0.11415,"92":0.5906,"93":0.82386,"94":19.04799,"95":4.15403,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 48 51 52 56 57 58 59 61 65 66 67 71 72 73 74 77 80 96 97 98"},F:{"18":0.0397,"29":0.00993,"42":0.00993,"44":0.00496,"51":0.134,"64":0.01489,"65":0.0397,"68":0.0397,"71":0.10919,"72":0.00993,"73":0.00496,"76":0.00496,"77":0.06452,"78":0.06948,"79":0.01985,"80":0.01985,_:"9 11 12 15 16 17 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 43 45 46 47 48 49 50 52 53 54 55 56 57 58 60 62 63 66 67 69 70 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.72796,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00118,"7.0-7.1":0.01122,"8.1-8.4":0,"9.0-9.2":0.00531,"9.3":0.07085,"10.0-10.2":0.00295,"10.3":0.03838,"11.0-11.2":0.08147,"11.3-11.4":0.01299,"12.0-12.1":0.06199,"12.2-12.5":1.22979,"13.0-13.1":0.02657,"13.2":0.01712,"13.3":0.05136,"13.4-13.7":0.16885,"14.0-14.4":1.07452,"14.5-14.8":2.32084},B:{"12":0.04467,"13":0.00993,"14":0.0397,"16":0.01985,"17":0.06452,"18":0.20348,"84":0.12904,"89":0.01489,"91":0.05956,"92":0.29282,"93":0.11911,"94":5.3253,"95":3.66766,_:"15 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.07941,"14":0.03474,"15":0.14889,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 10.1","5.1":0.00993,"9.1":0.01985,"11.1":0.01489,"12.1":0.01489,"13.1":0.04963,"14.1":0.64519},P:{"4":0.88669,"5.0-5.4":0.06186,"6.2-6.4":0.14119,"7.2-7.4":0.06186,"8.2":0.01026,"9.2":0.08248,"10.1":0.03093,"11.1-11.2":0.05155,"12.0":0.04124,"13.0":0.07217,"14.0":0.12372,"15.0":2.10331},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01785,"4.2-4.3":0.36981,"4.4":0,"4.4.3-4.4.4":0.61974},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.31887,"11":0.95662,_:"6 7 8 10 5.5"},J:{"7":0,"10":0.51881},N:{_:"10 11"},R:{_:"0"},M:{"0":0.09067},Q:{"10.4":0.00504},O:{"0":0.35763},H:{"0":0.30043},L:{"0":40.8067},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js
new file mode 100644
index 0000000000..59285a8f55
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GR.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00574,"52":0.6367,"56":0.01147,"60":0.00574,"65":0.02294,"68":0.00574,"72":0.00574,"77":0.00574,"78":0.12619,"81":0.0631,"82":0.04589,"84":0.03442,"85":0.00574,"87":0.04589,"88":0.04589,"89":0.02294,"90":0.01147,"91":0.04015,"92":1.97892,"93":6.05148,"94":0.01147,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 61 62 63 64 66 67 69 70 71 73 74 75 76 79 80 83 86 95 3.5 3.6"},D:{"22":0.49903,"34":0.00574,"38":0.20076,"47":0.30974,"49":0.6539,"53":0.00574,"56":0.00574,"58":0.03442,"62":0.17208,"65":0.01721,"67":0.00574,"68":0.01721,"69":0.16634,"71":0.01721,"72":0.02868,"73":0.00574,"75":0.02868,"76":0.00574,"77":0.08604,"78":0.01147,"79":0.17782,"80":0.03442,"81":0.01721,"83":0.01721,"84":0.02868,"85":0.01721,"86":0.04015,"87":0.21223,"88":0.03442,"89":0.07457,"90":0.02868,"91":0.32695,"92":0.26959,"93":0.90055,"94":26.04144,"95":7.08396,"96":0.01147,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 57 59 60 61 63 64 66 70 74 97 98"},F:{"12":0.07457,"25":0.06883,"28":0.00574,"31":0.75142,"40":0.56786,"46":0.00574,"78":0.04015,"79":0.83746,"80":0.41299,_:"9 11 15 16 17 18 19 20 21 22 23 24 26 27 29 30 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.38205,"3.2":0.00065,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00261,"6.0-6.1":0.00131,"7.0-7.1":0.17961,"8.1-8.4":0.00327,"9.0-9.2":0.00196,"9.3":0.08034,"10.0-10.2":0.00914,"10.3":0.07315,"11.0-11.2":0.01633,"11.3-11.4":0.02025,"12.0-12.1":0.01568,"12.2-12.5":0.41605,"13.0-13.1":0.01241,"13.2":0.02482,"13.3":0.03592,"13.4-13.7":0.16067,"14.0-14.4":0.39385,"14.5-14.8":3.69811},B:{"15":0.12046,"18":0.01147,"89":0.00574,"90":0.01147,"92":0.04015,"93":0.04015,"94":2.01907,"95":0.63096,_:"12 13 14 16 17 79 80 81 83 84 85 86 87 88 91"},E:{"4":0,"13":0.10325,"14":0.12619,"15":0.3671,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.05162,"12.1":0.04015,"13.1":0.10898,"14.1":0.66538},P:{"4":0.63789,"5.0-5.4":0.01064,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.01056,"10.1":0.03119,"11.1-11.2":0.08505,"12.0":0.02126,"13.0":0.10632,"14.0":0.08505,"15.0":1.45653},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01284,"4.2-4.3":0.1284,"4.4":0,"4.4.3-4.4.4":0.43014},A:{"11":0.41873,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.20467},Q:{"10.4":0},O:{"0":0.09807},H:{"0":0.20992},L:{"0":33.37782},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js
new file mode 100644
index 0000000000..c47d7331b8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GT.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01996,"65":0.00399,"73":0.11574,"78":0.05188,"87":0.00399,"88":0.00798,"89":0.01996,"90":0.02794,"91":0.02794,"92":0.50287,"93":1.23322,"94":0.01197,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 95 3.5 3.6"},D:{"38":0.01197,"49":0.05987,"53":0.00399,"63":0.00399,"65":0.01596,"68":0.00798,"69":0.00798,"70":0.00798,"72":0.00399,"73":0.00399,"74":0.01197,"75":0.00798,"76":0.05188,"77":0.00399,"78":0.01596,"79":0.0878,"80":0.01596,"81":0.02395,"83":0.02395,"84":0.02395,"85":0.00798,"86":0.10377,"87":0.09578,"88":0.04789,"89":0.04789,"90":0.03991,"91":0.25143,"92":0.25143,"93":0.65852,"94":21.40373,"95":5.72709,"96":0.00798,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 66 67 71 97 98"},F:{"78":0.07982,"79":1.18134,"80":0.56273,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.80742,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00075,"6.0-6.1":0.00601,"7.0-7.1":0.00451,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02103,"10.0-10.2":0.0015,"10.3":0.03755,"11.0-11.2":0.00751,"11.3-11.4":0.01202,"12.0-12.1":0.00676,"12.2-12.5":0.3192,"13.0-13.1":0.01878,"13.2":0.00526,"13.3":0.03605,"13.4-13.7":0.09238,"14.0-14.4":0.43035,"14.5-14.8":3.69817},B:{"17":0.00798,"18":0.01596,"84":0.00798,"85":0.01197,"89":0.01197,"90":0.00399,"91":0.01596,"92":0.02794,"93":0.04789,"94":2.03142,"95":0.64255,_:"12 13 14 15 16 79 80 81 83 86 87 88"},E:{"4":0,"13":0.02395,"14":0.18359,"15":0.71439,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00399,"11.1":0.00798,"12.1":0.02395,"13.1":0.14767,"14.1":0.76228},P:{"4":0.18633,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.21739,"8.2":0.01023,"9.2":0.05176,"10.1":0.01023,"11.1-11.2":0.3002,"12.0":0.05176,"13.0":0.19668,"14.0":0.31055,"15.0":2.19458},I:{"0":0,"3":0,"4":0.00426,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00284,"4.2-4.3":0.00568,"4.4":0,"4.4.3-4.4.4":0.06533},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.07982,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.24036},Q:{"10.4":0},O:{"0":0.10215},H:{"0":0.28445},L:{"0":50.17378},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js
new file mode 100644
index 0000000000..dffcd48411
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GU.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00465,"52":0.0093,"56":0.00465,"78":0.02324,"84":0.05113,"85":0.01859,"87":0.01394,"88":0.03254,"89":1.23172,"91":0.13944,"92":0.55311,"93":2.19386,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 86 90 94 95 3.5 3.6"},D:{"38":0.01394,"49":0.06507,"53":0.01394,"56":0.00465,"65":0.18127,"71":0.03254,"73":0.0093,"76":0.03254,"77":0.01394,"79":0.30212,"80":0.00465,"83":0.0093,"84":0.03718,"85":0.04183,"86":0.04183,"87":0.3486,"88":0.06507,"89":0.01394,"90":0.02789,"91":0.20916,"92":0.6879,"93":1.91498,"94":17.49972,"95":5.05238,"96":0.0093,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 57 58 59 60 61 62 63 64 66 67 68 69 70 72 74 75 78 81 97 98"},F:{"78":0.02789,"79":0.43691,"80":0.13944,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.34283,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00524,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.15198,"9.0-9.2":0,"9.3":0.26989,"10.0-10.2":0.00786,"10.3":0.22797,"11.0-11.2":0.02096,"11.3-11.4":0.03144,"12.0-12.1":0.06551,"12.2-12.5":1.11888,"13.0-13.1":0.01572,"13.2":0.01048,"13.3":0.31444,"13.4-13.7":0.46904,"14.0-14.4":2.13556,"14.5-14.8":16.0049},B:{"13":0.0093,"15":0.00465,"16":0.01394,"17":0.00465,"18":0.02324,"83":0.01394,"85":0.00465,"87":0.0093,"88":0.03254,"91":0.00465,"92":0.07902,"93":0.17198,"94":3.2443,"95":1.1713,_:"12 14 79 80 81 84 86 89 90"},E:{"4":0,"13":0.76227,"14":0.56241,"15":1.1527,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.01394,"10.1":0.06507,"11.1":0.10226,"12.1":0.1255,"13.1":0.39043,"14.1":3.89502},P:{"4":0.40849,"5.0-5.4":0.04092,"6.2-6.4":0.01023,"7.2-7.4":0.03142,"8.2":0.01023,"9.2":0.01047,"10.1":0.01023,"11.1-11.2":0.10474,"12.0":0.03142,"13.0":0.33517,"14.0":0.19901,"15.0":3.92781},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.60889,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.12845},Q:{"10.4":0},O:{"0":0.10169},H:{"0":0.13681},L:{"0":23.00522},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js
new file mode 100644
index 0000000000..1f00eddad4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GW.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.00818,"31":0.0109,"34":0.01636,"43":0.01363,"47":0.00818,"60":0.00273,"62":0.0109,"90":0.0109,"92":0.13085,"93":0.20718,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 35 36 37 38 39 40 41 42 44 45 46 48 49 50 51 52 53 54 55 56 57 58 59 61 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 91 94 95 3.5 3.6"},D:{"25":0.00545,"33":0.04362,"40":0.02999,"43":0.08723,"55":0.08451,"57":0.02453,"67":0.00273,"76":0.08996,"79":0.01363,"81":0.00545,"87":0.01636,"88":0.00818,"89":0.00545,"90":0.01908,"91":0.00818,"92":0.05452,"93":0.06815,"94":11.31017,"95":4.61784,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 34 35 36 37 38 39 41 42 44 45 46 47 48 49 50 51 52 53 54 56 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 77 78 80 83 84 85 86 96 97 98"},F:{"42":0.00545,"46":0.01908,"77":0.00545,"79":0.14448,"80":0.18264,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.70603,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00044,"6.0-6.1":0,"7.0-7.1":0.03866,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05096,"10.0-10.2":0.105,"10.3":0.04525,"11.0-11.2":0.04262,"11.3-11.4":0.05404,"12.0-12.1":0.25131,"12.2-12.5":0.57862,"13.0-13.1":0.0123,"13.2":0.00659,"13.3":0.0123,"13.4-13.7":1.18976,"14.0-14.4":0.23505,"14.5-14.8":1.06454},B:{"13":0.0109,"15":0.0109,"16":0.00545,"18":0.03271,"84":0.00273,"85":0.00545,"88":0.01636,"91":0.00545,"92":0.0109,"93":0.10904,"94":1.54292,"95":0.15538,_:"12 14 17 79 80 81 83 86 87 89 90"},E:{"4":0,"14":0.00545,"15":0.05725,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.01363,"13.1":0.06815,"14.1":0.01636},P:{"4":0.6832,"5.0-5.4":0.0207,"6.2-6.4":0.14137,"7.2-7.4":0.44511,"8.2":0.06059,"9.2":0.05176,"10.1":0.01023,"11.1-11.2":0.16562,"12.0":0.03105,"13.0":0.03105,"14.0":0.14492,"15.0":0.31054},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00047,"4.4":0,"4.4.3-4.4.4":0.0068},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.07905,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.26186},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.05092},Q:{"10.4":0},O:{"0":0.02182},H:{"0":1.65277},L:{"0":70.73287},S:{"2.5":1.33114}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js
new file mode 100644
index 0000000000..c8deb9bc50
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/GY.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01155,"72":0.0077,"78":0.01925,"88":0.00385,"89":0.01155,"91":0.01925,"92":0.42339,"93":0.82369,"94":0.0154,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 95 3.5 3.6"},D:{"11":0.0077,"33":0.00385,"34":0.0154,"38":0.00385,"47":0.01155,"49":0.00385,"59":0.02309,"63":0.0077,"64":0.00385,"65":0.01925,"67":0.00385,"68":0.01155,"69":0.0154,"70":0.01155,"74":0.0154,"75":0.06928,"76":0.02694,"77":0.13472,"79":0.30407,"80":0.01925,"81":0.07313,"83":0.00385,"84":0.03849,"85":0.0154,"86":0.04234,"87":0.05389,"88":0.03079,"89":0.01925,"90":0.09238,"91":0.09623,"92":0.50807,"93":1.38949,"94":15.41909,"95":4.12998,"96":0.01925,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 56 57 58 60 61 62 66 71 72 73 78 97 98"},F:{"28":0.0077,"77":0.0077,"78":0.02309,"79":0.45033,"80":0.27713,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.90111,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0474,"6.0-6.1":0,"7.0-7.1":0.10351,"8.1-8.4":0.0058,"9.0-9.2":0,"9.3":0.06094,"10.0-10.2":0.0029,"10.3":0.04547,"11.0-11.2":0.06094,"11.3-11.4":0.02612,"12.0-12.1":0.0058,"12.2-12.5":0.58332,"13.0-13.1":0.14801,"13.2":0.00484,"13.3":0.06868,"13.4-13.7":0.40726,"14.0-14.4":0.50593,"14.5-14.8":4.68976},B:{"12":0.01155,"13":0.00385,"14":0.00385,"15":0.02309,"16":0.0077,"17":0.00385,"18":0.02694,"80":0.0154,"81":0.00385,"84":0.01155,"85":0.00385,"87":0.0154,"88":0.00385,"89":0.04234,"90":0.0077,"91":0.01925,"92":0.03079,"93":0.26943,"94":4.79585,"95":1.49726,_:"79 83 86"},E:{"4":0,"13":0.0077,"14":0.07698,"15":0.47728,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 12.1","10.1":0.0154,"11.1":0.0077,"13.1":0.88527,"14.1":0.66973},P:{"4":0.29105,"5.0-5.4":0.01078,"6.2-6.4":0.01078,"7.2-7.4":0.28027,"8.2":0.06059,"9.2":0.03234,"10.1":0.19403,"11.1-11.2":0.32339,"12.0":0.02156,"13.0":0.16169,"14.0":0.46352,"15.0":4.01003},I:{"0":0,"3":0,"4":0.01644,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00235,"4.4":0,"4.4.3-4.4.4":0.11036},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.01433,"11":0.24356,_:"6 7 8 9 5.5"},J:{"7":0,"10":0.0123},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.0738},Q:{"10.4":0.05535},O:{"0":0.70725},H:{"0":0.22707},L:{"0":48.91666},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js
new file mode 100644
index 0000000000..43217ee662
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HK.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.02948,"52":0.03439,"56":0.00491,"72":0.00983,"78":0.07861,"84":0.00491,"86":0.00491,"88":0.01474,"89":0.03439,"90":0.05404,"91":0.03439,"92":0.48147,"93":1.22334,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 87 94 95 3.5 3.6"},D:{"19":0.00983,"22":0.01965,"26":0.01474,"30":0.00983,"34":0.0737,"38":0.16704,"48":0.00491,"49":0.113,"53":0.06387,"55":0.02457,"56":0.01474,"57":0.00983,"58":0.00491,"61":0.02948,"62":0.02457,"63":0.01474,"64":0.00983,"65":0.02457,"66":0.00491,"67":0.03439,"68":0.02457,"69":0.04422,"70":0.01474,"71":0.01965,"72":0.03439,"73":0.01965,"74":0.03439,"75":0.05404,"76":0.02457,"77":0.01474,"78":0.06878,"79":0.58465,"80":0.113,"81":0.04913,"83":0.06878,"84":0.0393,"85":0.03439,"86":0.07861,"87":0.17687,"88":0.09335,"89":0.08843,"90":0.12283,"91":0.2653,"92":1.03173,"93":1.4739,"94":20.5216,"95":5.18322,"96":0.02948,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 50 51 52 54 59 60 97 98"},F:{"28":0.01474,"36":0.04422,"40":0.01474,"46":0.07861,"78":0.00983,"79":0.13756,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.70542,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00217,"5.0-5.1":0.02827,"6.0-6.1":0.0174,"7.0-7.1":0.03044,"8.1-8.4":0.03262,"9.0-9.2":0.0174,"9.3":0.24137,"10.0-10.2":0.10003,"10.3":0.18049,"11.0-11.2":0.137,"11.3-11.4":0.07828,"12.0-12.1":0.08263,"12.2-12.5":0.9568,"13.0-13.1":0.08046,"13.2":0.02392,"13.3":0.17396,"13.4-13.7":0.55233,"14.0-14.4":1.794,"14.5-14.8":13.50175},B:{"12":0.00983,"16":0.00491,"17":0.00983,"18":0.02948,"86":0.00491,"89":0.00983,"90":0.00983,"91":0.01474,"92":0.02948,"93":0.13265,"94":3.29662,_:"13 14 15 79 80 81 83 84 85 87 88 95"},E:{"4":0,"8":0.01474,"11":0.00983,"12":0.01965,"13":0.16213,"14":0.83521,"15":1.31177,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00491,"10.1":0.02948,"11.1":0.05896,"12.1":0.09826,"13.1":0.50604,"14.1":4.51996},P:{_:"4 5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1 11.1-11.2 12.0 13.0 14.0 15.0"},I:{"0":0,"3":0,"4":0.00097,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00194,"4.2-4.3":0.00533,"4.4":0,"4.4.3-4.4.4":0.03246},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.11034,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},S:{"2.5":0},R:{_:"0"},M:{"0":0.26452},Q:{"10.4":0.16787},O:{"0":0.67657},H:{"0":0.0915},L:{"0":23.79891}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js
new file mode 100644
index 0000000000..626924d76f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HN.js
@@ -0,0 +1 @@
+module.exports={C:{"5":0.00877,"15":0.00438,"17":0.00438,"52":0.01315,"72":0.02192,"73":0.07451,"78":0.0526,"84":0.00438,"85":0.0263,"86":0.03506,"87":0.01315,"88":0.00438,"89":0.00877,"91":0.01315,"92":0.4383,"93":1.0563,"94":0.00877,_:"2 3 4 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 74 75 76 77 79 80 81 82 83 90 95 3.5 3.6"},D:{"22":0.00438,"24":0.00438,"25":0.00877,"35":0.0263,"38":0.0263,"47":0.00438,"49":0.1797,"53":0.03506,"63":0.01753,"65":0.00877,"66":0.00877,"67":0.00877,"68":0.03506,"70":0.00877,"72":0.00877,"73":0.00877,"74":0.00877,"75":0.04383,"76":0.09204,"77":0.00877,"78":0.01315,"79":0.2323,"80":0.07889,"81":0.03068,"83":0.01753,"84":0.17532,"85":0.04383,"86":0.03945,"87":0.21038,"88":0.12711,"89":0.16655,"90":0.04383,"91":0.47336,"92":0.49528,"93":1.09137,"94":20.52121,"95":6.29837,"96":0.00877,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 26 27 28 29 30 31 32 33 34 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 64 69 71 97 98"},F:{"68":0.00877,"74":0.00438,"78":0.08328,"79":1.22724,"80":0.69251,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.97445,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00355,"6.0-6.1":0.00976,"7.0-7.1":0.0204,"8.1-8.4":0.00177,"9.0-9.2":0,"9.3":0.09669,"10.0-10.2":0.0071,"10.3":0.05234,"11.0-11.2":0.0071,"11.3-11.4":0.01508,"12.0-12.1":0.01065,"12.2-12.5":0.42492,"13.0-13.1":0.0071,"13.2":0.00444,"13.3":0.04613,"13.4-13.7":0.19694,"14.0-14.4":0.62629,"14.5-14.8":4.36454},B:{"13":0.00438,"14":0.00438,"15":0.0263,"16":0.00438,"17":0.01315,"18":0.09643,"84":0.02192,"89":0.03068,"90":0.00438,"91":0.00877,"92":0.03945,"93":0.10958,"94":2.67801,"95":0.9292,_:"12 79 80 81 83 85 86 87 88"},E:{"4":0,"13":0.04383,"14":0.2323,"15":0.63115,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.05698,"10.1":0.00877,"11.1":0.0263,"12.1":0.01753,"13.1":0.10081,"14.1":0.75826},P:{"4":0.34309,"5.0-5.4":0.1119,"6.2-6.4":0.09156,"7.2-7.4":0.17674,"8.2":0.09156,"9.2":0.03119,"10.1":0.0104,"11.1-11.2":0.29111,"12.0":0.06238,"13.0":0.14555,"14.0":0.29111,"15.0":1.99616},I:{"0":0,"3":0,"4":0.00112,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00506,"4.2-4.3":0.00506,"4.4":0,"4.4.3-4.4.4":0.05055},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00591,"10":0.00591,"11":0.12406,_:"6 7 9 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.15166},Q:{"10.4":0.01123},O:{"0":0.08426},H:{"0":0.2393},L:{"0":46.29955},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js
new file mode 100644
index 0000000000..51ab6fb492
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HR.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00964,"52":0.15427,"56":0.00482,"63":0.02411,"65":0.00482,"68":0.00964,"72":0.00964,"77":0.01446,"78":0.10124,"84":0.01446,"85":0.00482,"86":0.00482,"87":0.00964,"88":0.03857,"89":0.05785,"90":0.02411,"91":0.08196,"92":1.61504,"93":3.7652,"94":0.01446,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 64 66 67 69 70 71 73 74 75 76 79 80 81 82 83 95 3.5 3.6"},D:{"38":0.00964,"43":0.00964,"49":0.22177,"53":0.00964,"63":0.00964,"65":0.00964,"66":0.00482,"67":0.00482,"68":0.00482,"69":0.01446,"70":0.00964,"71":0.01446,"74":0.01446,"75":0.10606,"76":0.03375,"77":0.16391,"78":0.00964,"79":0.1157,"80":0.02411,"81":0.24105,"83":0.02411,"84":0.03857,"85":0.01446,"86":0.06749,"87":0.21695,"88":0.04339,"89":0.08196,"90":0.06267,"91":0.12535,"92":0.32783,"93":1.03169,"94":24.12428,"95":6.50835,"96":0.00964,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 64 72 73 97 98"},F:{"36":0.00964,"46":0.00964,"78":0.06267,"79":1.24382,"80":0.64601,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.85102,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00546,"6.0-6.1":0,"7.0-7.1":0.00234,"8.1-8.4":0.00312,"9.0-9.2":0.00156,"9.3":0.05538,"10.0-10.2":0.00468,"10.3":0.06474,"11.0-11.2":0.01638,"11.3-11.4":0.0156,"12.0-12.1":0.0195,"12.2-12.5":0.29953,"13.0-13.1":0.01794,"13.2":0.0078,"13.3":0.04992,"13.4-13.7":0.17395,"14.0-14.4":0.59751,"14.5-14.8":4.61313},B:{"12":0.00482,"16":0.01446,"17":0.01446,"18":0.03375,"84":0.00964,"86":0.00964,"88":0.02411,"89":0.01928,"91":0.01446,"92":0.01446,"93":0.08196,"94":2.16463,"95":0.63155,_:"13 14 15 79 80 81 83 85 87 90"},E:{"4":0,"12":0.00482,"13":0.02411,"14":0.18802,"15":0.36158,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01928,"12.1":0.03375,"13.1":0.14463,"14.1":0.76172},P:{"4":0.11435,"5.0-5.4":0.09474,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.02079,"10.1":0.03119,"11.1-11.2":0.11435,"12.0":0.05198,"13.0":0.15593,"14.0":0.25989,"15.0":3.51372},I:{"0":0,"3":0,"4":0.00078,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00118,"4.2-4.3":0.00353,"4.4":0,"4.4.3-4.4.4":0.0204},A:{"11":0.40979,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.26413},Q:{"10.4":0},O:{"0":0.08804},H:{"0":0.41677},L:{"0":39.98632},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js
new file mode 100644
index 0000000000..90746c21e9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HT.js
@@ -0,0 +1 @@
+module.exports={C:{"30":0.00162,"48":0.00162,"49":0.00324,"52":0.00647,"59":0.00162,"68":0.00485,"77":0.00971,"78":0.03074,"88":0.00324,"89":0.00485,"90":0.0178,"91":0.00485,"92":0.16989,"93":0.50158,"94":0.00809,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 95 3.5 3.6"},D:{"11":0.06796,"18":0.00162,"33":0.00485,"34":0.00809,"36":0.00324,"42":0.00485,"43":0.00162,"46":0.00324,"49":0.03721,"50":0.00971,"53":0.00485,"55":0.00971,"56":0.01133,"58":0.00647,"59":0.02265,"60":0.07605,"61":0.00162,"62":0.00162,"63":0.05016,"64":0.00809,"65":0.00647,"66":0.00809,"67":0.00809,"68":0.01133,"69":0.01618,"70":0.00809,"71":0.00809,"72":0.01294,"73":0.00647,"74":0.02589,"75":0.02103,"76":0.0631,"77":0.04692,"78":0.00809,"79":0.04045,"80":0.03236,"81":0.02751,"83":0.00971,"84":0.13429,"85":0.02103,"86":0.02912,"87":0.0809,"88":0.02751,"89":0.05825,"90":0.02751,"91":0.08575,"92":0.60513,"93":0.60028,"94":5.05625,"95":1.31705,"96":0.01456,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 37 38 39 40 41 44 45 47 48 51 52 54 57 97 98"},F:{"46":0.00324,"53":0.00162,"77":0.00485,"78":0.0178,"79":0.30904,"80":0.1618,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.00536,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00103,"6.0-6.1":0.00414,"7.0-7.1":0.03517,"8.1-8.4":0.00517,"9.0-9.2":0.0031,"9.3":0.15308,"10.0-10.2":0.02069,"10.3":0.25858,"11.0-11.2":0.1055,"11.3-11.4":0.14894,"12.0-12.1":0.37235,"12.2-12.5":2.05209,"13.0-13.1":0.18928,"13.2":0.05378,"13.3":0.33822,"13.4-13.7":0.44062,"14.0-14.4":2.04485,"14.5-14.8":3.1102},B:{"12":0.03398,"13":0.01942,"14":0.00809,"15":0.01456,"16":0.01942,"17":0.0178,"18":0.05016,"80":0.00809,"83":0.00324,"84":0.02103,"85":0.01133,"86":0.00162,"87":0.00162,"88":0.00485,"89":0.02103,"90":0.00647,"91":0.0178,"92":0.03398,"93":0.04692,"94":1.33323,"95":0.31227,_:"79 81"},E:{"4":0,"13":0.02427,"14":0.04045,"15":0.25079,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 9.1","5.1":0.01294,"7.1":0.00324,"10.1":0.00647,"11.1":0.01294,"12.1":0.01456,"13.1":0.03883,"14.1":0.2605},P:{"4":0.30518,"5.0-5.4":0.1119,"6.2-6.4":0.09156,"7.2-7.4":0.35605,"8.2":0.09156,"9.2":0.19328,"10.1":0.19403,"11.1-11.2":0.40691,"12.0":0.12207,"13.0":0.21363,"14.0":0.28484,"15.0":0.77313},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00144,"4.2-4.3":0.0045,"4.4":0,"4.4.3-4.4.4":0.03597},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.12135,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.03352},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.09219},Q:{"10.4":0},O:{"0":0.19276},H:{"0":0.92041},L:{"0":72.27114},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js
new file mode 100644
index 0000000000..5c7ca4431c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/HU.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.01916,"51":0.00479,"52":0.16765,"56":0.00479,"57":0.00479,"60":0.00479,"63":0.00479,"66":0.00958,"68":0.01437,"69":0.00479,"72":0.00958,"74":0.00958,"77":0.00479,"78":0.11496,"80":0.00958,"81":0.00958,"82":0.00479,"83":0.00479,"84":0.06706,"85":0.01437,"86":0.00958,"87":0.00958,"88":0.05748,"89":0.14849,"90":0.03832,"91":0.78556,"92":1.98306,"93":4.77084,"94":0.00958,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 53 54 55 58 59 61 62 64 65 67 70 71 73 75 76 79 95 3.5 3.6"},D:{"24":0.01437,"33":0.01437,"34":0.00958,"37":0.01437,"38":0.03353,"49":0.56043,"53":0.02874,"58":0.00479,"61":0.08143,"64":0.00479,"68":0.00958,"70":0.00479,"71":0.00479,"72":0.00479,"73":0.00479,"74":0.00479,"75":0.00958,"76":0.00479,"77":0.00958,"78":0.01437,"79":0.24429,"80":0.01437,"81":0.02395,"83":0.06227,"84":0.01916,"85":0.01916,"86":0.02395,"87":0.26345,"88":0.13891,"89":0.06227,"90":0.05748,"91":0.11017,"92":0.3353,"93":0.90052,"94":21.85677,"95":5.68573,"96":0.00958,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 35 36 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 60 62 63 65 66 67 69 97 98"},F:{"36":0.00958,"46":0.00479,"77":0.00958,"78":0.05269,"79":1.49448,"80":0.7185,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.19327,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00201,"6.0-6.1":0.00201,"7.0-7.1":0.01204,"8.1-8.4":0.00903,"9.0-9.2":0.001,"9.3":0.03311,"10.0-10.2":0.00301,"10.3":0.04214,"11.0-11.2":0.02207,"11.3-11.4":0.01605,"12.0-12.1":0.02307,"12.2-12.5":0.32605,"13.0-13.1":0.01505,"13.2":0.00803,"13.3":0.05317,"13.4-13.7":0.23175,"14.0-14.4":0.60896,"14.5-14.8":5.42745},B:{"17":0.01437,"18":0.01916,"87":0.00479,"89":0.00958,"91":0.00958,"92":0.02874,"93":0.13891,"94":2.16029,"95":0.6706,_:"12 13 14 15 16 79 80 81 83 84 85 86 88 90"},E:{"4":0,"12":0.00479,"13":0.10059,"14":0.18202,"15":0.55564,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02395,"12.1":0.02395,"13.1":0.12454,"14.1":0.7185},P:{"4":0.28983,"5.0-5.4":0.01064,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.01056,"10.1":0.03119,"11.1-11.2":0.05175,"12.0":0.0207,"13.0":0.12421,"14.0":0.19667,"15.0":2.44283},I:{"0":0,"3":0,"4":0,"2.1":0.00481,"2.2":0,"2.3":0,"4.1":0.0024,"4.2-4.3":0.00962,"4.4":0,"4.4.3-4.4.4":0.07695},A:{"11":0.18681,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.30218},Q:{"10.4":0},O:{"0":0.04689},H:{"0":0.42419},L:{"0":39.10361},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js
new file mode 100644
index 0000000000..21a205bfd9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ID.js
@@ -0,0 +1 @@
+module.exports={C:{"36":0.06937,"43":0.00365,"45":0.00365,"47":0.0073,"48":0.00365,"52":0.03286,"56":0.0073,"59":0.0073,"60":0.0073,"61":0.00365,"66":0.00365,"68":0.00365,"70":0.0073,"72":0.02191,"78":0.03651,"79":0.00365,"80":0.0073,"81":0.0073,"82":0.0073,"83":0.0073,"84":0.0146,"85":0.01095,"86":0.0073,"87":0.0073,"88":0.03651,"89":0.03651,"90":0.01826,"91":0.04016,"92":0.87624,"93":2.1906,"94":0.09493,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 44 46 49 50 51 53 54 55 57 58 62 63 64 65 67 69 71 73 74 75 76 77 95 3.5 3.6"},D:{"24":0.00365,"25":0.0073,"49":0.02556,"56":0.00365,"58":0.01095,"61":0.01095,"62":0.00365,"63":0.02556,"64":0.00365,"65":0.0073,"66":0.0073,"67":0.0073,"68":0.00365,"69":0.01095,"70":0.0146,"71":0.02556,"72":0.0073,"73":0.0073,"74":0.01826,"75":0.0146,"76":0.0146,"77":0.0146,"78":0.01826,"79":0.08397,"80":0.05111,"81":0.02191,"83":0.03651,"84":0.02921,"85":0.04746,"86":0.05477,"87":0.24827,"88":0.04746,"89":0.07302,"90":0.05842,"91":0.10953,"92":0.5513,"93":0.62797,"94":19.36125,"95":4.76456,"96":0.01095,"97":0.00365,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 59 60 98"},F:{"78":0.0146,"79":0.3505,"80":0.27017,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.41185,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00103,"5.0-5.1":0.00051,"6.0-6.1":0.00257,"7.0-7.1":0.00051,"8.1-8.4":0.00051,"9.0-9.2":0.00051,"9.3":0.01184,"10.0-10.2":0.0036,"10.3":0.01904,"11.0-11.2":0.01596,"11.3-11.4":0.01287,"12.0-12.1":0.0211,"12.2-12.5":0.38037,"13.0-13.1":0.02419,"13.2":0.01184,"13.3":0.07412,"13.4-13.7":0.16316,"14.0-14.4":0.68817,"14.5-14.8":2.29973},B:{"12":0.0073,"14":0.0073,"15":0.00365,"16":0.00365,"17":0.0073,"18":0.02191,"84":0.0073,"85":0.00365,"89":0.01095,"90":0.00365,"91":0.01095,"92":0.02556,"93":0.04746,"94":1.55898,"95":0.48923,_:"13 79 80 81 83 86 87 88"},E:{"4":0,"12":0.01095,"13":0.02191,"14":0.12413,"15":0.18985,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.10953,"11.1":0.01095,"12.1":0.02556,"13.1":0.11318,"14.1":0.30303},P:{"4":0.21452,"5.0-5.4":0.1119,"6.2-6.4":0.01022,"7.2-7.4":0.08172,"8.2":0.09156,"9.2":0.05108,"10.1":0.04086,"11.1-11.2":0.16344,"12.0":0.07151,"13.0":0.17366,"14.0":0.25538,"15.0":1.05217},I:{"0":0,"3":0.03138,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01569,"4.2-4.3":0.01121,"4.4":0,"4.4.3-4.4.4":0.09413},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.0126,"10":0.0042,"11":0.06718,_:"6 7 9 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.09525},Q:{"10.4":0},O:{"0":1.27635},H:{"0":1.18432},L:{"0":55.46948},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js
new file mode 100644
index 0000000000..c6017bdc34
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IE.js
@@ -0,0 +1 @@
+module.exports={C:{"11":0.0117,"38":0.02731,"43":0.02731,"44":0.10923,"45":0.02731,"52":0.0156,"70":0.0039,"78":0.10533,"79":0.0039,"80":0.0039,"81":0.0039,"84":0.02341,"87":0.10143,"88":0.07802,"89":0.06242,"90":0.11703,"91":0.17164,"92":1.1703,"93":1.06887,"94":0.0078,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 82 83 85 86 95 3.5 3.6"},D:{"38":0.0078,"47":0.02731,"48":0.30038,"49":0.12483,"51":0.0039,"52":0.03901,"53":0.0078,"59":0.0039,"61":0.0117,"65":0.0117,"67":0.0078,"68":0.0156,"69":0.0078,"70":0.0078,"71":0.0117,"72":0.0078,"74":0.02731,"75":0.01951,"76":0.03511,"77":0.0156,"78":0.01951,"79":0.10533,"80":0.02341,"81":0.11313,"83":0.01951,"84":0.02731,"85":0.03121,"86":0.05071,"87":0.19895,"88":0.03901,"89":0.04291,"90":0.08192,"91":0.29258,"92":0.55784,"93":1.66183,"94":15.9824,"95":3.68254,"96":0.0078,"97":0.0117,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 54 55 56 57 58 60 62 63 64 66 73 98"},F:{"78":0.02341,"79":0.32378,"80":0.17555,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.49683,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00874,"7.0-7.1":0.0612,"8.1-8.4":0.02331,"9.0-9.2":0.01166,"9.3":0.17195,"10.0-10.2":0.00583,"10.3":0.19526,"11.0-11.2":0.04663,"11.3-11.4":0.05829,"12.0-12.1":0.05246,"12.2-12.5":1.35808,"13.0-13.1":0.04663,"13.2":0.0204,"13.3":0.16029,"13.4-13.7":0.5275,"14.0-14.4":2.22656,"14.5-14.8":19.65722},B:{"12":0.0078,"13":0.0117,"16":0.0117,"17":0.0117,"18":0.03901,"84":0.0039,"85":0.0078,"86":0.0078,"88":0.01951,"89":0.0117,"90":0.0078,"91":0.0117,"92":0.02341,"93":0.12483,"94":2.51224,"95":0.65147,_:"14 15 79 80 81 83 87"},E:{"4":0,"8":0.0117,"9":0.04291,"11":0.0039,"12":0.0078,"13":0.17555,"14":1.49798,"15":0.80361,_:"0 5 6 7 10 3.1 3.2 6.1 7.1 9.1","5.1":0.0117,"10.1":0.0117,"11.1":0.03121,"12.1":0.08582,"13.1":0.4057,"14.1":3.22223},P:{"4":0.01048,"5.0-5.4":0.09096,"6.2-6.4":0.08086,"7.2-7.4":0.02095,"8.2":0.10107,"9.2":0.01048,"10.1":0.16171,"11.1-11.2":0.15714,"12.0":0.07333,"13.0":0.14667,"14.0":0.2619,"15.0":3.2895},I:{"0":0,"3":0,"4":0.00315,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00421,"4.2-4.3":0.0021,"4.4":0,"4.4.3-4.4.4":0.05153},A:{"9":0.10673,"11":0.34579,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.32935},Q:{"10.4":0.0183},O:{"0":0.04879},H:{"0":0.14435},L:{"0":28.14333},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js
new file mode 100644
index 0000000000..d953f79b5d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IL.js
@@ -0,0 +1 @@
+module.exports={C:{"24":0.0043,"25":0.01289,"26":0.03008,"27":0.0043,"36":0.0043,"52":0.03008,"66":0.0043,"78":0.03438,"79":0.10313,"80":0.02578,"82":0.0043,"84":0.0043,"88":0.02578,"89":0.03438,"90":0.00859,"91":0.01719,"92":0.41251,"93":1.07855,"94":0.01289,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 81 83 85 86 87 95 3.5 3.6"},D:{"31":0.04297,"32":0.00859,"38":0.03008,"49":0.12032,"51":0.0043,"53":0.01289,"56":0.00859,"58":0.0043,"61":0.05156,"63":0.00859,"65":0.00859,"66":0.0043,"67":0.00859,"68":0.01289,"69":0.00859,"70":0.01289,"71":0.01289,"72":0.01289,"73":0.03008,"74":0.01289,"75":0.01719,"76":0.01719,"77":0.0043,"78":0.01719,"79":0.11602,"80":0.31368,"81":0.03438,"83":0.02149,"84":0.01719,"85":0.05586,"86":0.03867,"87":0.15469,"88":0.02578,"89":0.12032,"90":0.06875,"91":0.1461,"92":0.4297,"93":1.44379,"94":24.14484,"95":6.70332,"96":0.01289,"97":0.0043,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 54 55 57 59 60 62 64 98"},F:{"28":0.0043,"69":0.00859,"77":0.00859,"78":0.03867,"79":0.47267,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},B:{"16":0.0043,"17":0.00859,"18":0.03438,"84":0.00859,"85":0.00859,"86":0.01719,"88":0.0043,"89":0.01289,"90":0.0043,"91":0.04727,"92":0.03867,"93":0.11172,"94":1.75318,_:"12 13 14 15 79 80 81 83 87 95"},E:{"4":0,"7":0.0043,"8":0.1375,"13":0.03438,"14":0.1504,"15":0.32657,_:"0 5 6 9 10 11 12 3.1 3.2 5.1 7.1 9.1","6.1":0.00859,"10.1":0.0043,"11.1":0.01719,"12.1":0.02149,"13.1":0.08164,"14.1":0.73908},G:{"8":0.00253,"15":2.51398,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00632,"6.0-6.1":0.00506,"7.0-7.1":0.02907,"8.1-8.4":0.02022,"9.0-9.2":0.00379,"9.3":0.08089,"10.0-10.2":0.01138,"10.3":0.08974,"11.0-11.2":0.04045,"11.3-11.4":0.04297,"12.0-12.1":0.03918,"12.2-12.5":0.41331,"13.0-13.1":0.03413,"13.2":0.02022,"13.3":0.0948,"13.4-13.7":0.24773,"14.0-14.4":0.93658,"14.5-14.8":8.00328},P:{"4":0.09237,_:"5.0-5.4 6.2-6.4","7.2-7.4":0.02053,"8.2":0.01026,"9.2":0.10264,"10.1":0.03079,"11.1-11.2":0.29764,"12.0":0.09237,"13.0":0.27712,"14.0":0.4516,"15.0":4.6802},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00157,"4.2-4.3":0.00315,"4.4":0,"4.4.3-4.4.4":0.01809},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.01314,"10":0.00876,"11":0.43788,_:"6 7 8 5.5"},N:{_:"10 11"},J:{"7":0,"10":0},O:{"0":0.06272},H:{"0":0.23213},L:{"0":38.30039},S:{"2.5":0},R:{_:"0"},M:{"0":0.16536},Q:{"10.4":0.0114}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js
new file mode 100644
index 0000000000..c8253bab0c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IM.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00494,"52":0.40969,"63":0.06417,"78":0.05923,"89":0.01974,"90":0.00494,"91":0.01974,"92":0.53309,"93":1.78683,"94":0.00494,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 95 3.5 3.6"},D:{"49":0.81444,"65":0.11353,"67":0.08391,"70":0.01481,"72":0.02468,"74":0.00494,"75":0.02468,"76":0.01974,"78":0.04442,"79":0.02468,"81":0.01974,"83":0.00987,"84":0.04936,"85":0.00987,"86":0.02468,"87":0.07404,"88":0.00987,"89":0.0543,"90":0.09378,"91":0.26654,"92":0.39982,"93":1.51535,"94":16.7824,"95":4.48189,"96":0.00494,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 69 71 73 77 80 97 98"},F:{"46":0.01974,"75":0.00987,"76":0.02468,"78":0.01481,"79":0.33565,"80":0.24186,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.73611,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00306,"8.1-8.4":0.00918,"9.0-9.2":0,"9.3":0.57832,"10.0-10.2":0,"10.3":0.53548,"11.0-11.2":0.0918,"11.3-11.4":0.13463,"12.0-12.1":0.02448,"12.2-12.5":1.97056,"13.0-13.1":0.0153,"13.2":0.03366,"13.3":0.13157,"13.4-13.7":0.41002,"14.0-14.4":1.90937,"14.5-14.8":21.00302},B:{"14":0.00987,"18":0.01974,"87":0.01481,"89":0.00987,"90":0.01481,"91":0.03949,"92":0.03949,"93":0.22706,"94":6.03673,"95":1.69305,_:"12 13 15 16 17 79 80 81 83 84 85 86 88"},E:{"4":0,"11":0.02962,"13":0.15302,"14":0.81938,"15":3.21334,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.03949,"11.1":0.29122,"12.1":0.18757,"13.1":0.90329,"14.1":5.6764},P:{"4":0.03339,"5.0-5.4":0.1119,"6.2-6.4":0.01017,"7.2-7.4":0.16278,"8.2":0.09156,"9.2":0.06104,"10.1":0.01113,"11.1-11.2":0.23399,"12.0":0.03339,"13.0":0.07792,"14.0":0.16697,"15.0":3.27263},I:{"0":0,"3":0,"4":0.00518,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0005,"4.4":0,"4.4.3-4.4.4":0.00952},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.01068,"11":0.37926,_:"6 7 8 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.49121},Q:{"10.4":0.01013},O:{"0":0.01013},H:{"0":0.09589},L:{"0":16.32059},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js
new file mode 100644
index 0000000000..59cade1dbb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IN.js
@@ -0,0 +1 @@
+module.exports={C:{"42":0.00465,"43":0.00232,"47":0.00697,"48":0.00697,"49":0.00232,"52":0.02789,"54":0.00232,"56":0.00697,"60":0.00232,"66":0.00465,"68":0.00232,"72":0.00697,"78":0.02789,"80":0.00232,"81":0.00465,"82":0.00232,"83":0.00232,"84":0.00232,"85":0.00232,"86":0.00232,"87":0.00232,"88":0.01394,"89":0.01394,"90":0.01627,"91":0.01859,"92":0.34163,"93":0.81805,"94":0.0674,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 44 45 46 50 51 53 55 57 58 59 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 95 3.5 3.6"},D:{"27":0.00232,"41":0.00232,"49":0.03254,"50":0.00232,"55":0.00465,"56":0.00465,"58":0.00465,"61":0.01627,"63":0.01859,"64":0.00697,"65":0.00697,"66":0.00465,"67":0.00465,"68":0.00232,"69":0.00465,"70":0.02324,"71":0.03718,"72":0.00697,"73":0.00465,"74":0.01394,"75":0.00697,"76":0.00465,"77":0.0093,"78":0.01162,"79":0.02789,"80":0.03951,"81":0.02092,"83":0.04648,"84":0.02092,"85":0.02324,"86":0.03718,"87":0.1162,"88":0.03254,"89":0.04648,"90":0.06972,"91":0.1162,"92":0.27191,"93":0.54382,"94":12.59376,"95":3.10022,"96":0.02092,"97":0.00465,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 42 43 44 45 46 47 48 51 52 53 54 57 59 60 62 98"},F:{"65":0.00232,"78":0.00697,"79":0.16965,"80":0.09761,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00102,"15":0.7156,"3.2":0.0002,"4.0-4.1":0,"4.2-4.3":0.00041,"5.0-5.1":0.00041,"6.0-6.1":0.00041,"7.0-7.1":0.00651,"8.1-8.4":0,"9.0-9.2":0.00102,"9.3":0.00814,"10.0-10.2":0.00163,"10.3":0.00936,"11.0-11.2":0.05575,"11.3-11.4":0.00671,"12.0-12.1":0.00936,"12.2-12.5":0.1524,"13.0-13.1":0.00753,"13.2":0.00407,"13.3":0.01587,"13.4-13.7":0.04537,"14.0-14.4":0.21893,"14.5-14.8":0.77318},B:{"12":0.00697,"15":0.00232,"16":0.00465,"17":0.00232,"18":0.01394,"84":0.00697,"85":0.00232,"89":0.00697,"90":0.00232,"91":0.00697,"92":0.01394,"93":0.02556,"94":0.61121,"95":0.17895,_:"13 14 79 80 81 83 86 87 88"},E:{"4":0,"13":0.00465,"14":0.03254,"15":0.1255,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00697,"11.1":0.00232,"12.1":0.00697,"13.1":0.02324,"14.1":0.13014},P:{"4":0.27794,"5.0-5.4":0.01064,"6.2-6.4":0.02138,"7.2-7.4":0.12828,_:"8.2","9.2":0.05345,"10.1":0.03119,"11.1-11.2":0.07483,"12.0":0.03207,"13.0":0.14966,"14.0":0.19242,"15.0":0.56658},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00256,"4.4":0,"4.4.3-4.4.4":0.02814},A:{"8":0.00232,"11":0.05345,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.14583},Q:{"10.4":0},O:{"0":2.44065},H:{"0":2.61583},L:{"0":69.95354},S:{"2.5":0.44515}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js
new file mode 100644
index 0000000000..60cab3e5e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IQ.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00212,"38":0.00212,"43":0.00212,"44":0.00212,"47":0.00424,"50":0.00424,"51":0.00212,"52":0.03604,"53":0.00424,"54":0.00424,"55":0.00212,"56":0.00424,"57":0.00424,"58":0.00212,"59":0.00424,"60":0.00424,"61":0.00424,"62":0.00212,"63":0.00424,"65":0.00212,"68":0.00212,"69":0.00212,"72":0.00424,"78":0.01908,"81":0.00636,"82":0.00212,"83":0.00212,"84":0.00424,"85":0.00212,"87":0.00424,"88":0.01272,"89":0.01908,"90":0.00636,"91":0.01272,"92":0.2226,"93":0.46216,"94":0.01272,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 45 46 48 49 64 66 67 70 71 73 74 75 76 77 79 80 86 95 3.5 3.6"},D:{"11":0.00636,"22":0.00212,"24":0.00212,"25":0.00212,"26":0.00636,"31":0.00212,"33":0.00424,"34":0.00424,"38":0.03392,"39":0.00424,"40":0.00424,"41":0.00424,"43":0.05512,"45":0.00424,"46":0.00424,"47":0.0106,"49":0.0318,"50":0.00212,"51":0.00212,"52":0.00212,"53":0.0106,"54":0.00212,"55":0.00636,"56":0.00848,"57":0.00424,"58":0.00424,"59":0.00212,"60":0.00848,"61":0.00212,"62":0.00848,"63":0.01484,"64":0.00424,"65":0.0106,"66":0.00636,"67":0.00636,"68":0.01696,"69":0.01696,"70":0.0318,"71":0.00636,"72":0.00636,"73":0.00636,"74":0.0106,"75":0.0106,"76":0.00636,"77":0.00636,"78":0.00636,"79":0.18444,"80":0.0212,"81":0.02544,"83":0.02544,"84":0.01908,"85":0.01696,"86":0.04028,"87":0.06148,"88":0.05936,"89":0.0636,"90":0.04452,"91":0.09964,"92":0.24804,"93":0.45368,"94":9.75412,"95":2.63516,"96":0.00848,"97":0.00636,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 27 28 29 30 32 35 36 37 42 44 48 98"},F:{"28":0.00636,"53":0.00212,"54":0.00212,"55":0.00212,"77":0.00212,"78":0.01908,"79":0.33072,"80":0.18868,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00212},G:{"8":0.00341,"15":4.9815,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00853,"6.0-6.1":0.00683,"7.0-7.1":0.06314,"8.1-8.4":0.00853,"9.0-9.2":0.01877,"9.3":0.07338,"10.0-10.2":0.01877,"10.3":0.09216,"11.0-11.2":0.06144,"11.3-11.4":0.04778,"12.0-12.1":0.0529,"12.2-12.5":1.05978,"13.0-13.1":0.03242,"13.2":0.01365,"13.3":0.12458,"13.4-13.7":0.34985,"14.0-14.4":1.39427,"14.5-14.8":8.65064},B:{"12":0.00848,"13":0.00424,"14":0.00636,"15":0.00636,"16":0.0106,"17":0.01272,"18":0.03392,"80":0.00212,"81":0.00424,"83":0.00424,"84":0.0106,"85":0.00424,"86":0.00424,"87":0.00424,"89":0.02332,"90":0.00424,"91":0.00848,"92":0.01272,"93":0.09116,"94":1.0918,"95":0.32224,_:"79 88"},E:{"4":0,"11":0.00212,"12":0.00424,"13":0.02544,"14":0.20564,"15":0.44096,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1","5.1":0.04452,"10.1":0.00212,"11.1":0.00424,"12.1":0.01272,"13.1":0.0742,"14.1":0.82892},P:{"4":0.20347,"5.0-5.4":0.1119,"6.2-6.4":0.01017,"7.2-7.4":0.16278,"8.2":0.09156,"9.2":0.06104,"10.1":0.02035,"11.1-11.2":0.23399,"12.0":0.08139,"13.0":0.3459,"14.0":0.37643,"15.0":2.98088},I:{"0":0,"3":0,"4":0.00149,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00149,"4.2-4.3":0.00595,"4.4":0,"4.4.3-4.4.4":0.06989},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00974,"9":0.00974,"11":0.20947,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.11822},Q:{"10.4":0},O:{"0":0.64624},H:{"0":0.27607},L:{"0":57.49846},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js
new file mode 100644
index 0000000000..bdff98e01d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IR.js
@@ -0,0 +1 @@
+module.exports={C:{"27":0.0031,"29":0.00931,"30":0.0062,"31":0.0031,"32":0.0031,"33":0.01241,"34":0.0062,"35":0.0031,"37":0.0062,"38":0.01551,"39":0.0062,"40":0.00931,"41":0.01241,"42":0.0031,"43":0.01241,"45":0.0031,"46":0.0062,"47":0.02482,"48":0.01241,"49":0.0062,"50":0.00931,"52":0.09616,"56":0.01241,"58":0.0031,"59":0.0031,"60":0.0062,"62":0.0031,"64":0.0031,"66":0.0031,"67":0.0031,"68":0.00931,"69":0.0062,"70":0.0062,"72":0.03722,"73":0.0062,"74":0.0031,"75":0.0031,"76":0.0031,"77":0.0062,"78":0.14269,"79":0.00931,"80":0.01241,"81":0.01861,"82":0.01241,"83":0.01241,"84":0.01861,"85":0.01551,"86":0.01241,"87":0.01241,"88":0.03102,"89":0.05894,"90":0.04033,"91":0.09926,"92":1.30284,"93":3.45563,"94":0.03412,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 36 44 51 53 54 55 57 61 63 65 71 95 3.5 3.6"},D:{"31":0.0031,"34":0.0031,"35":0.04033,"38":0.01241,"39":0.0031,"42":0.0031,"48":0.00931,"49":0.07445,"51":0.0031,"54":0.0031,"55":0.0031,"56":0.00931,"57":0.0031,"58":0.00931,"60":0.0062,"61":0.02171,"62":0.00931,"63":0.02171,"64":0.0062,"65":0.0062,"66":0.0031,"67":0.0062,"68":0.0062,"69":0.00931,"70":0.00931,"71":0.02171,"72":0.00931,"73":0.0062,"74":0.01241,"75":0.00931,"76":0.00931,"77":0.01241,"78":0.01861,"79":0.04033,"80":0.03412,"81":0.03412,"83":0.07445,"84":0.08996,"85":0.10547,"86":0.14269,"87":0.32881,"88":0.04343,"89":0.04963,"90":0.06204,"91":0.17992,"92":0.29159,"93":0.4591,"94":13.27966,"95":3.59832,"96":0.0062,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 36 37 40 41 43 44 45 46 47 50 52 53 59 97 98"},F:{"64":0.0062,"65":0.0062,"68":0.0062,"70":0.0031,"71":0.0062,"72":0.0031,"76":0.0031,"77":0.01241,"78":0.02171,"79":0.37844,"80":0.17681,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 69 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.779,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00041,"6.0-6.1":0.00083,"7.0-7.1":0.00413,"8.1-8.4":0,"9.0-9.2":0.00207,"9.3":0.02067,"10.0-10.2":0.01034,"10.3":0.03845,"11.0-11.2":0.03142,"11.3-11.4":0.03266,"12.0-12.1":0.03556,"12.2-12.5":0.54373,"13.0-13.1":0.03266,"13.2":0.0153,"13.3":0.08931,"13.4-13.7":0.18855,"14.0-14.4":0.69465,"14.5-14.8":1.61216},B:{"12":0.0062,"13":0.0062,"14":0.00931,"15":0.0062,"16":0.00931,"17":0.00931,"18":0.05584,"81":0.0062,"84":0.01551,"85":0.00931,"86":0.0062,"87":0.0031,"89":0.02792,"90":0.01241,"91":0.00931,"92":0.02482,"93":0.02792,"94":0.59558,"95":0.17992,_:"79 80 83 88"},E:{"4":0,"13":0.0062,"14":0.02792,"15":0.05584,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.19232,"11.1":0.0062,"12.1":0.0031,"13.1":0.01551,"14.1":0.06824},P:{"4":0.84898,"5.0-5.4":0.09096,"6.2-6.4":0.08086,"7.2-7.4":0.60641,"8.2":0.10107,"9.2":0.37395,"10.1":0.16171,"11.1-11.2":0.75802,"12.0":0.38406,"13.0":1.10165,"14.0":1.29368,"15.0":3.75976},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00385,"4.2-4.3":0.02535,"4.4":0,"4.4.3-4.4.4":0.08117},A:{"7":0.00313,"8":0.04064,"9":0.01563,"10":0.0125,"11":2.75402,_:"6 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.89674},Q:{"10.4":0},O:{"0":0.13106},H:{"0":0.42449},L:{"0":54.67732},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js
new file mode 100644
index 0000000000..0aab31c337
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IS.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.0373,"61":0.00622,"78":0.13056,"79":0.00622,"82":0.01243,"88":0.01243,"89":0.01243,"90":0.01243,"91":0.03109,"92":1.01959,"93":2.43085,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 81 83 84 85 86 87 94 95 3.5 3.6"},D:{"38":0.01243,"49":0.13677,"58":0.00622,"63":0.00622,"65":0.02487,"67":0.02487,"70":0.03109,"73":0.01243,"75":0.02487,"76":0.02487,"77":0.00622,"78":0.01243,"79":0.11191,"80":0.01243,"81":0.01243,"83":0.04352,"84":0.03109,"85":0.08704,"86":0.01243,"87":0.24246,"88":0.02487,"89":0.06217,"90":0.26111,"91":0.37302,"92":1.21853,"93":3.61208,"94":27.98893,"95":7.29254,"96":0.00622,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 66 68 69 71 72 74 97 98"},F:{"78":0.10569,"79":0.97607,"80":0.43519,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.39443,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00743,"9.0-9.2":0.00186,"9.3":0.04645,"10.0-10.2":0.00372,"10.3":0.07989,"11.0-11.2":0.04273,"11.3-11.4":0.02973,"12.0-12.1":0.05388,"12.2-12.5":0.32142,"13.0-13.1":0.02973,"13.2":0.00929,"13.3":0.06317,"13.4-13.7":0.27126,"14.0-14.4":0.93454,"14.5-14.8":13.27858},B:{"18":0.00622,"85":0.01243,"90":0.01865,"91":0.00622,"92":0.03109,"93":0.13677,"94":2.94686,"95":1.01337,_:"12 13 14 15 16 17 79 80 81 83 84 86 87 88 89"},E:{"4":0,"12":0.01243,"13":0.12434,"14":1.2061,"15":2.26921,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00622,"10.1":0.0373,"11.1":0.24868,"12.1":0.2176,"13.1":0.90147,"14.1":4.61923},P:{"4":0.03186,"5.0-5.4":0.01064,"6.2-6.4":0.06621,"7.2-7.4":0.10527,_:"8.2","9.2":0.01056,"10.1":0.03119,"11.1-11.2":0.03186,"12.0":0.04248,"13.0":0.03186,"14.0":0.13806,"15.0":2.63377},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00013,"4.2-4.3":0.00006,"4.4":0,"4.4.3-4.4.4":0.00738},A:{"9":0.01243,"11":0.16786,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.23839},Q:{"10.4":0},O:{"0":0.01135},H:{"0":0.07523},L:{"0":16.28555},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js
new file mode 100644
index 0000000000..5eac9bdab8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/IT.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01502,"52":0.10014,"56":0.01502,"59":0.01502,"66":0.00501,"68":0.01001,"72":0.00501,"78":0.16523,"82":0.02504,"83":0.02504,"84":0.01001,"85":0.01001,"86":0.01502,"87":0.01001,"88":0.03004,"89":0.03004,"90":0.02003,"91":0.05007,"92":1.08151,"93":2.65872,"94":0.02003,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 60 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 95 3.5 3.6"},D:{"38":0.02504,"49":0.30042,"52":0.01502,"60":0.01001,"61":0.03505,"63":0.02003,"65":0.01502,"66":0.08512,"67":0.02003,"68":0.00501,"69":0.17525,"70":0.01502,"71":0.01001,"72":0.00501,"73":0.01001,"74":0.03505,"75":0.02003,"76":0.01001,"77":0.01502,"78":0.01502,"79":0.06008,"80":0.03505,"81":0.03505,"83":0.03505,"84":0.04506,"85":0.04506,"86":0.07511,"87":0.27539,"88":0.05508,"89":0.13519,"90":0.08512,"91":0.15021,"92":0.34548,"93":0.91127,"94":24.11371,"95":6.85458,"96":0.01502,"97":0.00501,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 62 64 98"},F:{"78":0.04506,"79":0.72602,"80":0.3605,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00281,"15":4.44485,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00421,"6.0-6.1":0.00281,"7.0-7.1":0.01545,"8.1-8.4":0.00843,"9.0-9.2":0.01685,"9.3":0.10392,"10.0-10.2":0.01404,"10.3":0.10954,"11.0-11.2":0.05477,"11.3-11.4":0.05477,"12.0-12.1":0.03792,"12.2-12.5":0.52664,"13.0-13.1":0.03511,"13.2":0.01966,"13.3":0.08567,"13.4-13.7":0.26964,"14.0-14.4":1.07996,"14.5-14.8":7.14827},B:{"16":0.00501,"17":0.01502,"18":0.02504,"84":0.01001,"85":0.00501,"87":0.00501,"89":0.03505,"90":0.01502,"91":0.02003,"92":0.03004,"93":0.09513,"94":2.70879,"95":0.89625,_:"12 13 14 15 79 80 81 83 86 88"},E:{"4":0,"11":0.00501,"12":0.01001,"13":0.06509,"14":0.60585,"15":1.45203,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01001,"10.1":0.02003,"11.1":0.09513,"12.1":0.10515,"13.1":0.4256,"14.1":1.75746},P:{"4":0.09503,"5.0-5.4":0.09096,"6.2-6.4":0.08086,"7.2-7.4":0.02095,"8.2":0.10107,"9.2":0.02112,"10.1":0.01056,"11.1-11.2":0.13727,"12.0":0.0528,"13.0":0.15839,"14.0":0.26398,"15.0":2.75595},I:{"0":0,"3":0,"4":0.00166,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00166,"4.2-4.3":0.00499,"4.4":0,"4.4.3-4.4.4":0.04161},A:{"8":0.0168,"9":0.0112,"10":0.0056,"11":0.48713,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.27961},Q:{"10.4":0.02497},O:{"0":0.17975},H:{"0":0.22217},L:{"0":32.51723},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js
new file mode 100644
index 0000000000..1ca7184cee
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JE.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00931,"60":0.00466,"66":0.3724,"78":0.03259,"87":0.01862,"89":0.03724,"91":0.10707,"92":0.93566,"93":1.72235,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 90 94 95 3.5 3.6"},D:{"49":0.02793,"65":0.00931,"67":0.01397,"69":0.01397,"72":0.06052,"76":0.00466,"79":0.01397,"80":0.04655,"83":0.00466,"84":0.05121,"85":0.00466,"87":0.05121,"89":0.07448,"90":0.07914,"91":0.11638,"92":0.34447,"93":1.01479,"94":15.28237,"95":4.29657,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 68 70 71 73 74 75 77 78 81 86 88 96 97 98"},F:{"78":0.07448,"79":0.25137,"80":0.10707,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.73914,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00731,"6.0-6.1":0.04387,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.35824,"10.0-10.2":0.01462,"10.3":0.91388,"11.0-11.2":0.02924,"11.3-11.4":0.04752,"12.0-12.1":0.01462,"12.2-12.5":1.54262,"13.0-13.1":0.02559,"13.2":0.00366,"13.3":0.04752,"13.4-13.7":0.42038,"14.0-14.4":1.84237,"14.5-14.8":25.4825},B:{"16":0.04655,"18":0.02793,"80":0.00931,"83":0.00466,"84":0.00931,"89":0.00931,"91":0.00931,"92":0.02793,"93":0.24672,"94":4.94827,"95":1.84804,_:"12 13 14 15 17 79 81 85 86 87 88 90"},E:{"4":0,"12":0.00466,"13":0.84256,"14":1.27082,"15":2.47646,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01862,"10.1":0.01862,"11.1":0.07914,"12.1":0.40964,"13.1":1.21496,"14.1":6.01892},P:{"4":0.19329,"5.0-5.4":0.1119,"6.2-6.4":0.01017,"7.2-7.4":0.27285,"8.2":0.01091,"9.2":0.05457,"10.1":0.01113,"11.1-11.2":0.01074,"12.0":0.0764,"13.0":0.23625,"14.0":0.05369,"15.0":3.04976},I:{"0":0,"3":0,"4":0.00416,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0004,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01148},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.00083,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.2138},Q:{"10.4":0},O:{"0":0},H:{"0":0.01518},L:{"0":13.44748},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js
new file mode 100644
index 0000000000..7c516231a7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JM.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00454,"78":0.08167,"80":0.00907,"86":0.00907,"87":0.01361,"89":0.00454,"91":0.00454,"92":0.33574,"93":0.73953,"94":0.00907,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 81 82 83 84 85 88 90 95 3.5 3.6"},D:{"22":0.00454,"43":0.00454,"47":0.01361,"49":0.15426,"53":0.02269,"56":0.00907,"60":0.00454,"61":0.01815,"63":0.00907,"65":0.01361,"67":0.00907,"68":0.01361,"69":0.02269,"70":0.00907,"71":0.00907,"72":0.00907,"73":0.02269,"74":0.09074,"75":0.08167,"76":0.11796,"77":0.03176,"78":0.04083,"79":0.0862,"80":0.03176,"81":0.07259,"83":0.0363,"84":0.04991,"85":0.01815,"86":0.03176,"87":0.12704,"88":0.04991,"89":0.08167,"90":0.06352,"91":0.16787,"92":0.52176,"93":2.4273,"94":20.76585,"95":5.37635,"96":0.07259,"97":0.01815,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 50 51 52 54 55 57 58 59 62 64 66 98"},F:{"36":0.00907,"78":0.0363,"79":0.49907,"80":0.29491,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00392,"15":4.65208,"3.2":0.00262,"4.0-4.1":0,"4.2-4.3":0.00654,"5.0-5.1":0.00785,"6.0-6.1":0,"7.0-7.1":0.24595,"8.1-8.4":0.00131,"9.0-9.2":0.00654,"9.3":0.13867,"10.0-10.2":0.00392,"10.3":0.09681,"11.0-11.2":0.13736,"11.3-11.4":0.02486,"12.0-12.1":0.01308,"12.2-12.5":0.66197,"13.0-13.1":0.01962,"13.2":0.00523,"13.3":0.08765,"13.4-13.7":0.21848,"14.0-14.4":0.82942,"14.5-14.8":5.91453},B:{"12":0.00454,"13":0.00907,"14":0.00454,"15":0.01361,"16":0.01361,"17":0.01361,"18":0.05898,"84":0.01815,"85":0.02269,"87":0.01815,"88":0.00454,"89":0.02269,"90":0.02269,"91":0.02722,"92":0.03176,"93":0.18148,"94":4.292,"95":1.35656,_:"79 80 81 83 86"},E:{"4":0,"13":0.02722,"14":0.20417,"15":0.75314,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00907,"10.1":0.01361,"11.1":0.01815,"12.1":0.02269,"13.1":0.11796,"14.1":1.00268},P:{"4":0.32742,"5.0-5.4":0.1119,"6.2-6.4":0.01017,"7.2-7.4":0.27285,"8.2":0.01091,"9.2":0.05457,"10.1":0.01113,"11.1-11.2":0.32742,"12.0":0.0764,"13.0":0.26193,"14.0":0.34925,"15.0":3.24143},I:{"0":0,"3":0,"4":0.00079,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00052,"4.2-4.3":0.00472,"4.4":0,"4.4.3-4.4.4":0.02675},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.10428,"9":0.01043,"10":0.01043,"11":0.22421,_:"6 7 5.5"},J:{"7":0,"10":0.00546},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.13658},Q:{"10.4":0},O:{"0":0.48074},H:{"0":0.34653},L:{"0":38.90734},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js
new file mode 100644
index 0000000000..86d9ebabc6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JO.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.01023,"52":0.02047,"63":0.07163,"66":0.02388,"67":0.01364,"69":0.00682,"78":0.0307,"81":0.00341,"84":0.01706,"86":0.00341,"87":0.00682,"88":0.01364,"89":0.01023,"90":0.00682,"91":0.01364,"92":0.34792,"93":0.90733,"94":0.01023,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 64 65 68 70 71 72 73 74 75 76 77 79 80 82 83 85 95 3.5 3.6"},D:{"11":0.02047,"33":0.00341,"38":0.01706,"49":0.16714,"51":0.00682,"53":0.00341,"58":0.00682,"61":0.24218,"63":0.01023,"65":0.00682,"68":0.00341,"69":0.03411,"70":0.01364,"71":0.01023,"73":0.00341,"74":0.00682,"75":0.01364,"76":0.00341,"77":0.00682,"78":0.01364,"79":0.08186,"80":0.01706,"81":0.01706,"83":0.0307,"84":0.01706,"85":0.0307,"86":0.05799,"87":0.82887,"88":0.08186,"89":0.04093,"90":0.04093,"91":0.12621,"92":0.32746,"93":0.88686,"94":16.69685,"95":5.03123,"96":0.01023,"97":0.00682,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 54 55 56 57 59 60 62 64 66 67 72 98"},F:{"65":0.00341,"71":0.00341,"77":0.01364,"78":0.09551,"79":0.7129,"80":0.36839,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.12452,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00312,"6.0-6.1":0.00312,"7.0-7.1":0.0187,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04467,"10.0-10.2":0.00831,"10.3":0.03324,"11.0-11.2":0.01662,"11.3-11.4":0.02908,"12.0-12.1":0.02181,"12.2-12.5":0.57858,"13.0-13.1":0.0187,"13.2":0.00935,"13.3":0.05505,"13.4-13.7":0.2119,"14.0-14.4":1.01381,"14.5-14.8":5.19369},B:{"12":0.00341,"17":0.00341,"18":0.01706,"84":0.00341,"85":0.00682,"86":0.00682,"89":0.02388,"90":0.00682,"91":0.00682,"92":0.03411,"93":0.10915,"94":1.69868,"95":0.5901,_:"13 14 15 16 79 80 81 83 87 88"},E:{"4":0,"12":0.00682,"13":0.01706,"14":0.15691,"15":0.37862,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01023,"11.1":0.01706,"12.1":0.02047,"13.1":0.13644,"14.1":0.60034},P:{"4":0.13356,"5.0-5.4":0.09096,"6.2-6.4":0.08086,"7.2-7.4":0.12329,"8.2":0.10107,"9.2":0.0411,"10.1":0.01056,"11.1-11.2":0.22603,"12.0":0.05137,"13.0":0.24658,"14.0":0.3185,"15.0":2.23974},I:{"0":0,"3":0,"4":0.27334,"2.1":0,"2.2":0,"2.3":0,"4.1":0.18222,"4.2-4.3":0.63779,"4.4":0,"4.4.3-4.4.4":7.38011},A:{"8":0.01072,"10":0.00357,"11":0.13579,_:"6 7 9 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.15814},Q:{"10.4":0},O:{"0":0.38875},H:{"0":0.28071},L:{"0":44.73169},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js
new file mode 100644
index 0000000000..9533c12cdc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/JP.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01723,"52":0.06892,"53":0.00574,"56":0.0402,"60":0.01149,"63":0.01149,"66":0.01149,"67":0.01149,"68":0.01149,"72":0.01149,"78":0.09763,"80":0.01149,"83":0.00574,"84":0.01149,"85":0.01149,"88":0.02297,"89":0.02872,"90":0.01723,"91":0.05169,"92":1.11989,"93":2.48672,"94":0.01149,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 54 55 57 58 59 61 62 64 65 69 70 71 73 74 75 76 77 79 81 82 86 87 95 3.5 3.6"},D:{"45":0.00574,"48":0.01149,"49":0.25269,"57":0.00574,"61":0.34458,"62":0.01149,"64":0.01149,"65":0.01723,"67":0.01723,"69":0.04594,"70":0.03446,"71":0.01723,"72":0.02872,"73":0.01723,"74":0.0402,"75":0.02297,"76":0.01723,"77":0.01149,"78":0.01723,"79":0.05743,"80":0.06892,"81":0.10337,"83":0.04594,"84":0.05169,"85":0.0402,"86":0.06892,"87":0.31587,"88":0.06317,"89":0.11486,"90":0.09189,"91":0.17229,"92":0.5743,"93":1.57358,"94":19.72721,"95":4.45657,"96":0.02297,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 50 51 52 53 54 55 56 58 59 60 63 66 68 97 98"},F:{"78":0.01149,"79":0.21249,"80":0.09763,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.34929,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00795,"7.0-7.1":0.04241,"8.1-8.4":0.01855,"9.0-9.2":0.25709,"9.3":0.12192,"10.0-10.2":0.03711,"10.3":0.11927,"11.0-11.2":0.09541,"11.3-11.4":0.08216,"12.0-12.1":0.09806,"12.2-12.5":0.66525,"13.0-13.1":0.05301,"13.2":0.0265,"13.3":0.16432,"13.4-13.7":0.61754,"14.0-14.4":1.85792,"14.5-14.8":17.87952},B:{"14":0.00574,"16":0.01149,"17":0.01723,"18":0.0402,"84":0.01149,"85":0.01149,"86":0.01149,"87":0.00574,"89":0.01723,"90":0.01149,"91":0.02872,"92":0.0402,"93":0.18378,"94":7.29361,"95":2.257,_:"12 13 15 79 80 81 83 88"},E:{"4":0,"11":0.01149,"12":0.01723,"13":0.08615,"14":0.39052,"15":1.02225,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01149,"10.1":0.02297,"11.1":0.05743,"12.1":0.08615,"13.1":0.29864,"14.1":2.0962},P:{"4":0.09503,"5.0-5.4":0.09096,"6.2-6.4":0.08086,"7.2-7.4":0.02095,"8.2":0.10107,"9.2":0.02112,"10.1":0.01056,"11.1-11.2":0.01089,"12.0":0.0528,"13.0":0.03266,"14.0":0.06532,"15.0":0.94712},I:{"0":0,"3":0,"4":0.00801,"2.1":0,"2.2":0.04003,"2.3":0.07046,"4.1":0.01281,"4.2-4.3":0.13291,"4.4":0,"4.4.3-4.4.4":0.11049},A:{"9":0.00672,"11":2.71546,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.29806},Q:{"10.4":0.0511},O:{"0":0.31935},H:{"0":0.10884},L:{"0":20.45898},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js
new file mode 100644
index 0000000000..fe6bfc5177
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KE.js
@@ -0,0 +1 @@
+module.exports={C:{"33":0.00276,"34":0.00827,"43":0.01103,"44":0.00276,"47":0.01103,"48":0.00276,"52":0.09377,"57":0.00276,"68":0.00276,"72":0.01103,"73":0.01103,"78":0.05516,"79":0.00276,"83":0.00276,"84":0.01379,"85":0.00276,"86":0.00276,"87":0.01655,"88":0.02758,"89":0.03585,"90":0.01379,"91":0.02758,"92":0.59021,"93":1.43692,"94":0.0855,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 37 38 39 40 41 42 45 46 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 74 75 76 77 80 81 82 95 3.5 3.6"},D:{"11":0.00276,"34":0.00276,"37":0.00276,"38":0.00827,"39":0.01103,"43":0.00276,"47":0.01379,"49":0.06895,"50":0.00276,"55":0.00276,"56":0.00827,"57":0.00552,"58":0.00276,"60":0.00276,"61":0.11859,"62":0.00552,"63":0.00552,"64":0.00552,"65":0.00827,"66":0.00552,"67":0.01103,"68":0.01379,"69":0.00552,"70":0.00827,"71":0.00276,"72":0.00552,"73":0.01379,"74":0.00827,"75":0.00552,"76":0.01103,"77":0.00827,"78":0.00827,"79":0.04689,"80":0.01931,"81":0.01931,"83":0.02206,"84":0.01655,"85":0.01931,"86":0.04964,"87":0.11032,"88":0.03585,"89":0.0331,"90":0.04689,"91":0.12135,"92":0.28407,"93":0.54884,"94":10.73965,"95":3.22962,"96":0.01655,"97":0.00276,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 40 41 42 44 45 46 48 51 52 53 54 59 98"},F:{"28":0.01655,"29":0.00552,"40":0.00552,"46":0.00552,"64":0.00276,"65":0.02758,"77":0.00552,"78":0.02758,"79":0.56539,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 68 69 70 71 72 73 74 75 76 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.45802,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.0002,"5.0-5.1":0.00722,"6.0-6.1":0.0008,"7.0-7.1":0.02668,"8.1-8.4":0.00201,"9.0-9.2":0.0008,"9.3":0.03952,"10.0-10.2":0.00221,"10.3":0.0313,"11.0-11.2":0.0638,"11.3-11.4":0.00542,"12.0-12.1":0.00823,"12.2-12.5":0.1595,"13.0-13.1":0.00622,"13.2":0.00381,"13.3":0.03511,"13.4-13.7":0.05497,"14.0-14.4":0.18056,"14.5-14.8":0.91966},B:{"12":0.01103,"13":0.00827,"14":0.00552,"15":0.00552,"16":0.00827,"17":0.01103,"18":0.04689,"84":0.00552,"85":0.00552,"89":0.01655,"90":0.00552,"91":0.01379,"92":0.03585,"93":0.04413,"94":1.08114,_:"79 80 81 83 86 87 88 95"},E:{"4":0,"10":0.00552,"12":0.00276,"13":0.01379,"14":0.06343,"15":0.14893,_:"0 5 6 7 8 9 11 3.1 3.2 6.1 7.1 9.1","5.1":0.01103,"10.1":0.00552,"11.1":0.00552,"12.1":0.0524,"13.1":0.03861,"14.1":0.20133},P:{"4":0.21283,_:"5.0-5.4 8.2 9.2 10.1","6.2-6.4":0.06385,"7.2-7.4":0.06385,"11.1-11.2":0.03192,"12.0":0.01064,"13.0":0.05321,"14.0":0.10641,"15.0":0.50014},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00094,"4.2-4.3":0.00684,"4.4":0,"4.4.3-4.4.4":0.04291},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01022,"10":0.01022,"11":0.15331,_:"6 7 9 5.5"},N:{_:"10 11"},J:{"7":0,"10":0.00724},Q:{"10.4":0},O:{"0":0.32589},H:{"0":32.36839},L:{"0":40.07724},S:{"2.5":0},R:{_:"0"},M:{"0":0.15208}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js
new file mode 100644
index 0000000000..0af105361f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KG.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.03752,"55":0.02345,"71":0.00469,"78":0.01876,"88":0.07035,"89":0.00469,"92":0.1407,"93":0.43148,"94":0.00469,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 90 91 95 3.5 3.6"},D:{"24":0.00938,"49":0.09849,"56":0.00469,"59":0.05159,"63":0.00469,"66":0.00469,"67":0.00469,"68":0.00938,"71":0.01407,"73":0.00469,"74":0.00938,"75":0.00469,"78":0.00469,"79":0.06566,"80":0.01876,"81":0.00938,"83":0.00938,"85":0.02814,"86":0.06097,"87":0.03752,"88":0.05159,"89":0.03283,"90":0.05159,"91":0.07973,"92":0.44086,"93":0.58156,"94":33.78207,"95":3.78014,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 60 61 62 64 65 69 70 72 76 77 84 96 97 98"},F:{"39":0.01407,"42":0.02814,"78":0.06566,"79":1.34134,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.31471,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00103,"6.0-6.1":0.00259,"7.0-7.1":0.00155,"8.1-8.4":0,"9.0-9.2":0.00465,"9.3":0.0119,"10.0-10.2":0.0031,"10.3":0.02172,"11.0-11.2":0.00724,"11.3-11.4":0.01448,"12.0-12.1":0.00983,"12.2-12.5":0.34135,"13.0-13.1":0.01293,"13.2":0.00983,"13.3":0.04603,"13.4-13.7":0.14378,"14.0-14.4":0.77527,"14.5-14.8":2.44995},B:{"18":0.02345,"86":0.00938,"92":0.00938,"93":0.01876,"94":0.67536,_:"12 13 14 15 16 17 79 80 81 83 84 85 87 88 89 90 91 95"},E:{"4":0,"13":0.00469,"14":0.27671,"15":0.22043,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1","5.1":0.66598,"12.1":0.00938,"13.1":0.04221,"14.1":0.26264},P:{"4":0.33756,"5.0-5.4":0.02046,"6.2-6.4":0.08183,"7.2-7.4":0.20458,"8.2":0.02046,"9.2":0.06137,"10.1":0.04092,"11.1-11.2":0.19435,"12.0":0.11252,"13.0":0.24549,"14.0":0.3171,"15.0":1.00244},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00042,"4.2-4.3":0.00127,"4.4":0,"4.4.3-4.4.4":0.01954},A:{"11":0.19229,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.63189},H:{"0":0.31671},L:{"0":44.76504},S:{"2.5":0},R:{_:"0"},M:{"0":0.0531}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js
new file mode 100644
index 0000000000..709dc70f2f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KH.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.01406,"5":0.00937,"15":0.00937,"17":0.02344,"43":0.00469,"47":0.01875,"50":0.00469,"51":0.00469,"52":0.01406,"55":0.00469,"56":0.00937,"57":0.01406,"61":0.04218,"67":0.00469,"68":0.00469,"69":0.00469,"70":0.00469,"72":0.01406,"78":0.09374,"79":0.0375,"80":0.01406,"81":0.06562,"82":0.0375,"83":0.00937,"84":0.02344,"85":0.00937,"87":0.00937,"88":0.07031,"89":0.03281,"90":0.01406,"91":0.03281,"92":0.52494,"93":1.30767,"94":0.07499,_:"2 3 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 49 53 54 58 59 60 62 63 64 65 66 71 73 74 75 76 77 86 95 3.5 3.6"},D:{"23":0.01406,"24":0.01875,"25":0.00469,"38":0.02344,"40":0.02812,"47":0.00937,"48":0.00937,"49":0.25779,"53":0.04687,"56":0.02812,"57":0.00469,"63":0.00937,"65":0.00937,"66":0.00937,"67":0.00937,"68":0.01875,"69":0.00937,"70":0.00937,"71":0.00937,"72":0.01406,"73":0.04687,"74":0.00937,"75":0.00937,"76":0.01406,"77":0.01875,"78":0.05156,"79":0.13124,"80":0.0375,"81":0.04687,"83":0.17342,"84":0.29059,"85":0.31403,"86":0.30934,"87":5.18851,"88":0.04218,"89":0.04218,"90":0.1453,"91":0.24841,"92":0.41714,"93":0.77804,"94":22.11327,"95":4.43859,"96":0.06093,"97":0.01875,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 43 44 45 46 50 51 52 54 55 58 59 60 61 62 64 98"},F:{"36":0.00937,"46":0.00937,"52":0.02344,"68":0.01875,"70":0.00469,"71":0.01875,"72":0.01875,"78":0.02344,"79":0.49214,"80":0.24841,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 53 54 55 56 57 58 60 62 63 64 65 66 67 69 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.48337,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00793,"7.0-7.1":0.05746,"8.1-8.4":0.04161,"9.0-9.2":0.01387,"9.3":0.12681,"10.0-10.2":0.04755,"10.3":0.19418,"11.0-11.2":0.05548,"11.3-11.4":0.11492,"12.0-12.1":0.10502,"12.2-12.5":1.8685,"13.0-13.1":0.10303,"13.2":0.03963,"13.3":0.25164,"13.4-13.7":0.72124,"14.0-14.4":2.74231,"14.5-14.8":9.83388},B:{"12":0.02344,"14":0.00469,"16":0.00469,"17":0.00469,"18":0.05156,"84":0.00469,"85":0.00937,"86":0.01875,"89":0.01875,"90":0.00469,"91":0.00937,"92":0.0375,"93":0.05156,"94":1.49047,"95":0.48276,_:"13 15 79 80 81 83 87 88"},E:{"4":0,"12":0.00937,"13":0.06093,"14":0.31872,"15":0.76867,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01406,"11.1":0.01406,"12.1":0.05156,"13.1":0.26716,"14.1":1.45297},P:{"4":0.22567,"5.0-5.4":0.02149,"6.2-6.4":0.02149,"7.2-7.4":0.09178,"8.2":0.02149,"9.2":0.07138,"10.1":0.08158,"11.1-11.2":0.02149,"12.0":0.07522,"13.0":0.08597,"14.0":0.12895,"15.0":1.26804},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00694,"4.4":0,"4.4.3-4.4.4":0.03556},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.05433,"9":0.02716,"10":0.0163,"11":1.0974,_:"6 7 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.18061},Q:{"10.4":0.07968},O:{"0":0.74899},H:{"0":0.51296},L:{"0":30.71303},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js
new file mode 100644
index 0000000000..3a64b5b588
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KI.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.01885,"54":0.01131,"56":0.06786,"69":0.03016,"72":0.06786,"83":0.01131,"85":0.01885,"91":0.01131,"92":2.18283,"93":2.89913,"94":0.06032,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 53 55 57 58 59 60 61 62 63 64 65 66 67 68 70 71 73 74 75 76 77 78 79 80 81 82 84 86 87 88 89 90 95 3.5 3.6"},D:{"43":0.01131,"57":0.01131,"67":0.01131,"71":0.69745,"77":0.01885,"78":0.04147,"80":0.06032,"81":0.59943,"83":0.01885,"85":0.12064,"86":0.10933,"89":0.04901,"90":0.04147,"91":0.20735,"92":0.1885,"93":0.78793,"94":13.43628,"95":4.74266,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 58 59 60 61 62 63 64 65 66 68 69 70 72 73 74 75 76 79 84 87 88 96 97 98"},F:{"64":0.03016,"74":0.04147,"77":0.01131,"79":0.36946,"80":0.03016,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 65 66 67 68 69 70 71 72 73 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.01843,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.0644,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":1.01983,"12.2-12.5":0.03665,"13.0-13.1":0.00911,"13.2":0.00911,"13.3":0.13791,"13.4-13.7":0.08262,"14.0-14.4":0.36756,"14.5-14.8":0.42242},B:{"12":0.06786,"13":0.19981,"15":0.06786,"16":0.03016,"18":0.42978,"80":0.06786,"85":0.12064,"89":0.04147,"90":0.06032,"91":0.04901,"92":0.30914,"93":0.78793,"94":4.901,"95":0.9048,_:"14 17 79 81 83 84 86 87 88"},E:{"4":0,"14":0.24882,"15":0.01885,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 13.1 14.1","12.1":0.01131},P:{"4":0.68795,"5.0-5.4":0.02023,"6.2-6.4":0.04047,"7.2-7.4":2.7619,"8.2":0.01091,"9.2":0.07082,"10.1":0.02043,"11.1-11.2":1.12297,"12.0":0.14164,"13.0":0.47549,"14.0":0.35409,"15.0":1.10274},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.03115},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.01885,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.03115},Q:{"10.4":0},O:{"0":6.61626},H:{"0":0.19464},L:{"0":48.71745},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js
new file mode 100644
index 0000000000..0a9e83c1cd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KM.js
@@ -0,0 +1 @@
+module.exports={C:{"29":0.00723,"42":0.00482,"52":0.06023,"61":0.09636,"76":0.00964,"78":0.00964,"84":0.00723,"85":0.00723,"88":0.0265,"91":0.00723,"92":0.51312,"93":1.36831,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 79 80 81 82 83 86 87 89 90 94 95 3.5 3.6"},D:{"11":0.00482,"33":0.01927,"49":0.02168,"55":0.00723,"57":0.00723,"60":0.00964,"64":0.00723,"65":0.05059,"68":0.02891,"69":0.00482,"70":0.00482,"71":0.00723,"75":0.00723,"79":0.01927,"81":0.0265,"85":0.01927,"87":0.32522,"88":0.00482,"89":0.07709,"90":0.15899,"91":0.07709,"92":0.18549,"93":0.27222,"94":6.97646,"95":1.75375,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 58 59 61 62 63 66 67 72 73 74 76 77 78 80 83 84 86 96 97 98"},F:{"33":0.01205,"65":0.00723,"76":0.27463,"77":0.04577,"78":0.03132,"79":0.33485,"80":0.23367,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.59729,"3.2":0.00211,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.0532,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01633,"10.0-10.2":0.00211,"10.3":0.20436,"11.0-11.2":0.11482,"11.3-11.4":0.16539,"12.0-12.1":0.01053,"12.2-12.5":1.26621,"13.0-13.1":0.16591,"13.2":0.00211,"13.3":0.09586,"13.4-13.7":0.10218,"14.0-14.4":0.70368,"14.5-14.8":1.76606},B:{"12":0.07709,"13":0.01445,"14":0.04336,"15":0.03373,"16":0.01927,"17":0.01205,"18":0.053,"85":0.01205,"88":0.01205,"89":0.03614,"91":0.01205,"92":0.01445,"93":0.06745,"94":0.73715,"95":0.1614,_:"79 80 81 83 84 86 87 90"},E:{"4":0,"10":0.08191,"13":0.03373,"14":0.02409,"15":0.03614,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1","11.1":0.00964,"13.1":0.06986,"14.1":0.43603},P:{"4":0.69637,"5.0-5.4":0.08074,"6.2-6.4":0.04037,"7.2-7.4":0.55508,"8.2":0.02149,"9.2":0.16148,"10.1":0.06055,"11.1-11.2":0.70646,"12.0":0.09083,"13.0":0.21194,"14.0":0.32295,"15.0":0.58536},I:{"0":0,"3":0,"4":0.00404,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0074,"4.2-4.3":0.01816,"4.4":0,"4.4.3-4.4.4":0.12982},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.00482,"11":0.01445,_:"6 7 8 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.23532},Q:{"10.4":0.00759},O:{"0":0.24291},H:{"0":0.59649},L:{"0":74.54741},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js
new file mode 100644
index 0000000000..534ba8aa40
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KN.js
@@ -0,0 +1 @@
+module.exports={C:{"39":0.02766,"61":0.00461,"78":0.02766,"86":0.00922,"90":0.01844,"92":0.38263,"93":0.63157,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 87 88 89 91 94 95 3.5 3.6"},D:{"43":0.00922,"47":0.00461,"49":0.14291,"55":0.02766,"63":0.01383,"65":0.0461,"66":0.00461,"69":0.01844,"72":0.00461,"74":0.10142,"75":0.02766,"76":0.0461,"77":0.05532,"79":0.10603,"80":0.00922,"81":0.01844,"84":0.33653,"85":0.00461,"86":0.01844,"87":0.00922,"88":0.00461,"89":0.01844,"90":0.00922,"91":0.03227,"92":0.16596,"93":1.07874,"94":18.42617,"95":4.93731,"96":0.06915,"97":0.02766,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 48 50 51 52 53 54 56 57 58 59 60 61 62 64 67 68 70 71 73 78 83 98"},F:{"78":0.00922,"79":0.20284,"80":0.09681,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00153,"15":6.31915,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.02915,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01381,"10.0-10.2":0,"10.3":0.35439,"11.0-11.2":0.01688,"11.3-11.4":0.01381,"12.0-12.1":0.22859,"12.2-12.5":1.2534,"13.0-13.1":0,"13.2":0,"13.3":0.01381,"13.4-13.7":0.18103,"14.0-14.4":1.05243,"14.5-14.8":5.86198},B:{"12":0.01383,"13":0.00461,"14":0.00461,"16":0.01383,"17":0.00461,"18":0.03227,"84":0.01844,"85":0.06915,"86":0.00461,"89":0.00922,"90":0.00922,"91":0.00461,"92":0.02305,"93":0.44256,"94":6.30187,"95":1.54896,_:"15 79 80 81 83 87 88"},E:{"4":0,"12":0.00922,"13":0.02305,"14":0.30887,"15":2.50784,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00461,"11.1":0.00922,"12.1":0.06915,"13.1":0.68689,"14.1":2.98728},P:{"4":0.11597,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.33738,"8.2":0.08219,"9.2":0.02109,"10.1":0.01058,"11.1-11.2":0.11597,"12.0":0.01054,"13.0":0.10543,"14.0":0.15815,"15.0":2.9626},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.03227,"11":0.65001,_:"6 7 8 9 5.5"},J:{"7":0,"10":0.01078},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.69531},Q:{"10.4":0},O:{"0":0},H:{"0":0.15819},L:{"0":36.02654},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js
new file mode 100644
index 0000000000..7aaa4108dc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KP.js
@@ -0,0 +1 @@
+module.exports={C:{"68":0.25766,"78":1.02663,"83":0.25766,"88":0.25766,"92":0.76897,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 91 93 94 95 3.5 3.6"},D:{"72":0.5113,"81":2.3069,"89":0.25766,"92":2.56456,"93":0.76897,"94":5.64043,"95":0.25766,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 83 84 85 86 87 88 90 91 96 97 98"},F:{"65":1.02663,"74":3.59119,"76":0.25766,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 75 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.69202,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.91103,"11.0-11.2":1.59366,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.22754,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0.22754},B:{"93":0.76897,"94":0.25766,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 95"},E:{"4":0,"9":0.25766,_:"0 5 6 7 8 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.26888,"5.0-5.4":0.09096,"6.2-6.4":0.08086,"7.2-7.4":0.12329,"8.2":0.10107,"9.2":0.0411,"10.1":0.01056,"11.1-11.2":0.22603,"12.0":0.05137,"13.0":0.24658,"14.0":0.26888,"15.0":2.23974},I:{"0":0,"3":0.25313,"4":0.62913,"2.1":1.0076,"2.2":0.25313,"2.3":0.25313,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":1.38606},A:{_:"6 7 8 9 10 11 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.53775},Q:{"10.4":0},O:{"0":0},H:{"0":2.04774},L:{"0":44.5829},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js
new file mode 100644
index 0000000000..2254257cc7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KR.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.02004,"78":0.04509,"79":0.00501,"80":0.01002,"81":0.01503,"82":0.01002,"83":0.00501,"90":0.00501,"91":0.01503,"92":0.20541,"93":0.49599,"94":0.01002,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 84 85 86 87 88 89 95 3.5 3.6"},D:{"42":0.03507,"49":0.04509,"56":0.01002,"61":0.01002,"63":0.00501,"64":0.02505,"68":0.08016,"69":0.00501,"70":0.03006,"72":0.03006,"73":0.00501,"74":0.01002,"75":0.01002,"76":0.01002,"77":0.14529,"78":0.01002,"79":0.07014,"80":0.05511,"81":0.03507,"83":0.06513,"84":0.1002,"85":0.08016,"86":0.11523,"87":0.14529,"88":0.02004,"89":0.07014,"90":0.09018,"91":0.11022,"92":0.2505,"93":0.82665,"94":26.19228,"95":5.15028,"96":0.01002,"97":0.00501,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 60 62 65 66 67 71 98"},F:{"68":0.00501,"79":0.18537,"80":0.07515,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.93054,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00115,"6.0-6.1":0.0023,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.12761,"9.3":0.01724,"10.0-10.2":0.0023,"10.3":0.0115,"11.0-11.2":0.0092,"11.3-11.4":0.0046,"12.0-12.1":0.0138,"12.2-12.5":0.12186,"13.0-13.1":0.11611,"13.2":0.0069,"13.3":0.03909,"13.4-13.7":0.14485,"14.0-14.4":0.68172,"14.5-14.8":6.25622},B:{"14":0.00501,"17":0.01002,"18":0.04008,"84":0.01002,"85":0.01002,"86":0.01503,"87":0.01503,"88":0.01002,"89":0.02505,"90":0.01503,"91":0.03507,"92":0.0501,"93":0.12525,"94":5.65629,"95":1.41783,_:"12 13 15 16 79 80 81 83"},E:{"4":0,"8":0.00501,"13":0.01503,"14":0.11523,"15":0.48597,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01002,"12.1":0.01503,"13.1":0.07014,"14.1":0.49098},P:{"4":0.26888,"5.0-5.4":0.01012,"6.2-6.4":0.08086,"7.2-7.4":0.12329,"8.2":0.03036,"9.2":0.04048,"10.1":0.02024,"11.1-11.2":0.08096,"12.0":0.13156,"13.0":0.33396,"14.0":0.76912,"15.0":11.46598},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.01996},A:{"8":0.01046,"9":0.01568,"11":1.77746,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.15968},Q:{"10.4":0.01497},O:{"0":0.12974},H:{"0":0.1748},L:{"0":20.81883},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js
new file mode 100644
index 0000000000..c4319425f0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KW.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00658,"52":0.3847,"56":0.00329,"78":0.09206,"84":0.04603,"88":0.00658,"89":0.00658,"90":0.00658,"91":0.00986,"92":0.2203,"93":0.49978,"94":0.00986,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 95 3.5 3.6"},D:{"34":0.00329,"38":0.0263,"40":0.03288,"43":0.00986,"47":0.00986,"49":0.10522,"56":0.00986,"62":0.00329,"63":0.00658,"64":0.00329,"65":0.00658,"67":0.00329,"69":0.0263,"70":0.00986,"71":0.00986,"74":0.00658,"75":0.00658,"76":0.01315,"77":0.00658,"78":0.03288,"79":0.0263,"80":0.00986,"81":0.00986,"83":0.03288,"84":0.01973,"85":0.01644,"86":0.03288,"87":0.22358,"88":0.04603,"89":0.03288,"90":0.03288,"91":0.10193,"92":0.30907,"93":0.79241,"94":15.27276,"95":4.47497,"96":0.01315,"97":0.00658,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 41 42 44 45 46 48 50 51 52 53 54 55 57 58 59 60 61 66 68 72 73 98"},F:{"28":0.00986,"36":0.00329,"46":0.01315,"78":0.04932,"79":0.50635,"80":0.27619,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":7.329,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.03659,"8.1-8.4":0.00523,"9.0-9.2":0.01046,"9.3":0.14898,"10.0-10.2":0.03398,"10.3":0.07319,"11.0-11.2":0.18819,"11.3-11.4":0.06534,"12.0-12.1":0.08103,"12.2-12.5":0.95141,"13.0-13.1":0.12285,"13.2":0.07057,"13.3":0.31888,"13.4-13.7":0.71356,"14.0-14.4":3.14697,"14.5-14.8":12.83359},B:{"13":0.00329,"14":0.00329,"15":0.00329,"16":0.00658,"17":0.01315,"18":0.0263,"80":0.00329,"83":0.02959,"84":0.00986,"85":0.00986,"86":0.00658,"87":0.00329,"89":0.01644,"90":0.00329,"91":0.01644,"92":0.02959,"93":0.18084,"94":2.18323,"95":0.72994,_:"12 79 81 88"},E:{"4":0,"12":0.00986,"13":0.07891,"14":0.4932,"15":0.93708,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00986,"11.1":0.02959,"12.1":0.09535,"13.1":0.28934,"14.1":1.58153},P:{"4":0.18489,"5.0-5.4":0.02023,"6.2-6.4":0.04047,"7.2-7.4":0.10272,"8.2":0.01027,"9.2":0.08217,"10.1":0.02054,"11.1-11.2":0.21571,"12.0":0.11299,"13.0":0.26707,"14.0":0.44169,"15.0":2.94803},I:{"0":0,"3":0,"4":0.01138,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01138,"4.4":0,"4.4.3-4.4.4":0.06449},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.36168,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.08726},Q:{"10.4":0},O:{"0":2.83246},H:{"0":1.06755},L:{"0":33.46582},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js
new file mode 100644
index 0000000000..b695f4355d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KY.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.05128,"87":0.01026,"91":0.00513,"92":0.62049,"93":1.41533,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 89 90 94 95 3.5 3.6"},D:{"49":0.01538,"58":0.01026,"60":0.01538,"65":0.00513,"67":0.02564,"74":0.00513,"75":0.02051,"76":0.01026,"79":0.14358,"81":0.01026,"83":0.00513,"84":0.02051,"85":0.01026,"87":0.04102,"88":0.01026,"89":0.41024,"90":0.01538,"91":0.31281,"92":0.58459,"93":2.03069,"94":19.15308,"95":5.89207,"96":0.01538,"97":0.0359,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 61 62 63 64 66 68 69 70 71 72 73 77 78 80 86 98"},F:{"78":0.08205,"79":0.41024,"80":0.16922,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.27497,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00252,"8.1-8.4":0.00755,"9.0-9.2":0,"9.3":0.05537,"10.0-10.2":0.00755,"10.3":1.13251,"11.0-11.2":0.00503,"11.3-11.4":0.23909,"12.0-12.1":0.01762,"12.2-12.5":0.6795,"13.0-13.1":0.00503,"13.2":0.02265,"13.3":0.151,"13.4-13.7":0.32214,"14.0-14.4":0.63672,"14.5-14.8":16.60005},B:{"13":0.00513,"16":0.00513,"17":0.01026,"18":0.04102,"89":0.08718,"91":0.01026,"92":0.02051,"93":0.2205,"94":7.16382,"95":1.77942,_:"12 14 15 79 80 81 83 84 85 86 87 88 90"},E:{"4":0,"11":0.00513,"12":0.00513,"13":0.63587,"14":0.44101,"15":3.47678,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00513,"10.1":0.00513,"11.1":0.07692,"12.1":0.22563,"13.1":0.52306,"14.1":3.60498},P:{"4":0.13602,"5.0-5.4":0.02051,"6.2-6.4":0.02149,"7.2-7.4":0.05232,"8.2":0.02149,"9.2":0.03139,"10.1":0.21537,"11.1-11.2":0.12556,"12.0":0.02093,"13.0":0.1988,"14.0":0.15695,"15.0":4.46778},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00103,"4.2-4.3":0.00205,"4.4":0,"4.4.3-4.4.4":0.01641},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.59485,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.12183},Q:{"10.4":0},O:{"0":0.02924},H:{"0":0.03691},L:{"0":18.42241},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js
new file mode 100644
index 0000000000..1482b69849
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/KZ.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.00964,"34":0.01445,"52":0.25054,"55":0.03373,"56":0.01445,"59":0.00482,"67":0.00482,"69":0.00482,"76":0.00482,"78":0.03854,"79":0.00482,"81":0.00482,"86":0.00964,"88":0.00964,"89":0.01445,"90":0.01445,"91":0.01445,"92":0.37099,"93":0.87688,"94":0.00964,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 57 58 60 61 62 63 64 65 66 68 70 71 72 73 74 75 77 80 82 83 84 85 87 95 3.5 3.6"},D:{"5":0.00964,"11":0.04336,"22":0.01927,"24":0.00482,"26":0.01445,"34":0.01927,"38":0.05782,"45":0.00964,"48":0.00964,"49":0.06745,"51":0.03854,"53":0.04336,"55":0.00964,"56":0.00964,"57":0.00964,"59":0.04336,"61":0.01445,"63":0.00482,"66":0.00964,"67":0.00964,"68":0.02891,"69":0.00964,"70":0.00964,"71":0.04336,"72":0.00964,"73":0.03373,"74":0.01445,"75":0.01927,"76":0.01445,"77":0.01445,"78":0.01927,"79":0.34208,"80":0.06263,"81":0.02409,"83":0.053,"84":0.04336,"85":0.06263,"86":0.17827,"87":0.54443,"88":0.13009,"89":0.03854,"90":0.106,"91":0.18308,"92":0.50589,"93":0.81906,"94":22.45188,"95":5.62742,"96":0.02409,"97":0.00964,_:"4 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 46 47 50 52 54 58 60 62 64 65 98"},F:{"11":0.00964,"25":0.02891,"31":0.03373,"36":0.02891,"40":0.01445,"46":0.00482,"72":0.02891,"74":0.01445,"76":0.02409,"77":0.01927,"78":0.09636,"79":2.81371,"80":1.14668,_:"9 12 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 75 9.5-9.6 10.5 10.6 11.1 11.5","10.0-10.1":0,"11.6":0.39508,"12.1":0.06263},G:{"8":0,"15":1.99991,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00103,"6.0-6.1":0.00308,"7.0-7.1":0.00308,"8.1-8.4":0.00205,"9.0-9.2":0.00103,"9.3":0.01643,"10.0-10.2":0.01233,"10.3":0.0606,"11.0-11.2":0.03801,"11.3-11.4":0.04109,"12.0-12.1":0.04417,"12.2-12.5":0.66561,"13.0-13.1":0.04725,"13.2":0.02876,"13.3":0.14072,"13.4-13.7":0.41498,"14.0-14.4":1.51508,"14.5-14.8":5.23551},B:{"18":0.03854,"84":0.00482,"85":0.00482,"89":0.00964,"91":0.00482,"92":0.00964,"93":0.03373,"94":1.2045,"95":0.36617,_:"12 13 14 15 16 17 79 80 81 83 86 87 88 90"},E:{"4":0,"13":0.02891,"14":0.20717,"15":0.3469,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.30835,"11.1":0.00482,"12.1":0.01927,"13.1":0.10118,"14.1":0.54925},P:{"4":0.22477,"5.0-5.4":0.1119,"6.2-6.4":0.01022,"7.2-7.4":0.10217,"8.2":0.01091,"9.2":0.05108,"10.1":0.02043,"11.1-11.2":0.19412,"12.0":0.08174,"13.0":0.22477,"14.0":0.32694,"15.0":1.64494},I:{"0":0,"3":0,"4":0.00107,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00268,"4.2-4.3":0.00858,"4.4":0,"4.4.3-4.4.4":0.01876},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"6":0.01069,"8":0.01069,"9":0.01069,"10":0.01069,"11":0.39566,_:"7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.057},Q:{"10.4":0},O:{"0":0.48193},H:{"0":0.25021},L:{"0":37.0627},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js
new file mode 100644
index 0000000000..762c70a89b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LA.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00315,"29":0.00944,"31":0.00315,"34":0.01574,"36":0.00315,"38":0.00629,"43":0.00629,"45":0.00629,"46":0.00629,"47":0.01574,"48":0.00944,"49":0.00629,"50":0.02518,"51":0.01574,"52":0.05665,"53":0.02203,"54":0.02203,"55":0.01259,"56":0.01888,"57":0.01259,"58":0.00944,"59":0.01574,"60":0.00944,"61":0.01574,"62":0.00944,"63":0.01574,"64":0.00629,"65":0.00629,"66":0.00629,"67":0.00315,"68":0.00944,"69":0.00315,"70":0.00315,"71":0.7364,"72":0.00629,"73":0.00315,"74":0.00629,"76":0.00629,"77":0.00629,"78":0.05035,"79":0.00315,"80":0.00315,"81":0.03147,"82":0.00315,"83":0.00944,"84":0.02203,"88":0.107,"89":0.01888,"90":0.00629,"91":0.05035,"92":0.45002,"93":1.06369,"94":0.0535,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 30 32 33 35 37 39 40 41 42 44 75 85 86 87 95 3.5 3.6"},D:{"25":0.00315,"26":0.02518,"28":0.00315,"29":0.01888,"30":0.01259,"31":0.01259,"32":0.00629,"33":0.00629,"36":0.01888,"37":0.03147,"38":0.01574,"39":0.00629,"40":0.00629,"41":0.01259,"42":0.00944,"43":0.0535,"44":0.00315,"45":0.00944,"46":0.01574,"47":0.02203,"48":0.00944,"49":0.16364,"50":0.00629,"51":0.01259,"52":0.00315,"53":0.00944,"54":0.00944,"55":0.01574,"56":0.03776,"57":0.01259,"58":0.01574,"59":0.00944,"60":0.01574,"61":0.04721,"62":0.00944,"63":0.05665,"64":0.01259,"65":0.02203,"66":0.01888,"67":0.01259,"68":0.01888,"69":0.02518,"70":0.05035,"71":0.03462,"72":0.01574,"73":0.01259,"74":0.05035,"75":0.03147,"76":0.01259,"77":0.01888,"78":0.04721,"79":0.06294,"80":0.05665,"81":0.02518,"83":0.04721,"84":0.03462,"85":0.03147,"86":0.04406,"87":0.27064,"88":0.04721,"89":0.03147,"90":0.0535,"91":0.09126,"92":0.40282,"93":0.77102,"94":14.08597,"95":3.73234,"96":0.01888,"97":0.00315,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 34 35 98"},F:{"33":0.00315,"34":0.00629,"37":0.00315,"43":0.00629,"47":0.00315,"48":0.00629,"49":0.00629,"50":0.00315,"51":0.00315,"52":0.00629,"53":0.01259,"54":0.01574,"55":0.01574,"56":0.00944,"65":0.00315,"66":0.00315,"67":0.00629,"68":0.00315,"78":0.01259,"79":0.2612,"80":0.12903,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 35 36 38 39 40 41 42 44 45 46 57 58 60 62 63 64 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01574},G:{"8":0.0064,"15":2.31162,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01408,"5.0-5.1":0.00384,"6.0-6.1":0.02304,"7.0-7.1":0.02048,"8.1-8.4":0.02304,"9.0-9.2":0.02304,"9.3":0.08832,"10.0-10.2":0.0448,"10.3":0.12288,"11.0-11.2":0.09856,"11.3-11.4":0.08192,"12.0-12.1":0.15744,"12.2-12.5":2.12219,"13.0-13.1":0.09472,"13.2":0.03072,"13.3":0.32511,"13.4-13.7":0.61694,"14.0-14.4":1.62812,"14.5-14.8":4.95731},B:{"12":0.02832,"13":0.03776,"14":0.01259,"15":0.02518,"16":0.03776,"17":0.02203,"18":0.06294,"79":0.00944,"80":0.01259,"81":0.02203,"83":0.01574,"84":0.02518,"85":0.01259,"86":0.01888,"87":0.01574,"89":0.03147,"90":0.01259,"91":0.01259,"92":0.03147,"93":0.06609,"94":1.70567,"95":0.51611,_:"88"},E:{"4":0,"10":0.00944,"11":0.01574,"12":0.02518,"13":0.06923,"14":0.1542,"15":0.34302,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01574,"11.1":0.04406,"12.1":0.03462,"13.1":0.1007,"14.1":0.45946},P:{"4":0.56095,"5.0-5.4":0.0204,"6.2-6.4":0.0306,"7.2-7.4":0.26518,"8.2":0.01027,"9.2":0.20398,"10.1":0.051,"11.1-11.2":0.30597,"12.0":0.16319,"13.0":0.29577,"14.0":0.45896,"15.0":1.97862},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00574,"4.2-4.3":0.0043,"4.4":0,"4.4.3-4.4.4":0.05164},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00657,"9":0.01972,"10":0.00657,"11":0.48639,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.16447},Q:{"10.4":0.14391},O:{"0":0.97998},H:{"0":0.49309},L:{"0":51.35868},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js
new file mode 100644
index 0000000000..41c70b27de
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LB.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.04802,"58":0.01201,"66":0.01201,"68":0.02401,"70":0.008,"74":0.004,"78":0.07604,"82":0.004,"83":0.004,"85":0.008,"87":0.004,"88":0.01201,"89":0.01601,"90":0.008,"91":0.02401,"92":0.84042,"93":1.48874,"94":0.02801,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 59 60 61 62 63 64 65 67 69 71 72 73 75 76 77 79 80 81 84 86 95 3.5 3.6"},D:{"11":0.008,"24":0.004,"34":0.004,"38":0.01201,"49":0.05203,"58":0.008,"62":0.01601,"63":0.008,"64":0.004,"65":0.04402,"66":0.004,"67":0.008,"68":0.008,"69":0.008,"70":0.01201,"71":0.01601,"72":0.02001,"73":0.01201,"74":0.01601,"75":0.04402,"76":0.008,"77":0.004,"78":0.01601,"79":0.07204,"80":0.05203,"81":0.03202,"83":0.02801,"84":0.02401,"85":0.07204,"86":0.04002,"87":0.18809,"88":0.07204,"89":0.04802,"90":0.10005,"91":0.28014,"92":0.34817,"93":1.49275,"94":19.86993,"95":4.75838,"96":0.008,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 97 98"},F:{"78":0.05203,"79":0.41621,"80":0.21611,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.95115,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00636,"6.0-6.1":0.00764,"7.0-7.1":0.028,"8.1-8.4":0.00509,"9.0-9.2":0.00509,"9.3":0.14635,"10.0-10.2":0.014,"10.3":0.12217,"11.0-11.2":0.43523,"11.3-11.4":0.0929,"12.0-12.1":0.06236,"12.2-12.5":1.04607,"13.0-13.1":0.02163,"13.2":0.014,"13.3":0.08526,"13.4-13.7":0.26215,"14.0-14.4":1.06516,"14.5-14.8":6.34515},B:{"12":0.004,"13":0.004,"14":0.008,"15":0.008,"16":0.008,"17":0.01601,"18":0.04002,"84":0.01201,"86":0.004,"89":0.02801,"90":0.008,"91":0.05603,"92":0.02001,"93":0.07204,"94":2.06103,"95":0.58829,_:"79 80 81 83 85 87 88"},E:{"4":0,"11":0.008,"12":0.02401,"13":0.05203,"14":0.42821,"15":0.71236,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1","5.1":0.02001,"10.1":0.01201,"11.1":0.02801,"12.1":0.62031,"13.1":0.35218,"14.1":1.16458},P:{"4":0.30735,"5.0-5.4":0.0204,"6.2-6.4":0.0306,"7.2-7.4":0.37906,"8.2":0.01027,"9.2":0.06147,"10.1":0.03073,"11.1-11.2":0.28686,"12.0":0.12294,"13.0":0.44053,"14.0":0.69665,"15.0":5.17366},I:{"0":0,"3":0,"4":0.00037,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00111,"4.2-4.3":0.00501,"4.4":0,"4.4.3-4.4.4":0.0295},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.008,"11":0.28814,_:"6 7 8 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.14995},Q:{"10.4":0},O:{"0":0.36588},H:{"0":0.26689},L:{"0":40.59393},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js
new file mode 100644
index 0000000000..5ebdb32222
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LC.js
@@ -0,0 +1 @@
+module.exports={C:{"65":0.00796,"78":0.06366,"86":0.02387,"87":0.07162,"88":0.00796,"89":0.00796,"91":0.00796,"92":0.27853,"93":0.75203,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 90 94 95 3.5 3.6"},D:{"11":0.00796,"34":0.03183,"49":0.07162,"55":0.00398,"63":0.00398,"65":0.01194,"66":0.00398,"67":0.00796,"69":0.01592,"70":0.00796,"73":0.00796,"74":0.02785,"75":0.0199,"76":0.16712,"77":0.0199,"79":0.1512,"80":0.00796,"81":0.09152,"83":0.00398,"84":0.01194,"85":0.01194,"86":0.02785,"87":0.03581,"88":0.04377,"89":0.05969,"90":0.04377,"91":0.20691,"92":0.48146,"93":1.44836,"94":17.42006,"95":4.08643,"96":0.00796,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 64 68 71 72 78 97 98"},F:{"78":0.03581,"79":0.38596,"80":0.13131,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.23469,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.02176,"6.0-6.1":0,"7.0-7.1":0.00484,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.10154,"10.0-10.2":0,"10.3":0.08099,"11.0-11.2":0.00725,"11.3-11.4":0.0133,"12.0-12.1":0.01209,"12.2-12.5":0.79417,"13.0-13.1":0.01209,"13.2":0.01088,"13.3":0.18253,"13.4-13.7":0.21154,"14.0-14.4":0.82076,"14.5-14.8":6.57575},B:{"13":0.00398,"15":0.00398,"16":0.00398,"17":0.02785,"18":0.0955,"80":0.00398,"84":0.00796,"89":0.02387,"90":0.00796,"91":0.01592,"92":0.03979,"93":0.11539,"94":4.26151,"95":1.2892,_:"12 14 79 81 83 85 86 87 88"},E:{"4":0,"13":0.01194,"14":0.11937,"15":0.52523,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.01194,"10.1":0.01194,"11.1":0.0199,"12.1":0.03183,"13.1":0.13131,"14.1":1.70301},P:{"4":0.41814,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.86763,"8.2":0.08219,"9.2":0.03136,"10.1":0.03136,"11.1-11.2":0.27179,"12.0":0.10453,"13.0":0.41814,"14.0":0.4704,"15.0":6.2616},I:{"0":0,"3":0,"4":0.00063,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00111,"4.4":0,"4.4.3-4.4.4":0.01632},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.24272,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01806},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.27095},Q:{"10.4":0},O:{"0":0.55995},H:{"0":0.18241},L:{"0":42.65695},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js
new file mode 100644
index 0000000000..cad85dedaf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LI.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.01396,"52":0.01396,"54":0.28626,"62":0.02095,"77":0.65631,"78":0.06284,"83":0.01396,"84":0.00698,"85":0.00698,"86":0.00698,"87":0.01396,"88":0.04887,"89":0.03491,"91":0.11869,"92":2.42275,"93":5.10384,"94":0.03491,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 55 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 90 95 3.5 3.6"},D:{"49":3.03717,"53":0.16059,"75":0.02793,"78":0.00698,"79":0.10473,"81":0.06284,"83":0.16757,"84":0.05586,"85":0.01396,"86":0.02095,"87":0.18153,"88":0.02793,"89":0.28626,"90":0.1536,"91":0.83784,"92":0.40496,"93":2.0178,"94":24.62551,"95":7.47772,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 80 96 97 98"},F:{"28":0.00698,"78":0.02793,"79":1.91307,"80":1.0473,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.88174,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.04688,"10.0-10.2":0,"10.3":0.02873,"11.0-11.2":0.00605,"11.3-11.4":0.0378,"12.0-12.1":0.0499,"12.2-12.5":0.56706,"13.0-13.1":0.02571,"13.2":0.01361,"13.3":0.03327,"13.4-13.7":0.12551,"14.0-14.4":1.17344,"14.5-14.8":9.12444},B:{"17":0.08378,"18":0.02095,"83":0.05586,"89":0.04189,"91":0.01396,"92":0.68424,"93":0.50969,"94":6.65385,"95":2.5973,_:"12 13 14 15 16 79 80 81 84 85 86 87 88 90"},E:{"4":0,"13":0.04189,"14":0.55856,"15":1.50811,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 10.1","9.1":0.02793,"11.1":0.39099,"12.1":0.06982,"13.1":0.72613,"14.1":3.05113},P:{"4":0.06348,"5.0-5.4":0.01005,"6.2-6.4":0.07035,"7.2-7.4":0.86433,"8.2":0.0201,"9.2":0.15075,"10.1":0.0603,"11.1-11.2":0.03174,"12.0":0.1407,"13.0":0.06348,"14.0":0.03174,"15.0":2.60267},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.22342,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.335},Q:{"10.4":0},O:{"0":0.00302},H:{"0":0.05714},L:{"0":12.21948},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js
new file mode 100644
index 0000000000..34c80e6354
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LK.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00358,"52":0.01431,"72":0.00716,"76":0.00358,"78":0.02147,"84":0.00358,"88":0.01431,"89":0.02862,"90":0.01431,"91":0.10734,"92":0.55459,"93":1.24157,"94":0.05367,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 77 79 80 81 82 83 85 86 87 95 3.5 3.6"},D:{"49":0.02147,"55":0.00358,"61":0.02862,"63":0.01431,"64":0.00358,"65":0.00716,"67":0.00358,"68":0.00358,"69":0.00716,"70":0.00716,"71":0.00716,"72":0.00716,"73":0.00358,"74":0.01789,"75":0.01073,"76":0.00716,"77":0.01431,"78":0.01073,"79":0.02862,"80":0.02147,"81":0.06798,"83":0.02505,"84":0.01789,"85":0.02505,"86":0.04294,"87":0.24688,"88":0.04294,"89":0.03578,"90":0.04294,"91":0.10376,"92":0.30413,"93":0.55101,"94":17.08137,"95":4.41525,"96":0.01073,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 62 66 97 98"},F:{"77":0.00358,"78":0.02505,"79":0.90523,"80":0.49376,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00047,"15":1.25868,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00187,"5.0-5.1":0.00094,"6.0-6.1":0.00187,"7.0-7.1":0.00796,"8.1-8.4":0.00843,"9.0-9.2":0.00328,"9.3":0.04308,"10.0-10.2":0.0089,"10.3":0.04355,"11.0-11.2":0.04448,"11.3-11.4":0.02903,"12.0-12.1":0.03887,"12.2-12.5":0.54646,"13.0-13.1":0.03793,"13.2":0.01873,"13.3":0.0871,"13.4-13.7":0.20697,"14.0-14.4":0.70613,"14.5-14.8":1.58692},B:{"12":0.01073,"13":0.00716,"14":0.00358,"15":0.00716,"16":0.01073,"17":0.00716,"18":0.05725,"84":0.01073,"85":0.00358,"89":0.02862,"90":0.00716,"91":0.02505,"92":0.03936,"93":0.11092,"94":5.03782,"95":1.45625,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.01431,"14":0.07156,"15":0.18606,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00716,"11.1":0.00358,"12.1":0.01073,"13.1":0.04651,"14.1":0.22184},P:{"4":1.00458,"5.0-5.4":0.02029,"6.2-6.4":0.03044,"7.2-7.4":1.05532,"8.2":0.03044,"9.2":0.13191,"10.1":0.05074,"11.1-11.2":0.46677,"12.0":0.11162,"13.0":0.39574,"14.0":0.5378,"15.0":1.35973},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00119,"4.2-4.3":0.00418,"4.4":0,"4.4.3-4.4.4":0.046},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.0644,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.17339},Q:{"10.4":0},O:{"0":2.01009},H:{"0":2.00638},L:{"0":51.16977},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js
new file mode 100644
index 0000000000..bc8b7f9c63
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LR.js
@@ -0,0 +1 @@
+module.exports={C:{"24":0.0059,"32":0.01181,"34":0.00295,"46":0.02362,"47":0.0059,"56":0.00295,"72":0.01476,"78":0.06494,"85":0.0059,"88":0.00886,"89":0.0059,"91":0.02066,"92":0.34243,"93":0.66125,"94":0.03838,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 33 35 36 37 38 39 40 41 42 43 44 45 48 49 50 51 52 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 86 87 90 95 3.5 3.6"},D:{"28":0.00886,"29":0.00295,"30":0.00886,"38":0.00886,"43":0.0059,"47":0.00886,"49":0.07085,"53":0.00295,"56":0.00295,"57":0.02066,"58":0.00295,"60":0.03247,"61":0.01181,"63":0.02066,"64":0.05904,"65":0.00886,"66":0.02066,"67":0.00295,"68":0.0059,"69":0.0059,"70":0.00886,"71":0.00295,"74":0.01476,"75":0.33358,"76":0.0679,"77":0.01181,"78":0.01771,"79":0.01771,"80":0.03838,"81":0.05904,"83":0.01181,"84":0.01181,"85":0.02657,"86":0.02657,"87":0.03542,"88":0.03542,"89":0.04428,"90":0.07675,"91":0.10037,"92":0.99778,"93":0.70258,"94":9.23386,"95":1.37563,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 59 62 72 73 96 97 98"},F:{"45":0.00295,"65":0.00295,"78":0.0059,"79":0.28044,"80":0.12103,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.68303,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00548,"6.0-6.1":0.00411,"7.0-7.1":0.13551,"8.1-8.4":0.00068,"9.0-9.2":0,"9.3":0.06844,"10.0-10.2":0.00342,"10.3":0.01779,"11.0-11.2":0.03764,"11.3-11.4":0.03764,"12.0-12.1":0.06296,"12.2-12.5":0.76584,"13.0-13.1":0.05612,"13.2":0.01643,"13.3":0.25597,"13.4-13.7":0.31688,"14.0-14.4":1.97313,"14.5-14.8":2.40156},B:{"12":0.11513,"13":0.05018,"14":0.00886,"15":0.02362,"16":0.02952,"17":0.02952,"18":0.13284,"80":0.00886,"84":0.01181,"85":0.01476,"88":0.00886,"89":0.05314,"90":0.01771,"91":0.04428,"92":0.07085,"93":0.10332,"94":1.28412,"95":0.31586,_:"79 81 83 86 87"},E:{"4":0,"10":0.00295,"13":0.0059,"14":0.17417,"15":0.19188,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1","11.1":0.0059,"13.1":0.01181,"14.1":0.11513},P:{"4":0.35569,"5.0-5.4":2.98782,"6.2-6.4":0.05081,"7.2-7.4":0.13211,"8.2":0.01027,"9.2":0.12195,"10.1":0.03049,"11.1-11.2":0.25407,"12.0":0.15114,"13.0":0.07114,"14.0":0.44716,"15.0":0.90448},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.0019,"4.4":0,"4.4.3-4.4.4":0.02628},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.00606,"11":0.21829,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.19732},Q:{"10.4":0},O:{"0":0.81041},H:{"0":5.44406},L:{"0":61.97954},S:{"2.5":0.14799}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js
new file mode 100644
index 0000000000..acacdad0b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LS.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.02217,"17":0.00277,"29":0.00554,"40":0.00277,"52":0.00554,"60":0.00554,"66":0.00831,"68":0.00554,"72":0.00277,"78":0.01663,"87":0.00554,"88":0.02494,"89":0.2577,"90":0.00277,"91":0.01108,"92":0.23276,"93":0.62348,"94":0.02217,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 95 3.5 3.6"},D:{"24":0.01108,"40":0.00831,"43":0.00277,"49":0.0665,"50":0.00277,"55":0.01386,"56":0.03602,"58":0.01108,"60":0.01108,"63":0.01386,"66":0.00277,"68":0.00277,"69":0.02771,"70":0.1247,"71":0.01386,"74":0.03325,"76":0.00831,"77":0.01108,"78":0.01108,"79":0.05265,"80":0.00277,"81":0.03325,"83":0.00554,"84":0.00831,"85":0.00277,"86":0.02217,"87":0.09421,"88":0.03602,"89":0.02494,"90":0.02217,"91":0.06373,"92":0.18012,"93":0.39625,"94":8.81732,"95":2.27499,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 47 48 51 52 53 54 57 59 61 62 64 65 67 72 73 75 96 97 98"},F:{"65":0.00277,"74":0.01663,"77":0.03048,"78":0.00831,"79":0.32144,"80":0.26325,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.33997,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00038,"6.0-6.1":0.00038,"7.0-7.1":0.01863,"8.1-8.4":0.00285,"9.0-9.2":0.00133,"9.3":0.07377,"10.0-10.2":0.00285,"10.3":0.00323,"11.0-11.2":0.04126,"11.3-11.4":0.01483,"12.0-12.1":0.00133,"12.2-12.5":0.25232,"13.0-13.1":0.00437,"13.2":0.00799,"13.3":0.04582,"13.4-13.7":0.05191,"14.0-14.4":0.20364,"14.5-14.8":0.83434},B:{"12":0.04711,"13":0.01108,"14":0.00554,"15":0.02217,"16":0.02771,"17":0.03879,"18":0.12747,"80":0.01108,"84":0.02494,"85":0.00831,"89":0.01663,"90":0.01108,"91":0.01663,"92":0.13301,"93":0.07482,"94":1.52959,"95":0.41842,_:"79 81 83 86 87 88"},E:{"4":0,"5":0.00554,"11":0.00831,"12":0.00831,"13":0.00554,"14":0.04157,"15":0.09144,_:"0 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1 10.1 12.1","5.1":0.01108,"11.1":0.00554,"13.1":0.04434,"14.1":0.10253},P:{"4":0.62473,"5.0-5.4":0.0204,"6.2-6.4":0.02015,"7.2-7.4":1.43084,"8.2":0.01027,"9.2":0.13099,"10.1":0.07053,"11.1-11.2":0.46351,"12.0":0.15114,"13.0":0.37282,"14.0":0.60458,"15.0":0.73557},I:{"0":0,"3":0,"4":0.00027,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00161,"4.2-4.3":0.00509,"4.4":0,"4.4.3-4.4.4":0.06533},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.00831,"11":0.18566,_:"6 7 8 9 5.5"},J:{"7":0,"10":0.03615},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.05783},Q:{"10.4":0.08675},O:{"0":1.12772},H:{"0":8.02111},L:{"0":65.71565},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js
new file mode 100644
index 0000000000..4977b5b79d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LT.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.00566,"48":0.01132,"50":0.01698,"51":0.02264,"52":0.11886,"53":0.01132,"54":0.01698,"55":0.01132,"56":0.01132,"57":0.01698,"58":0.01132,"59":0.02264,"60":0.0283,"61":0.01698,"62":0.01132,"63":0.01698,"65":0.01132,"66":0.01698,"68":0.01698,"72":0.01132,"76":0.00566,"77":0.01698,"78":0.1132,"79":0.00566,"80":0.00566,"81":0.01698,"82":0.01132,"83":0.01698,"84":0.02264,"85":0.00566,"86":0.00566,"87":0.01132,"88":0.0566,"89":0.0283,"90":0.03396,"91":0.06792,"92":1.8678,"93":3.52618,"94":0.01698,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 64 67 69 70 71 73 74 75 95 3.5 3.6"},D:{"30":0.00566,"38":0.10188,"41":0.01698,"46":0.00566,"47":0.01132,"48":0.06226,"49":0.39054,"51":0.01132,"53":0.00566,"55":0.00566,"56":0.35092,"57":0.01132,"58":0.01132,"59":0.0283,"60":0.01132,"61":0.58864,"62":0.01132,"63":0.0283,"64":0.01698,"65":0.02264,"66":0.01698,"67":0.01132,"68":0.01698,"69":0.01132,"70":0.02264,"71":0.01132,"72":0.00566,"73":0.03396,"74":0.02264,"75":0.01698,"76":0.02264,"77":0.01698,"78":0.02264,"79":0.10188,"80":0.04528,"81":0.04528,"83":0.07358,"84":0.06792,"85":0.07358,"86":0.09056,"87":0.80938,"88":0.09056,"89":0.06226,"90":0.11886,"91":0.23206,"92":0.47544,"93":1.38104,"94":24.53044,"95":6.97312,"96":0.01132,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 39 40 42 43 44 45 50 52 54 97 98"},F:{"36":0.05094,"48":0.00566,"53":0.00566,"54":0.01132,"55":0.01132,"56":0.00566,"68":0.00566,"69":0.02264,"70":0.01132,"76":0.00566,"77":0.05094,"78":0.15848,"79":2.34324,"80":1.15464,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 57 58 60 62 63 64 65 66 67 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01698},G:{"8":0.00455,"15":2.5819,"3.2":0.00114,"4.0-4.1":0,"4.2-4.3":0.00342,"5.0-5.1":0.00455,"6.0-6.1":0.01138,"7.0-7.1":0.01366,"8.1-8.4":0.01821,"9.0-9.2":0.01821,"9.3":0.03871,"10.0-10.2":0.02504,"10.3":0.09449,"11.0-11.2":0.04895,"11.3-11.4":0.03415,"12.0-12.1":0.07513,"12.2-12.5":0.23906,"13.0-13.1":0.03529,"13.2":0.02163,"13.3":0.08197,"13.4-13.7":0.25728,"14.0-14.4":0.8538,"14.5-14.8":6.91694},B:{"12":0.02264,"13":0.01698,"14":0.02264,"15":0.01698,"16":0.03962,"17":0.01698,"18":0.06226,"79":0.01132,"80":0.01132,"81":0.01698,"83":0.01698,"84":0.0283,"85":0.01698,"86":0.02264,"87":0.01698,"88":0.00566,"89":0.02264,"90":0.01132,"91":0.0283,"92":0.03962,"93":0.1132,"94":3.15828,"95":1.10936},E:{"4":0.01132,"10":0.01132,"11":0.01132,"12":0.02264,"13":0.09622,"14":0.29998,"15":0.75278,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01132,"11.1":0.03396,"12.1":0.07358,"13.1":0.2547,"14.1":0.91692},P:{"4":0.07291,"5.0-5.4":0.01005,"6.2-6.4":0.07035,"7.2-7.4":0.01042,"8.2":0.0201,"9.2":0.01042,"10.1":0.04166,"11.1-11.2":0.09374,"12.0":0.05208,"13.0":0.11458,"14.0":0.21874,"15.0":3.13522},I:{"0":0,"3":0,"4":0.002,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00134,"4.2-4.3":0.00401,"4.4":0,"4.4.3-4.4.4":0.02738},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"6":0.01928,"7":0.01285,"8":0.12212,"9":0.02571,"10":0.05142,"11":0.52705,_:"5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.25606},Q:{"10.4":0.01736},O:{"0":0.05642},H:{"0":0.36569},L:{"0":28.08196},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js
new file mode 100644
index 0000000000..a4f6e599d5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LU.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.01064,"48":0.01064,"51":0.01064,"52":0.07982,"59":0.03725,"60":0.05853,"61":0.08514,"62":0.03725,"63":0.04789,"68":0.07449,"77":0.01064,"78":1.15998,"81":0.00532,"82":0.00532,"85":0.00532,"86":0.00532,"87":0.01596,"88":0.21816,"89":0.09046,"90":0.06385,"91":0.18624,"92":1.76657,"93":3.74598,"94":0.00532,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 49 50 53 54 55 56 57 58 64 65 66 67 69 70 71 72 73 74 75 76 79 80 83 84 95 3.5 3.6"},D:{"38":0.00532,"49":0.39908,"57":0.01064,"61":0.89393,"66":0.02128,"67":0.01596,"68":0.06385,"69":0.42568,"70":0.05321,"71":0.07449,"72":0.1011,"73":0.01596,"74":0.01064,"75":0.02128,"76":0.08514,"77":0.01064,"78":0.17559,"79":0.06917,"80":0.04789,"81":0.03725,"83":0.03193,"84":0.04257,"85":0.09578,"86":0.1277,"87":0.35119,"88":0.05321,"89":0.06385,"90":0.09046,"91":0.23945,"92":0.45761,"93":1.0376,"94":16.85693,"95":4.25148,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 58 59 60 62 63 64 65 96 97 98"},F:{"53":0.01596,"71":0.02661,"76":0.01064,"78":0.13835,"79":1.11209,"80":0.45229,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.74704,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00379,"9.0-9.2":0.00189,"9.3":0.74634,"10.0-10.2":0.05683,"10.3":0.08524,"11.0-11.2":0.02084,"11.3-11.4":0.01894,"12.0-12.1":0.02652,"12.2-12.5":0.37317,"13.0-13.1":0.0322,"13.2":0.00758,"13.3":0.11366,"13.4-13.7":0.31445,"14.0-14.4":1.13656,"14.5-14.8":11.23682},B:{"18":0.03725,"84":0.01064,"85":0.01064,"89":0.05853,"90":0.11706,"91":0.01064,"92":0.06917,"93":0.23945,"94":3.64489,"95":1.05356,_:"12 13 14 15 16 17 79 80 81 83 86 87 88"},E:{"4":0,"12":0.00532,"13":0.1011,"14":1.01631,"15":3.20856,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.02128,"9.1":0.01064,"10.1":0.01596,"11.1":0.06917,"12.1":0.19156,"13.1":0.83008,"14.1":4.52285},P:{"4":0.14842,"5.0-5.4":0.01012,"6.2-6.4":0.08086,"7.2-7.4":0.0212,"8.2":0.03036,"9.2":0.0212,"10.1":0.02024,"11.1-11.2":0.05301,"12.0":0.03181,"13.0":0.08481,"14.0":0.20143,"15.0":3.62581},I:{"0":0,"3":0,"4":0.00094,"2.1":0,"2.2":0.00047,"2.3":0,"4.1":0.00094,"4.2-4.3":0.00374,"4.4":0,"4.4.3-4.4.4":0.02667},A:{"9":0.01441,"11":0.45384,_:"6 7 8 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.72057},Q:{"10.4":0.0234},O:{"0":0.63167},H:{"0":0.66447},L:{"0":22.07539},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js
new file mode 100644
index 0000000000..1c6a84ebcf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LV.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.1318,"55":0.01198,"56":0.02396,"60":0.01198,"66":0.01198,"68":0.00599,"72":0.05392,"73":0.00599,"78":0.21568,"79":0.01198,"81":0.02396,"84":0.04793,"85":0.00599,"86":0.01198,"87":0.04194,"88":0.05392,"89":0.04194,"90":0.04194,"91":0.0659,"92":1.7973,"93":4.60109,"94":0.02396,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 57 58 59 61 62 63 64 65 67 69 70 71 74 75 76 77 80 82 83 95 3.5 3.6"},D:{"38":0.00599,"49":0.31752,"53":0.01198,"57":0.00599,"65":0.00599,"66":0.01797,"67":0.00599,"69":0.00599,"71":0.01198,"73":0.01797,"74":0.01797,"75":0.03595,"76":0.00599,"77":0.02396,"78":0.02396,"79":0.11982,"80":0.02996,"81":0.01797,"83":0.05392,"84":0.05991,"85":0.05392,"86":0.07788,"87":0.56915,"88":0.05392,"89":0.11383,"90":0.10784,"91":0.25761,"92":0.63505,"93":1.62356,"94":27.66644,"95":8.89064,"96":0.01797,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 58 59 60 61 62 63 64 68 70 72 97 98"},F:{"36":0.01198,"77":0.01198,"78":0.10784,"79":1.88717,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.19898,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00846,"8.1-8.4":0.00106,"9.0-9.2":0,"9.3":0.01798,"10.0-10.2":0.00529,"10.3":0.04759,"11.0-11.2":0.01269,"11.3-11.4":0.02432,"12.0-12.1":0.01586,"12.2-12.5":0.24852,"13.0-13.1":0.01058,"13.2":0.01163,"13.3":0.05182,"13.4-13.7":0.25803,"14.0-14.4":0.93801,"14.5-14.8":5.71691},B:{"18":0.04194,"84":0.00599,"85":0.01198,"89":0.02996,"91":0.02996,"92":0.02396,"93":0.11982,"94":2.71991,_:"12 13 14 15 16 17 79 80 81 83 86 87 88 90 95"},E:{"4":0,"12":0.00599,"13":0.11982,"14":0.35946,"15":0.91662,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01797,"11.1":0.03595,"12.1":0.05392,"13.1":0.29356,"14.1":1.22816},P:{"4":0.08355,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.10444,"12.0":0.03133,"13.0":0.14622,"14.0":0.29244,"15.0":3.36304},I:{"0":0,"3":0,"4":0.00143,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00571,"4.2-4.3":0.00713,"4.4":0,"4.4.3-4.4.4":0.06992},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.00599,"11":0.20369,_:"6 7 8 10 5.5"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.12428},H:{"0":0.35298},L:{"0":25.21175},S:{"2.5":0},R:{_:"0"},M:{"0":0.28464}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js
new file mode 100644
index 0000000000..a9b7e1d256
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/LY.js
@@ -0,0 +1 @@
+module.exports={C:{"5":0.00668,"17":0.01114,"34":0.00668,"35":0.00446,"39":0.01114,"43":0.00668,"47":0.00668,"48":0.00223,"52":0.04233,"57":0.00223,"66":0.00223,"68":0.00446,"72":0.00668,"75":0.00446,"78":0.02005,"79":0.01114,"82":0.00668,"83":0.00223,"85":0.00223,"86":0.00668,"87":0.04233,"88":0.01782,"89":0.01337,"90":0.00223,"91":0.01337,"92":0.42778,"93":1.14965,"94":0.02005,_:"2 3 4 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 37 38 40 41 42 44 45 46 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 67 69 70 71 73 74 76 77 80 81 84 95 3.5 3.6"},D:{"23":0.00223,"24":0.00668,"25":0.00891,"31":0.00891,"33":0.0156,"37":0.04679,"38":0.00446,"40":0.00223,"42":0.00223,"43":0.03119,"49":0.01337,"50":0.0156,"54":0.00223,"55":0.00668,"57":0.00446,"58":0.01337,"60":0.01114,"61":0.00223,"62":0.00446,"63":0.02228,"64":0.00446,"65":0.02228,"66":0.00446,"67":0.00446,"68":0.01114,"69":0.00891,"70":0.01114,"71":0.03788,"72":0.00891,"73":0.01114,"74":0.00891,"75":0.00668,"76":0.00446,"77":0.00446,"78":0.01337,"79":0.0557,"80":0.0401,"81":0.02451,"83":0.02228,"84":0.00891,"85":0.02451,"86":0.06016,"87":0.11808,"88":0.05124,"89":0.04456,"90":0.04456,"91":0.11586,"92":0.28964,"93":0.49016,"94":10.21092,"95":2.95656,"96":0.02005,"97":0.00446,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 26 27 28 29 30 32 34 35 36 39 41 44 45 46 47 48 51 52 53 56 59 98"},F:{"65":0.00446,"70":0.00446,"71":0.00446,"73":0.00223,"75":0.00223,"77":0.00223,"78":0.02896,"79":0.76643,"80":0.37653,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 72 74 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.90867,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00343,"6.0-6.1":0.00772,"7.0-7.1":0.01887,"8.1-8.4":0.01029,"9.0-9.2":0.00086,"9.3":0.16385,"10.0-10.2":0.006,"10.3":0.12181,"11.0-11.2":0.0386,"11.3-11.4":0.0489,"12.0-12.1":0.05233,"12.2-12.5":0.85611,"13.0-13.1":0.05061,"13.2":0.03946,"13.3":0.09951,"13.4-13.7":0.24705,"14.0-14.4":1.44973,"14.5-14.8":3.44761},B:{"12":0.00668,"13":0.00446,"14":0.00446,"16":0.00668,"17":0.00668,"18":0.04233,"81":0.00446,"84":0.01337,"85":0.00668,"86":0.00446,"87":0.00223,"89":0.02228,"90":0.00668,"91":0.00891,"92":0.01782,"93":0.08912,"94":0.99369,"95":0.3342,_:"15 79 80 83 88"},E:{"4":0,"11":0.00446,"12":0.00223,"13":0.06016,"14":0.11808,"15":0.17601,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01337,"11.1":0.00446,"12.1":0.01114,"13.1":0.04456,"14.1":0.32306},P:{"4":0.57287,"5.0-5.4":0.01005,"6.2-6.4":0.07035,"7.2-7.4":0.86433,"8.2":0.0201,"9.2":0.15075,"10.1":0.0603,"11.1-11.2":0.49247,"12.0":0.1407,"13.0":0.38191,"14.0":0.67337,"15.0":2.39198},I:{"0":0,"3":0,"4":0.00038,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0015,"4.2-4.3":0.00752,"4.4":0,"4.4.3-4.4.4":0.03723},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00891,"9":0.00891,"10":0.00668,"11":0.13591,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.10102},Q:{"10.4":0},O:{"0":0.80818},H:{"0":3.93604},L:{"0":59.2282},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js
new file mode 100644
index 0000000000..c625e1cb45
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MA.js
@@ -0,0 +1 @@
+module.exports={C:{"2":0.60035,"15":0.60852,"18":0.58401,"21":0.58401,"23":0.59218,"25":1.17211,"30":0.5881,"47":0.00408,"51":0.60035,"52":0.05718,"55":0.00817,"65":0.00817,"68":0.04084,"72":0.00408,"78":0.04492,"80":0.00408,"81":0.00817,"82":0.00408,"83":0.00408,"84":0.03267,"88":0.02042,"89":0.02042,"90":0.00408,"91":0.0245,"92":0.34306,"93":0.92707,"94":0.02042,_:"3 4 5 6 7 8 9 10 11 12 13 14 16 17 19 20 22 24 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 53 54 56 57 58 59 60 61 62 63 64 66 67 69 70 71 73 74 75 76 77 79 85 86 87 95 3.5 3.6"},D:{"19":0.59626,"24":1.75204,"30":0.58401,"33":0.58401,"35":1.17619,"38":0.00817,"43":0.00817,"49":0.11435,"53":0.01225,"54":0.59218,"55":0.60443,"56":2.98132,"61":0.01634,"63":0.01225,"65":0.00408,"67":0.02042,"68":0.00817,"69":0.01225,"70":0.00817,"71":0.00408,"72":0.01634,"73":0.00817,"74":0.00817,"75":0.03676,"76":0.00817,"77":0.00408,"78":0.00817,"79":0.05309,"80":0.01634,"81":0.01634,"83":0.05309,"84":0.04084,"85":0.04492,"86":0.06534,"87":0.57176,"88":0.04492,"89":0.04492,"90":0.05309,"91":0.11027,"92":0.26546,"93":0.49416,"94":8.84594,"95":2.59334,"96":0.00817,"97":0.00408,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 25 26 27 28 29 31 32 34 36 37 39 40 41 42 44 45 46 47 48 50 51 52 57 58 59 60 62 64 66 98"},F:{"28":0.00408,"40":0.00408,"43":0.57584,"68":0.00408,"71":0.00408,"75":0.00408,"78":0.03676,"79":0.57993,"80":0.31038,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 72 73 74 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0.59218},G:{"8":0,"15":0.71044,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00888,"6.0-6.1":11.5198,"7.0-7.1":0.02842,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.09058,"10.0-10.2":1.60027,"10.3":0.09236,"11.0-11.2":0.16518,"11.3-11.4":0.09769,"12.0-12.1":0.15807,"12.2-12.5":0.9662,"13.0-13.1":0.01243,"13.2":0.0071,"13.3":0.0444,"13.4-13.7":0.15274,"14.0-14.4":0.42982,"14.5-14.8":1.66954},B:{"14":0.00408,"18":0.02042,"84":0.00408,"89":0.01225,"91":0.00408,"92":0.01225,"93":0.03267,"94":0.78413,"95":0.25321,_:"12 13 15 16 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"5":0.57584,"12":0.00408,"13":0.02859,"14":0.09393,"15":0.09393,_:"0 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00408,"11.1":0.01225,"12.1":0.03267,"13.1":0.08168,"14.1":0.17561},P:{"4":0.50617,"5.0-5.4":0.0616,"6.2-6.4":0.01083,"7.2-7.4":0.13205,"8.2":0.0103,"9.2":0.06602,"10.1":0.04152,"11.1-11.2":0.12104,"12.0":0.04402,"13.0":0.16506,"14.0":0.19807,"15.0":1.51852},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02571,"4.2-4.3":0.44534,"4.4":0,"4.4.3-4.4.4":0.89555},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":1.19786,"9":1.18555,"10":1.21016,"11":0.07794,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.08282},Q:{"10.4":0},O:{"0":0.05916},H:{"0":0.23524},L:{"0":37.52772},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js
new file mode 100644
index 0000000000..19d18f94b3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MC.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00687,"68":0.00687,"78":0.85126,"79":0.00687,"81":0.01373,"82":0.00687,"85":0.0206,"86":0.00687,"89":0.0206,"91":0.02746,"92":1.02975,"93":3.01374,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 80 83 84 87 88 90 94 95 3.5 3.6"},D:{"49":0.62472,"52":0.01373,"63":0.0206,"70":0.02746,"71":0.09611,"72":0.04119,"74":0.10298,"76":0.04806,"77":0.32952,"79":0.0206,"80":0.01373,"81":0.10298,"83":0.06865,"84":0.19222,"85":0.10984,"86":0.03433,"87":0.78948,"88":0.01373,"89":0.2952,"90":0.30893,"91":0.26774,"92":3.41877,"93":4.5515,"94":22.50347,"95":5.3547,"96":0.00687,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 73 75 78 97 98"},F:{"70":0.00687,"77":0.06179,"78":0.11671,"79":0.34325,"80":0.10298,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.03564,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00187,"8.1-8.4":0.0112,"9.0-9.2":0,"9.3":0.04855,"10.0-10.2":0.02054,"10.3":0.07283,"11.0-11.2":0.00747,"11.3-11.4":0.01867,"12.0-12.1":0.03548,"12.2-12.5":0.72085,"13.0-13.1":0.01681,"13.2":0,"13.3":0.04482,"13.4-13.7":0.89079,"14.0-14.4":1.09061,"14.5-14.8":11.65873},B:{"13":0.02746,"17":0.06865,"18":0.07552,"85":0.00687,"90":0.01373,"92":0.04806,"93":0.26087,"94":3.50115,"95":1.33181,_:"12 14 15 16 79 80 81 83 84 86 87 88 89 91"},E:{"4":0,"11":0.0206,"12":0.0206,"13":0.05492,"14":1.17392,"15":4.10527,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01373,"10.1":0.06179,"11.1":0.13044,"12.1":0.38444,"13.1":1.86042,"14.1":8.18308},P:{"4":0.01088,"5.0-5.4":0.02065,"6.2-6.4":0.01083,"7.2-7.4":0.04163,"8.2":0.0103,"9.2":0.03122,"10.1":0.02059,"11.1-11.2":0.07616,"12.0":0.19585,"13.0":0.15611,"14.0":0.01088,"15.0":2.20875},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.97483,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.1913},Q:{"10.4":0},O:{"0":0.02195},H:{"0":0.06829},L:{"0":10.25089},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js
new file mode 100644
index 0000000000..5ffc74c7dc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MD.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.00887,"52":0.08428,"55":0.05323,"56":0.00887,"57":0.00444,"59":0.00444,"60":0.00887,"61":0.00444,"62":0.00444,"63":0.00444,"65":0.00887,"68":0.01331,"72":0.00444,"77":0.00887,"78":0.14195,"79":0.01774,"82":0.02218,"84":0.03105,"85":0.00887,"87":0.00887,"88":0.03105,"89":0.0621,"90":0.00887,"91":0.06654,"92":0.5545,"93":1.38847,"94":0.02662,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 50 51 53 54 58 64 66 67 69 70 71 73 74 75 76 80 81 83 86 95 3.5","3.6":0.00887},D:{"26":0.00444,"33":0.02218,"34":0.00444,"41":0.00444,"43":0.00887,"47":0.00444,"48":0.00887,"49":0.30608,"53":0.02218,"57":0.00444,"58":0.00444,"59":0.07541,"60":0.00444,"61":0.00887,"63":0.00887,"66":0.01331,"67":0.07541,"68":0.00887,"69":0.01331,"70":0.01331,"71":0.02218,"72":0.01331,"73":0.0488,"74":0.00887,"75":0.01331,"76":0.03992,"77":0.02662,"78":0.03992,"79":0.07985,"80":0.13308,"81":0.03549,"83":0.03992,"84":0.05323,"85":0.07541,"86":0.14195,"87":0.37706,"88":0.10203,"89":0.08428,"90":0.11534,"91":0.173,"92":0.54563,"93":0.83397,"94":22.65022,"95":6.33461,"96":0.01774,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 35 36 37 38 39 40 42 44 45 46 50 51 52 54 55 56 62 64 65 97 98"},F:{"46":0.00887,"70":0.03992,"71":0.01331,"77":0.00887,"78":0.09316,"79":1.78327,"80":0.78961,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01774},G:{"8":0.00083,"15":2.32555,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00166,"5.0-5.1":0.00166,"6.0-6.1":0.00083,"7.0-7.1":0.00582,"8.1-8.4":0.00333,"9.0-9.2":0.00499,"9.3":0.02245,"10.0-10.2":0.00665,"10.3":0.04324,"11.0-11.2":0.01912,"11.3-11.4":0.01746,"12.0-12.1":0.02411,"12.2-12.5":0.43485,"13.0-13.1":0.01912,"13.2":0.01164,"13.3":0.05238,"13.4-13.7":0.22782,"14.0-14.4":0.6876,"14.5-14.8":4.40001},B:{"16":0.00887,"18":0.02662,"84":0.00887,"86":0.01774,"89":0.00887,"90":0.00444,"91":0.00887,"92":0.01331,"93":0.03105,"94":0.97148,"95":0.29278,_:"12 13 14 15 17 79 80 81 83 85 87 88"},E:{"4":0,"11":0.01331,"12":0.00444,"13":0.05323,"14":0.47022,"15":0.36819,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.07098,"11.1":0.03105,"12.1":0.02662,"13.1":0.10646,"14.1":0.37706},P:{"4":0.1353,"5.0-5.4":0.02065,"6.2-6.4":0.01083,"7.2-7.4":0.04163,"8.2":0.0103,"9.2":0.03122,"10.1":0.02059,"11.1-11.2":0.17693,"12.0":0.04163,"13.0":0.15611,"14.0":0.15611,"15.0":2.08151},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00318,"4.2-4.3":0.00954,"4.4":0,"4.4.3-4.4.4":0.07629},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01424,"9":0.00949,"10":0.00949,"11":0.17084,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.07232},Q:{"10.4":0},O:{"0":0.22252},H:{"0":0.24227},L:{"0":45.06456},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js
new file mode 100644
index 0000000000..6f906773ca
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ME.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.0179,"52":0.86368,"56":0.00895,"64":0.00448,"72":0.00448,"78":0.0179,"84":0.02238,"87":0.00448,"88":0.0179,"89":0.01343,"90":0.00448,"91":0.01343,"92":0.63545,"93":1.63338,"94":0.02238,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"22":0.00448,"34":0.00448,"38":0.04028,"49":0.33563,"53":0.04923,"56":0.02685,"58":0.00895,"59":0.00448,"66":0.0358,"68":0.0179,"70":0.0179,"73":0.00448,"74":0.00895,"75":0.00448,"76":0.03133,"77":0.00448,"78":0.00895,"79":0.14768,"80":0.11188,"81":0.02238,"83":0.02238,"84":0.46093,"85":0.06713,"86":0.06713,"87":0.45645,"88":0.1253,"89":0.0537,"90":0.05818,"91":0.08055,"92":0.40275,"93":1.07848,"94":20.16883,"95":4.37208,"96":0.02238,"97":0.00448,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 57 60 61 62 63 64 65 67 69 71 72 98"},F:{"28":0.00448,"31":0.00448,"40":0.00448,"42":0.00448,"46":0.0179,"68":8.18478,"74":0.00448,"78":0.02238,"79":0.6981,"80":0.38485,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 32 33 34 35 36 37 38 39 41 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.15581,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00207,"6.0-6.1":0,"7.0-7.1":0.01757,"8.1-8.4":0.0031,"9.0-9.2":0,"9.3":0.08268,"10.0-10.2":0.0155,"10.3":0.11471,"11.0-11.2":0.01964,"11.3-11.4":0.03307,"12.0-12.1":0.0217,"12.2-12.5":0.5095,"13.0-13.1":0.02067,"13.2":0.02274,"13.3":0.07338,"13.4-13.7":0.28007,"14.0-14.4":0.7968,"14.5-14.8":6.16462},B:{"16":0.0179,"18":0.01343,"84":0.00448,"89":0.00448,"92":0.00895,"93":0.04475,"94":0.9129,"95":0.32668,_:"12 13 14 15 17 79 80 81 83 85 86 87 88 90 91"},E:{"4":0,"12":0.00895,"13":0.02238,"14":0.13425,"15":0.22375,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0179,"12.1":0.0179,"13.1":0.08503,"14.1":0.56385},P:{"4":0.19722,"5.0-5.4":0.0616,"6.2-6.4":0.01083,"7.2-7.4":0.04152,"8.2":0.0103,"9.2":0.02076,"10.1":0.04152,"11.1-11.2":0.2076,"12.0":0.03114,"13.0":0.14532,"14.0":0.13494,"15.0":3.02056},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00055,"4.2-4.3":0.00131,"4.4":0,"4.4.3-4.4.4":0.00919},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.12978,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.2542},Q:{"10.4":0},O:{"0":0.01105},H:{"0":0.24066},L:{"0":41.23738},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js
new file mode 100644
index 0000000000..32e79d7621
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MG.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.00596,"31":0.00596,"33":0.00596,"43":0.01191,"44":0.01191,"47":0.02979,"48":0.03574,"52":0.27402,"56":0.05361,"57":0.02979,"58":0.00596,"60":0.01191,"61":0.01191,"63":0.00596,"65":0.01191,"66":0.01787,"68":0.01787,"70":0.01787,"71":0.11318,"72":0.15488,"73":0.02979,"76":0.01787,"77":0.01787,"78":0.27998,"79":0.00596,"80":0.02383,"81":0.02979,"82":0.01191,"83":0.00596,"84":0.07744,"85":0.02383,"86":0.04766,"87":0.06553,"88":0.0834,"89":0.24424,"90":0.10127,"91":0.1251,"92":2.75809,"93":5.57575,"94":0.07148,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 34 35 36 37 38 39 40 41 42 45 46 49 50 51 53 54 55 59 62 64 67 69 74 75 95 3.5 3.6"},D:{"11":0.04766,"35":0.01191,"43":0.00596,"49":0.20254,"51":0.00596,"55":0.01191,"57":0.02383,"58":0.05361,"60":0.01787,"61":0.01191,"63":0.07148,"64":0.02383,"65":0.04766,"67":0.00596,"69":0.01191,"70":0.02383,"71":0.0417,"72":0.01191,"73":0.0417,"74":0.04766,"75":0.01787,"76":0.01787,"77":0.01787,"78":0.02383,"79":0.06553,"80":0.05361,"81":0.07148,"83":0.03574,"84":0.02979,"85":0.07744,"86":0.24424,"87":0.58974,"88":0.11914,"89":0.32764,"90":0.0834,"91":0.39912,"92":0.82207,"93":1.69179,"94":23.22634,"95":6.02848,"96":0.02383,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 44 45 46 47 48 50 52 53 54 56 59 62 66 68 97 98"},F:{"32":0.02383,"53":0.03574,"65":0.01191,"75":0.00596,"76":0.01191,"77":0.01787,"78":0.04766,"79":1.2748,"80":0.83398,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.46125,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00093,"5.0-5.1":0.00046,"6.0-6.1":0.00813,"7.0-7.1":0.04694,"8.1-8.4":0,"9.0-9.2":0.0072,"9.3":0.06297,"10.0-10.2":0.00604,"10.3":0.04229,"11.0-11.2":0.03346,"11.3-11.4":0.01208,"12.0-12.1":0.01139,"12.2-12.5":0.28419,"13.0-13.1":0.0237,"13.2":0.00627,"13.3":0.03462,"13.4-13.7":0.07947,"14.0-14.4":0.35436,"14.5-14.8":0.84838},B:{"12":0.01191,"14":0.01191,"15":0.01787,"16":0.00596,"17":0.02383,"18":0.06553,"84":0.01787,"85":0.01191,"89":0.02979,"90":0.01787,"91":0.01191,"92":0.1251,"93":0.13701,"94":2.60917,"95":0.6374,_:"13 79 80 81 83 86 87 88"},E:{"4":0,"6":0.01787,"13":0.05957,"14":0.13701,"15":0.13105,_:"0 5 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01191,"12.1":0.05957,"13.1":0.10127,"14.1":0.23828},P:{"4":0.15023,"5.0-5.4":0.01005,"6.2-6.4":0.07035,"7.2-7.4":0.03219,"8.2":0.0201,"9.2":0.05412,"10.1":0.04166,"11.1-11.2":0.05365,"12.0":0.03219,"13.0":0.30047,"14.0":0.07512,"15.0":0.56874},I:{"0":0,"3":0,"4":0.00105,"2.1":0,"2.2":0,"2.3":0.00026,"4.1":0.00617,"4.2-4.3":0.01916,"4.4":0,"4.4.3-4.4.4":0.07846},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01969,"9":0.01313,"11":0.35439,_:"6 7 10 5.5"},J:{"7":0,"10":0.02425},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.47696},Q:{"10.4":0.01213},O:{"0":2.55454},H:{"0":5.24259},L:{"0":34.30933},S:{"2.5":0.13743}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js
new file mode 100644
index 0000000000..156a1f145c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MH.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.01036,"63":0.03109,"68":0.04145,"78":0.13471,"80":0.01036,"84":0.02591,"85":0.01036,"89":0.04663,"90":0.01036,"91":0.04663,"92":0.59063,"93":0.74606,"94":0.04663,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 69 70 71 72 73 74 75 76 77 79 81 82 83 86 87 88 95 3.5 3.6"},D:{"36":0.01554,"37":0.01036,"49":0.03109,"69":0.01036,"72":0.04145,"73":0.84968,"74":0.01036,"75":0.07253,"76":0.03109,"79":0.03109,"84":0.1088,"87":0.04145,"88":0.03109,"89":0.06217,"90":0.07253,"91":0.03109,"92":0.08808,"93":1.48177,"94":26.07079,"95":7.17569,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 77 78 80 81 83 85 86 96 97 98"},F:{"51":0.02591,"78":0.02591,"79":0.05699,"80":0.05699,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.75617,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.05026,"10.0-10.2":0.00649,"10.3":0.1524,"11.0-11.2":0.28372,"11.3-11.4":0.02918,"12.0-12.1":0.05837,"12.2-12.5":0.6096,"13.0-13.1":0.02918,"13.2":0.02108,"13.3":0.14429,"13.4-13.7":0.24481,"14.0-14.4":4.82815,"14.5-14.8":6.99742},B:{"16":0.01554,"18":0.04663,"84":0.13989,"89":0.15025,"90":0.02591,"91":0.03109,"93":0.02591,"94":2.03095,"95":0.66835,_:"12 13 14 15 17 79 80 81 83 85 86 87 88 92"},E:{"4":0,"13":0.03109,"14":0.41966,"15":2.15012,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.87559,"13.1":0.8186,"14.1":1.51285},P:{"4":0.14986,"5.0-5.4":0.02141,"6.2-6.4":0.02055,"7.2-7.4":0.0107,"8.2":0.0201,"9.2":0.15411,"10.1":0.01027,"11.1-11.2":0.09634,"12.0":0.02141,"13.0":0.09635,"14.0":0.39609,"15.0":0.96346},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00761,"4.4":0,"4.4.3-4.4.4":0.01649},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.07526,"11":0.16307,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.0771},Q:{"10.4":0},O:{"0":0.22167},H:{"0":0.20987},L:{"0":34.02826},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js
new file mode 100644
index 0000000000..22c90a6c5f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MK.js
@@ -0,0 +1 @@
+module.exports={C:{"40":0.01845,"43":0.00369,"47":0.00738,"48":0.00738,"51":0.01476,"52":0.17338,"56":0.01107,"57":0.00369,"59":0.00369,"68":0.01476,"72":0.02213,"77":0.02582,"78":0.07747,"79":0.02213,"80":0.02213,"81":0.02213,"82":0.04058,"83":0.02213,"85":0.01476,"86":0.00738,"88":0.01476,"89":0.02951,"90":0.01107,"91":0.02213,"92":0.57917,"93":1.60472,"94":0.00738,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 44 45 46 49 50 53 54 55 58 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 84 87 95 3.5 3.6"},D:{"22":0.00738,"34":0.00369,"38":0.0332,"47":0.01845,"48":0.01107,"49":0.25454,"53":0.01476,"58":0.00738,"62":0.01107,"63":0.01845,"64":0.00369,"68":0.01476,"69":0.01107,"70":0.01476,"71":0.01107,"72":0.02582,"73":0.01107,"74":0.00738,"75":0.01107,"76":0.00369,"77":0.00738,"78":0.00738,"79":0.15863,"80":0.04796,"81":0.02582,"83":0.14756,"84":0.25823,"85":0.2693,"86":0.24347,"87":0.32832,"88":0.04796,"89":0.04427,"90":0.0664,"91":0.14018,"92":0.28774,"93":0.78945,"94":19.34881,"95":5.66262,"96":0.01107,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 50 51 52 54 55 56 57 59 60 61 65 66 67 97 98"},F:{"28":0.00738,"36":0.01107,"40":0.00738,"46":0.00738,"65":0.01476,"69":0.05165,"71":0.01476,"72":0.00369,"73":0.00738,"78":0.05902,"79":0.83003,"80":0.48695,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 70 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.73169,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00372,"6.0-6.1":0,"7.0-7.1":0.03103,"8.1-8.4":0,"9.0-9.2":0.00372,"9.3":0.05461,"10.0-10.2":0.00869,"10.3":0.06081,"11.0-11.2":0.03972,"11.3-11.4":0.04716,"12.0-12.1":0.04592,"12.2-12.5":0.66896,"13.0-13.1":0.01862,"13.2":0.01365,"13.3":0.15638,"13.4-13.7":0.38847,"14.0-14.4":0.94077,"14.5-14.8":7.1935},B:{"14":0.00369,"15":0.00369,"16":0.00369,"17":0.00369,"18":0.0332,"84":0.0332,"85":0.02582,"86":0.01845,"87":0.00369,"88":0.00738,"89":0.00738,"90":0.00369,"91":0.00738,"92":0.02582,"93":0.05534,"94":1.12515,"95":0.39472,_:"12 13 79 80 81 83"},E:{"4":0,"13":0.02582,"14":0.05534,"15":0.23241,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01107,"12.1":0.01107,"13.1":0.02582,"14.1":0.27668},P:{"4":0.09509,"5.0-5.4":0.01005,"6.2-6.4":0.07035,"7.2-7.4":0.01057,"8.2":0.0201,"9.2":0.05412,"10.1":0.04166,"11.1-11.2":0.12678,"12.0":0.0317,"13.0":0.14791,"14.0":0.13735,"15.0":1.81723},I:{"0":0,"3":0,"4":0.00111,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0039,"4.2-4.3":0.00613,"4.4":0,"4.4.3-4.4.4":0.02673},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"6":0.01476,"8":0.01476,"9":0.04427,"10":0.00369,"11":0.16232,_:"7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.10098},Q:{"10.4":0},O:{"0":0.02524},H:{"0":0.16132},L:{"0":49.07417},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js
new file mode 100644
index 0000000000..e7af672117
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ML.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00246,"47":0.00985,"52":0.00246,"72":0.01232,"78":0.05172,"84":0.00246,"87":0.00246,"88":0.00493,"89":0.01724,"90":0.01478,"91":0.01724,"92":0.7389,"93":2.17729,"94":0.00493,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"11":0.00246,"19":0.00246,"32":0.00739,"43":0.00985,"49":0.00739,"55":0.00493,"61":0.04926,"64":0.00493,"65":0.00493,"66":0.00493,"70":0.01478,"71":0.00493,"73":0.00739,"74":0.00246,"75":0.00246,"76":0.02463,"79":0.00246,"80":0.02956,"81":0.00985,"83":0.00985,"84":0.00493,"85":0.00493,"86":0.01724,"87":0.07389,"88":0.00985,"89":0.00739,"91":0.04187,"92":0.25615,"93":0.53693,"94":5.38904,"95":1.7906,"96":0.00246,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 62 63 67 68 69 72 77 78 90 97 98"},F:{"32":0.00246,"34":0.00246,"65":0.00739,"77":0.00493,"78":0.01232,"79":0.49753,"80":0.14039,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.50384,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02738,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.56549,"10.0-10.2":0,"10.3":0.27384,"11.0-11.2":0.21908,"11.3-11.4":0.02602,"12.0-12.1":0.02602,"12.2-12.5":2.7316,"13.0-13.1":0.0178,"13.2":0.00958,"13.3":0.18621,"13.4-13.7":0.66544,"14.0-14.4":1.89363,"14.5-14.8":3.53944},B:{"12":0.0197,"13":0.02709,"14":0.01232,"15":0.00739,"16":0.01232,"17":0.00985,"18":0.48275,"84":0.01724,"85":0.00246,"89":0.01478,"90":0.00493,"91":0.00493,"92":0.21921,"93":0.05419,"94":1.72164,"95":0.55418,_:"79 80 81 83 86 87 88"},E:{"4":0,"10":0.00739,"11":0.00246,"13":0.00739,"14":0.07143,"15":0.06896,_:"0 5 6 7 8 9 12 3.1 3.2 6.1 9.1 10.1","5.1":0.00246,"7.1":0.02709,"11.1":0.01232,"12.1":0.00985,"13.1":0.02956,"14.1":0.13054},P:{"4":0.22603,"5.0-5.4":0.03082,"6.2-6.4":0.02055,"7.2-7.4":0.40069,"8.2":0.0201,"9.2":0.15411,"10.1":0.01027,"11.1-11.2":0.24658,"12.0":0.07192,"13.0":0.26713,"14.0":0.33905,"15.0":1.42811},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00253,"4.2-4.3":0.00758,"4.4":0,"4.4.3-4.4.4":0.14062},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.24876,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.00754},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.09043},Q:{"10.4":0.00754},O:{"0":0.93446},H:{"0":0.7634},L:{"0":64.79965},S:{"2.5":0.07536}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js
new file mode 100644
index 0000000000..7786a956ee
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MM.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.00316,"17":0.00632,"19":0.00632,"27":0.00316,"29":0.00948,"30":0.00948,"35":0.00316,"36":0.00948,"37":0.00316,"38":0.00316,"39":0.00632,"40":0.00316,"41":0.01264,"42":0.00316,"43":0.00948,"44":0.00948,"45":0.00948,"47":0.0158,"48":0.00632,"49":0.00948,"50":0.00316,"52":0.00948,"54":0.00948,"56":0.04107,"57":0.0158,"59":0.00632,"60":0.0158,"61":0.00632,"62":0.00632,"67":0.00316,"68":0.0158,"69":0.00316,"70":0.00316,"71":0.00948,"72":0.02843,"73":0.00316,"76":0.00948,"77":0.00316,"78":0.04107,"79":0.00632,"80":0.03475,"81":0.00948,"82":0.00948,"83":0.01264,"84":0.02211,"85":0.00632,"86":0.00948,"87":0.00948,"88":0.03159,"89":0.07266,"90":0.03159,"91":0.0537,"92":0.94138,"93":2.30607,"94":0.24008,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 18 20 21 22 23 24 25 26 28 31 32 33 34 46 51 53 55 58 63 64 65 66 74 75 95 3.5 3.6"},D:{"23":0.00316,"24":0.00632,"25":0.00632,"31":0.00632,"32":0.00948,"37":0.00948,"38":0.03159,"39":0.00948,"47":0.00948,"48":0.03791,"49":0.08845,"53":0.01264,"55":0.00632,"56":0.00632,"57":0.00632,"58":0.00632,"61":0.00316,"63":0.02527,"65":0.00316,"66":0.00316,"67":0.00632,"68":0.00632,"69":0.00632,"70":0.00632,"71":0.03475,"72":0.00316,"73":0.00316,"74":0.01264,"75":0.00948,"76":0.00632,"77":0.00316,"78":0.00948,"79":0.09161,"80":0.02211,"81":0.02211,"83":0.02211,"84":0.02211,"85":0.01895,"86":0.05054,"87":0.21797,"88":0.08529,"89":0.14847,"90":0.05686,"91":0.12636,"92":0.28115,"93":0.51176,"94":13.06247,"95":3.98982,"96":0.01895,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 26 27 28 29 30 33 34 35 36 40 41 42 43 44 45 46 50 51 52 54 59 60 62 64 97 98"},F:{"28":0.00316,"36":0.00632,"64":0.00316,"65":0.00632,"73":0.00632,"74":0.00632,"77":0.00316,"78":0.02211,"79":0.44858,"80":0.26852,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 68 69 70 71 72 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.74279,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00089,"5.0-5.1":0.00799,"6.0-6.1":0.00444,"7.0-7.1":0.02308,"8.1-8.4":0.01154,"9.0-9.2":0.0071,"9.3":0.12871,"10.0-10.2":0.01065,"10.3":0.11983,"11.0-11.2":0.04527,"11.3-11.4":0.02574,"12.0-12.1":0.01864,"12.2-12.5":0.57519,"13.0-13.1":0.02663,"13.2":0.01864,"13.3":0.08077,"13.4-13.7":0.22102,"14.0-14.4":0.75182,"14.5-14.8":4.05204},B:{"12":0.01264,"14":0.02527,"16":0.00948,"17":0.00632,"18":0.04739,"84":0.00948,"85":0.00948,"86":0.00632,"89":0.03159,"90":0.02527,"91":0.00632,"92":0.02527,"93":0.04107,"94":1.90804,"95":0.75184,_:"13 15 79 80 81 83 87 88"},E:{"4":0.00316,"10":0.00632,"11":0.00632,"12":0.01264,"13":0.04739,"14":0.22745,"15":0.66655,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1","9.1":0.00316,"10.1":0.04107,"11.1":0.02527,"12.1":0.04739,"13.1":0.18954,"14.1":0.8782},P:{"4":0.34615,"5.0-5.4":0.01049,"6.2-6.4":0.01049,"7.2-7.4":0.05245,"8.2":0.03036,"9.2":0.02098,"10.1":0.02024,"11.1-11.2":0.08392,"12.0":0.03147,"13.0":0.11538,"14.0":0.12587,"15.0":1.24825},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00175,"4.2-4.3":0.01224,"4.4":0,"4.4.3-4.4.4":0.417},A:{"6":0.008,"7":0.004,"8":0.09203,"9":0.02001,"10":0.03601,"11":0.26009,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.301},Q:{"10.4":0.07525},O:{"0":2.90058},H:{"0":0.78367},L:{"0":54.48677},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js
new file mode 100644
index 0000000000..336bd1fd90
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MN.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.00886,"17":0.00443,"40":0.00443,"42":0.03102,"52":0.04875,"72":0.00886,"78":0.02216,"86":0.00443,"87":0.00886,"88":0.02216,"89":0.03102,"90":0.00886,"91":0.01773,"92":0.53627,"93":1.35619,"94":0.06205,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 95 3.5 3.6"},D:{"23":0.00443,"38":0.0133,"48":0.07091,"49":0.04432,"53":0.00886,"58":0.00443,"62":0.00886,"63":0.02659,"65":0.03546,"66":0.0133,"67":0.00886,"68":0.00886,"69":0.0133,"70":0.01773,"71":0.04875,"72":0.00886,"73":0.00886,"74":0.05762,"75":0.0133,"76":0.00443,"77":0.00886,"78":0.02216,"79":0.06205,"80":0.02216,"81":0.01773,"83":0.02216,"84":0.02659,"85":0.03102,"86":0.07534,"87":0.42104,"88":0.03546,"89":0.0975,"90":0.11523,"91":0.16842,"92":0.46093,"93":0.97061,"94":23.77768,"95":5.90342,"96":0.02216,"97":0.00886,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 50 51 52 54 55 56 57 59 60 61 64 98"},F:{"28":0.00443,"36":0.00886,"73":0.0133,"78":0.1108,"79":0.83322,"80":0.35899,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.41927,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00167,"6.0-6.1":0.00167,"7.0-7.1":0.01503,"8.1-8.4":0.00167,"9.0-9.2":0.00167,"9.3":0.14024,"10.0-10.2":0.00334,"10.3":0.08348,"11.0-11.2":0.03506,"11.3-11.4":0.06511,"12.0-12.1":0.06511,"12.2-12.5":1.33231,"13.0-13.1":0.04174,"13.2":0.0217,"13.3":0.19033,"13.4-13.7":0.48751,"14.0-14.4":2.29732,"14.5-14.8":8.48306},B:{"16":0.0133,"18":0.03102,"84":0.0133,"86":0.00443,"89":0.03102,"90":0.00443,"91":0.0133,"92":0.04432,"93":0.10637,"94":1.85258,"95":0.61162,_:"12 13 14 15 17 79 80 81 83 85 87 88"},E:{"4":0.00886,"12":0.00886,"13":0.02216,"14":0.34126,"15":0.4432,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00443,"10.1":0.01773,"11.1":0.03989,"12.1":0.03989,"13.1":0.10637,"14.1":0.73128},P:{"4":0.36961,"5.0-5.4":0.0616,"6.2-6.4":0.01083,"7.2-7.4":0.14374,"8.2":0.0103,"9.2":0.16427,"10.1":0.02059,"11.1-11.2":0.17454,"12.0":0.07187,"13.0":0.40041,"14.0":0.44148,"15.0":3.82957},I:{"0":0,"3":0,"4":0.00126,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00158,"4.2-4.3":0.00221,"4.4":0,"4.4.3-4.4.4":0.02837},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"6":0.03615,"7":0.03012,"8":0.13254,"9":0.03615,"10":0.0723,"11":0.46391,_:"5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.19488},Q:{"10.4":0.03898},O:{"0":0.11136},H:{"0":0.15814},L:{"0":35.16971},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js
new file mode 100644
index 0000000000..bea7b42e87
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MO.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.0044,"5":0.0044,"11":0.04836,"17":0.00879,"34":0.07034,"52":0.00879,"56":0.02638,"75":0.01319,"77":0.01758,"78":0.01319,"82":0.0044,"88":0.01319,"89":0.00879,"91":0.00879,"92":0.38685,"93":0.95393,_:"2 3 6 7 8 9 10 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 76 79 80 81 83 84 85 86 87 90 94 95 3.5 3.6"},D:{"22":0.03077,"24":0.0044,"26":0.03517,"30":0.01758,"34":0.06594,"38":0.20222,"45":0.0044,"49":0.19342,"53":0.09232,"54":0.01758,"55":0.03077,"57":0.01758,"58":0.03517,"61":0.04836,"62":0.02198,"63":0.02198,"65":0.0044,"66":0.01319,"67":0.03517,"68":0.02198,"69":0.07034,"70":0.01319,"71":0.03077,"72":0.02198,"73":0.03956,"74":0.04396,"75":0.03517,"76":0.02198,"77":0.03517,"78":0.08792,"79":0.30772,"80":0.04836,"81":0.07473,"83":0.03077,"84":0.00879,"85":0.01319,"86":0.14507,"87":0.09671,"88":0.07473,"89":0.1143,"90":0.20661,"91":0.23299,"92":1.13417,"93":1.33638,"94":16.68722,"95":3.61351,"96":0.02198,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 46 47 48 50 51 52 56 59 60 64 97 98"},F:{"28":0.0044,"36":0.06594,"40":0.0044,"46":0.07034,"70":0.00879,"78":0.01319,"79":0.15826,"80":0.07034,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.0062,"15":4.01869,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0031,"6.0-6.1":0.07436,"7.0-7.1":0.04648,"8.1-8.4":0.16112,"9.0-9.2":0.06507,"9.3":0.30055,"10.0-10.2":0.09605,"10.3":0.38421,"11.0-11.2":0.22309,"11.3-11.4":0.26337,"12.0-12.1":0.27266,"12.2-12.5":1.76922,"13.0-13.1":0.10845,"13.2":0.08676,"13.3":0.3904,"13.4-13.7":0.92644,"14.0-14.4":2.66467,"14.5-14.8":19.12364},B:{"17":0.01319,"18":0.05275,"89":0.02198,"92":0.00879,"93":0.04836,"94":2.14964,"95":0.57148,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 90 91"},E:{"4":0,"9":0.00879,"10":0.0044,"11":0.01319,"12":0.02198,"13":0.2242,"14":1.12977,"15":1.63531,_:"0 5 6 7 8 3.1 3.2 5.1 6.1 7.1","9.1":0.00879,"10.1":0.03517,"11.1":0.10111,"12.1":0.1055,"13.1":0.64182,"14.1":7.16108},P:{"4":0.80101,"5.0-5.4":0.01005,"6.2-6.4":0.07035,"7.2-7.4":0.01042,"8.2":0.0201,"9.2":0.05412,"10.1":0.04166,"11.1-11.2":0.09374,"12.0":0.01082,"13.0":0.09742,"14.0":0.09742,"15.0":1.78604},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00048,"4.2-4.3":0.00048,"4.4":0,"4.4.3-4.4.4":0.02146},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.73853,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.22416},Q:{"10.4":0.45392},O:{"0":0.81818},H:{"0":0.09019},L:{"0":21.64998},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js
new file mode 100644
index 0000000000..a898a6db5b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MP.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.10554,"76":0.00621,"78":0.01862,"86":0.01242,"88":0.1552,"91":0.01242,"92":0.59597,"93":1.0057,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 77 79 80 81 82 83 84 85 87 89 90 94 95 3.5 3.6"},D:{"38":0.01242,"49":0.01862,"55":0.01242,"61":0.00621,"63":0.01862,"65":0.03104,"67":0.04346,"69":0.00621,"73":0.00621,"76":0.03725,"79":0.21728,"80":0.01862,"81":0.18624,"83":0.00621,"84":0.09933,"85":0.04346,"87":0.14899,"88":0.02483,"89":0.06208,"90":0.02483,"91":0.19245,"92":1.98656,"93":3.73101,"94":26.49574,"95":6.84742,"96":0.01862,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 62 64 66 68 70 71 72 74 75 77 78 86 97 98"},F:{"28":0.01242,"77":0.00621,"78":0.90637,"79":1.17952,"80":0.58355,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.6151,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00226,"7.0-7.1":0.04968,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.21228,"10.0-10.2":0.00903,"10.3":0.81524,"11.0-11.2":0.33423,"11.3-11.4":0.0079,"12.0-12.1":0.01129,"12.2-12.5":0.8638,"13.0-13.1":0.00226,"13.2":0.01355,"13.3":0.06775,"13.4-13.7":0.07791,"14.0-14.4":1.10543,"14.5-14.8":5.10486},B:{"18":0.00621,"91":0.03104,"92":0.01242,"93":0.68288,"94":2.91776,"95":0.86291,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90"},E:{"4":0,"12":0.01242,"13":0.11174,"14":1.43405,"15":1.80032,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01242,"12.1":0.17382,"13.1":0.40973,"14.1":6.04659},P:{"4":0.28426,"5.0-5.4":0.01049,"6.2-6.4":0.01049,"7.2-7.4":0.04373,"8.2":0.03036,"9.2":0.02169,"10.1":0.02024,"11.1-11.2":0.0656,"12.0":0.02169,"13.0":0.02187,"14.0":0.04373,"15.0":5.53217},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},A:{"11":1.59546,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.15547},Q:{"10.4":0.00758},O:{"0":0.11376},H:{"0":0.00718},L:{"0":20.86938},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js
new file mode 100644
index 0000000000..6505618b66
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MQ.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01694,"56":0.00423,"60":0.06774,"78":0.05081,"82":0.17783,"84":0.02117,"87":0.00423,"88":0.00847,"89":0.04657,"90":0.0127,"91":0.03811,"92":1.29137,"93":3.63277,"94":0.00847,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 85 86 95 3.5 3.6"},D:{"38":0.03811,"49":0.04657,"58":0.03811,"63":0.02117,"65":0.01694,"67":0.0254,"68":0.00423,"72":0.00423,"74":0.00847,"75":0.00423,"76":0.00423,"78":0.0127,"79":0.02964,"80":0.00847,"81":0.00423,"83":0.00847,"84":0.00847,"86":0.00423,"87":0.03811,"88":0.00847,"89":0.05504,"90":0.0254,"91":0.10162,"92":0.28791,"93":1.36335,"94":15.89444,"95":4.43723,"96":0.0254,"97":0.00847,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 60 61 62 64 66 69 70 71 73 77 85 98"},F:{"46":0.00847,"73":0.00423,"78":0.12279,"79":0.52502,"80":0.38106,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.12976,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00134,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00267,"9.3":0.64623,"10.0-10.2":0,"10.3":0.04673,"11.0-11.2":0.00401,"11.3-11.4":0.14821,"12.0-12.1":0.00801,"12.2-12.5":0.47933,"13.0-13.1":0.0227,"13.2":0.00801,"13.3":0.10014,"13.4-13.7":0.15622,"14.0-14.4":1.08017,"14.5-14.8":6.51708},B:{"12":0.00423,"14":0.00423,"16":0.00847,"17":0.00847,"18":0.02964,"80":0.00423,"84":0.0127,"88":0.00423,"89":0.0127,"90":0.00423,"91":0.02964,"92":0.0254,"93":0.24557,"94":3.66241,"95":1.0712,_:"13 15 79 81 83 85 86 87"},E:{"4":0,"12":0.00423,"13":0.2371,"14":0.60123,"15":1.5073,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00847,"11.1":0.0254,"12.1":0.22864,"13.1":0.39376,"14.1":2.73516},P:{"4":0.03131,"5.0-5.4":0.02141,"6.2-6.4":0.02055,"7.2-7.4":0.06261,"8.2":0.0201,"9.2":0.11479,"10.1":0.01027,"11.1-11.2":0.32349,"12.0":0.09392,"13.0":0.22957,"14.0":0.39653,"15.0":4.71664},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00061,"4.4":0,"4.4.3-4.4.4":0.01093},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.4234,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.34025},Q:{"10.4":0},O:{"0":0.0692},H:{"0":0.20747},L:{"0":39.22239},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js
new file mode 100644
index 0000000000..1bd2af9888
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MR.js
@@ -0,0 +1 @@
+module.exports={C:{"14":0.00333,"34":0.00333,"36":0.00333,"37":0.00167,"38":0.01166,"43":0.00333,"47":0.005,"48":0.00333,"49":0.0716,"52":0.13986,"54":0.00167,"56":0.00333,"57":0.005,"60":0.00333,"68":0.01166,"72":0.00666,"73":0.00167,"78":0.03164,"79":0.005,"82":0.01166,"84":0.00167,"85":0.005,"88":0.03164,"89":0.01665,"90":0.01166,"91":0.005,"92":0.35132,"93":0.94905,"94":0.00167,_:"2 3 4 5 6 7 8 9 10 11 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 39 40 41 42 44 45 46 50 51 53 55 58 59 61 62 63 64 65 66 67 69 70 71 74 75 76 77 80 81 83 86 87 95 3.5 3.6"},D:{"19":0.00333,"26":0.005,"33":0.02498,"37":0.00167,"38":0.005,"39":0.005,"40":0.00999,"43":0.03663,"44":0.00333,"46":0.00666,"48":0.01166,"49":0.00333,"53":0.01166,"56":0.00333,"57":0.15485,"60":0.00333,"63":0.01998,"64":0.005,"65":0.00833,"69":0.00333,"70":0.04163,"71":0.00333,"72":0.00333,"73":0.01166,"74":0.01998,"75":0.00666,"76":0.01665,"77":0.00666,"78":0.00167,"79":0.00999,"80":0.02831,"81":0.01832,"83":0.01665,"84":0.00833,"85":0.02997,"86":0.02331,"87":0.27306,"88":0.01665,"89":0.02997,"90":0.02498,"91":0.1332,"92":0.12821,"93":0.35298,"94":6.26207,"95":1.7649,"96":0.00833,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 21 22 23 24 25 27 28 29 30 31 32 34 35 36 41 42 45 47 50 51 52 54 55 58 59 61 62 66 67 68 97 98"},F:{"40":0.00833,"50":0.005,"76":0.005,"77":0.01832,"78":0.00333,"79":0.22977,"80":0.05828,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00217,"15":1.61625,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00217,"6.0-6.1":0.00108,"7.0-7.1":0.01408,"8.1-8.4":0,"9.0-9.2":0.0585,"9.3":0.02383,"10.0-10.2":0.00217,"10.3":0.04441,"11.0-11.2":0.19716,"11.3-11.4":0.14949,"12.0-12.1":0.04441,"12.2-12.5":1.45159,"13.0-13.1":0.04983,"13.2":0.02817,"13.3":0.15274,"13.4-13.7":0.40948,"14.0-14.4":2.08748,"14.5-14.8":4.49344},B:{"12":0.005,"13":0.005,"14":0.005,"15":0.01332,"16":0.00333,"17":0.01332,"18":0.03497,"84":0.005,"85":0.00666,"87":0.005,"89":0.00833,"90":0.00833,"91":0.01665,"92":0.02498,"93":0.02165,"94":0.78255,"95":0.21479,_:"79 80 81 83 86 88"},E:{"4":0.00167,"14":0.16151,"15":0.08159,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 6.1 7.1","5.1":0.00333,"9.1":0.00167,"10.1":0.00167,"11.1":0.005,"12.1":0.00333,"13.1":0.02664,"14.1":0.13154},P:{"4":0.89599,"5.0-5.4":0.04027,"6.2-6.4":0.08054,"7.2-7.4":1.24835,"8.2":0.0201,"9.2":0.18121,"10.1":0.0604,"11.1-11.2":0.92619,"12.0":0.07047,"13.0":0.44296,"14.0":0.74498,"15.0":1.85239},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.001,"4.2-4.3":0.00359,"4.4":0,"4.4.3-4.4.4":0.03709},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"6":0.00909,"7":0.01363,"8":0.02726,"9":0.01817,"10":0.02272,"11":0.85864,_:"5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.22507},Q:{"10.4":0.03334},O:{"0":0.45848},H:{"0":0.69449},L:{"0":66.85157},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js
new file mode 100644
index 0000000000..03ac959b2e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MS.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.05531,"92":0.11062,"93":0.16594,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 91 94 95 3.5 3.6"},D:{"55":0.05531,"81":1.29983,"87":7.75751,"92":0.11062,"93":0.81585,"94":22.61569,"95":2.97993,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 88 89 90 91 96 97 98"},F:{"79":0.21433,"80":0.05531,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.5428,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.06757,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.11299,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":2.64534,"14.0-14.4":0,"14.5-14.8":2.17066},B:{"13":0.16594,"14":0.11062,"91":1.41046,"94":18.59866,"95":1.79073,_:"12 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 92 93"},E:{"4":0,"14":0.16594,"15":8.35211,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 12.1 13.1","10.1":0.05531,"11.1":0.05531,"14.1":0.97487},P:{"4":3.00633,"5.0-5.4":0.0616,"6.2-6.4":0.01083,"7.2-7.4":0.04152,"8.2":0.0103,"9.2":0.02076,"10.1":0.04152,"11.1-11.2":0.23734,"12.0":0.03114,"13.0":0.14532,"14.0":0.13494,"15.0":1.10759},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.08024},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.86425,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.23762},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":20.92116},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js
new file mode 100644
index 0000000000..ab3a380259
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MT.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00603,"48":0.00603,"52":0.03015,"67":0.01809,"78":0.01809,"88":0.03617,"89":0.01206,"90":0.00603,"91":0.03617,"92":0.45218,"93":1.32035,"94":0.00603,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 95 3.5 3.6"},D:{"49":0.20499,"53":0.00603,"65":0.01809,"67":0.03617,"69":0.09044,"72":0.00603,"74":0.01809,"75":0.00603,"76":0.01206,"77":0.11455,"78":0.01206,"79":0.03617,"80":0.03617,"81":0.01809,"83":0.02412,"85":0.03015,"86":0.0422,"87":0.12058,"88":0.02412,"89":0.12661,"90":0.06029,"91":0.15073,"92":0.52452,"93":1.71224,"94":32.62895,"95":8.63956,"96":0.01206,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 68 70 71 73 84 97 98"},F:{"67":0.03617,"72":0.03015,"78":0.06029,"79":1.05508,"80":0.67525,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 68 69 70 71 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.11809,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00246,"6.0-6.1":0,"7.0-7.1":0.00493,"8.1-8.4":0.02218,"9.0-9.2":0,"9.3":0.08874,"10.0-10.2":0.01232,"10.3":0.2773,"11.0-11.2":0.02342,"11.3-11.4":0.02095,"12.0-12.1":0.03081,"12.2-12.5":0.40794,"13.0-13.1":0.01356,"13.2":0.00616,"13.3":0.03944,"13.4-13.7":0.15652,"14.0-14.4":0.85778,"14.5-14.8":7.2394},B:{"14":0.00603,"15":0.01206,"18":0.0422,"84":0.00603,"85":0.01206,"88":0.05426,"89":0.00603,"90":0.01809,"91":0.01809,"92":0.02412,"93":0.12058,"94":3.949,"95":1.27815,_:"12 13 16 17 79 80 81 83 86 87"},E:{"4":0,"11":0.03015,"12":0.00603,"13":0.03617,"14":0.6451,"15":1.34447,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00603,"11.1":0.09646,"12.1":0.06632,"13.1":0.40997,"14.1":2.31514},P:{"4":0.14986,"5.0-5.4":0.03082,"6.2-6.4":0.02055,"7.2-7.4":0.0107,"8.2":0.0201,"9.2":0.15411,"10.1":0.01027,"11.1-11.2":0.09634,"12.0":0.0107,"13.0":0.09634,"14.0":0.10704,"15.0":2.72963},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00162,"4.2-4.3":0.00567,"4.4":0,"4.4.3-4.4.4":0.0761},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.25925,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.23826},Q:{"10.4":0},O:{"0":0.14296},H:{"0":0.06015},L:{"0":24.15447},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js
new file mode 100644
index 0000000000..11832fb25e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MU.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.01096,"52":0.04932,"69":0.00548,"78":0.06028,"88":0.01096,"90":0.01096,"91":0.0274,"92":0.44936,"93":1.12888,"94":0.01644,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 89 95 3.5 3.6"},D:{"23":0.01644,"34":0.0274,"38":0.04384,"39":0.01644,"43":0.01096,"49":0.11508,"53":0.01644,"55":0.00548,"58":0.01096,"63":0.00548,"65":0.00548,"70":0.00548,"71":0.01096,"73":0.01096,"74":0.02192,"76":0.00548,"77":0.06028,"78":0.02192,"79":0.15344,"80":0.0274,"81":0.02192,"83":0.03836,"84":0.0274,"85":0.04932,"86":0.01644,"87":0.48772,"88":0.0822,"89":0.02192,"90":0.06576,"91":0.29592,"92":0.36716,"93":2.10432,"94":31.87168,"95":7.29936,"96":0.03288,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 35 36 37 40 41 42 44 45 46 47 48 50 51 52 54 56 57 59 60 61 62 64 66 67 68 69 72 75 97 98"},F:{"28":0.01096,"78":0.03288,"79":0.37264,"80":0.15344,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.26589,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0237,"6.0-6.1":0.00044,"7.0-7.1":0.0338,"8.1-8.4":0.01536,"9.0-9.2":0,"9.3":0.09569,"10.0-10.2":0.00307,"10.3":0.05618,"11.0-11.2":0.00922,"11.3-11.4":0.00834,"12.0-12.1":0.02853,"12.2-12.5":0.28487,"13.0-13.1":0.00878,"13.2":0.00132,"13.3":0.02678,"13.4-13.7":0.07989,"14.0-14.4":0.2796,"14.5-14.8":2.16747},B:{"12":0.0274,"14":0.01644,"16":0.01096,"17":0.01096,"18":0.03836,"83":0.04932,"84":0.00548,"85":0.00548,"86":0.00548,"87":0.00548,"89":0.00548,"91":0.01096,"92":0.0274,"93":0.04932,"94":3.56748,"95":1.4796,_:"13 15 79 80 81 88 90"},E:{"4":0,"12":0.03836,"13":0.01644,"14":0.23016,"15":0.44936,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00548,"11.1":0.03288,"12.1":0.03288,"13.1":0.12056,"14.1":0.69048},P:{"4":0.28828,"5.0-5.4":0.04027,"6.2-6.4":0.08054,"7.2-7.4":0.17502,"8.2":0.0103,"9.2":0.05148,"10.1":0.02059,"11.1-11.2":0.12355,"12.0":0.10296,"13.0":0.2368,"14.0":0.31916,"15.0":3.11955},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00271,"4.2-4.3":0.00353,"4.4":0,"4.4.3-4.4.4":0.03444},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.66308,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.16272},Q:{"10.4":0.01808},O:{"0":0.565},H:{"0":0.39797},L:{"0":36.052},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js
new file mode 100644
index 0000000000..27e242f117
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MV.js
@@ -0,0 +1 @@
+module.exports={C:{"50":0.00548,"51":0.00274,"52":0.03836,"58":0.00274,"59":0.00548,"60":0.00274,"61":0.00822,"63":0.00274,"66":0.01096,"70":0.00822,"72":0.00822,"78":0.01644,"80":0.00274,"83":0.00548,"84":0.00822,"85":0.00548,"89":0.00822,"90":0.01918,"91":0.03562,"92":0.3014,"93":0.87406,"94":0.02192,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 53 54 55 56 57 62 64 65 67 68 69 71 73 74 75 76 77 79 81 82 86 87 88 95 3.5 3.6"},D:{"38":0.00274,"39":0.00548,"47":0.00274,"49":0.1918,"50":0.00548,"56":0.01644,"57":0.00548,"58":0.00274,"59":0.00274,"63":0.00548,"65":0.00548,"69":0.00274,"70":0.00822,"72":0.00274,"73":0.02466,"74":0.01918,"75":0.00548,"76":0.01644,"77":0.00548,"78":0.01644,"79":0.05206,"80":0.02192,"81":0.04658,"83":0.01644,"84":0.06028,"85":0.03014,"86":0.0548,"87":0.12056,"88":0.02192,"89":0.01918,"90":0.03836,"91":0.11782,"92":0.30962,"93":0.89598,"94":15.0015,"95":3.57844,"96":0.00274,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 48 51 52 53 54 55 60 61 62 64 66 67 68 71 97 98"},F:{"68":0.05206,"75":0.00548,"78":0.03562,"79":0.25482,"80":0.0959,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":7.83625,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00597,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00199,"9.3":0.02985,"10.0-10.2":0.00796,"10.3":0.02388,"11.0-11.2":0.00796,"11.3-11.4":0.0199,"12.0-12.1":0.01791,"12.2-12.5":0.62284,"13.0-13.1":0.03383,"13.2":0.01194,"13.3":0.08955,"13.4-13.7":0.23481,"14.0-14.4":1.51233,"14.5-14.8":9.42818},B:{"12":0.0137,"13":0.00274,"14":0.00548,"15":0.01096,"16":0.00822,"17":0.03014,"18":0.03014,"80":0.00822,"81":0.00548,"83":0.02466,"84":0.00822,"85":0.00274,"86":0.00548,"87":0.00274,"89":0.0137,"90":0.00548,"91":0.00822,"92":0.0411,"93":0.04384,"94":0.99462,"95":0.34798,_:"79 88"},E:{"4":0,"10":0.00274,"11":0.00548,"12":0.00548,"13":0.03014,"14":0.16166,"15":0.44662,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00548,"12.1":0.01644,"13.1":0.08768,"14.1":0.80008},P:{"4":0.01042,"5.0-5.4":0.02048,"6.2-6.4":0.03072,"7.2-7.4":0.05212,"8.2":0.0201,"9.2":0.01042,"10.1":0.03072,"11.1-11.2":0.03127,"12.0":0.07297,"13.0":0.1251,"14.0":0.25019,"15.0":1.88686},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01878,"4.4":0,"4.4.3-4.4.4":0.19902},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00279,"11":0.15613,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.6171},Q:{"10.4":0},O:{"0":1.13256},H:{"0":0.42614},L:{"0":48.96914},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js
new file mode 100644
index 0000000000..91bf9b7f53
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MW.js
@@ -0,0 +1 @@
+module.exports={C:{"5":0.01014,"17":0.00676,"18":0.00676,"29":0.02028,"34":0.00676,"42":0.00338,"43":0.00338,"46":0.00338,"52":0.05408,"56":0.01352,"59":0.02704,"61":0.01014,"63":0.04056,"65":0.00338,"68":0.00676,"69":0.02704,"71":0.00676,"72":0.01352,"73":0.00338,"78":0.07098,"80":0.01014,"81":0.00338,"84":0.00338,"85":0.00676,"86":0.00676,"87":0.01352,"88":0.07098,"89":0.05408,"90":0.01352,"91":0.0676,"92":0.99034,"93":1.79478,"94":0.27716,_:"2 3 4 6 7 8 9 10 11 12 13 14 15 16 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 36 37 38 39 40 41 44 45 47 48 49 50 51 53 54 55 57 58 60 62 64 66 67 70 74 75 76 77 79 82 83 95 3.5 3.6"},D:{"11":0.00338,"20":0.01014,"33":0.0169,"40":0.00676,"42":0.00676,"43":0.00338,"44":0.00338,"49":0.01014,"50":0.00338,"55":0.01014,"56":0.00338,"57":0.01014,"58":0.01014,"59":0.01014,"60":0.00338,"61":0.00676,"63":0.02028,"64":0.01014,"65":0.00676,"66":0.00676,"67":0.07774,"68":0.00676,"69":0.16224,"70":0.0169,"71":0.02366,"72":0.01014,"74":0.02366,"75":0.04056,"76":0.0169,"77":0.0169,"78":0.03718,"79":0.06422,"80":0.02704,"81":0.02366,"83":0.02028,"84":0.0169,"85":0.01352,"86":0.06084,"87":0.16224,"88":0.11492,"89":0.02704,"90":0.09802,"91":0.17914,"92":0.44954,"93":0.64896,"94":10.13324,"95":2.73104,"96":0.02028,"97":0.0169,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 41 45 46 47 48 51 52 53 54 62 73 98"},F:{"34":0.00676,"35":0.00676,"37":0.00338,"42":0.00338,"50":0.00338,"63":0.00676,"64":0.24336,"65":0.01014,"76":0.02366,"77":0.01014,"78":0.03718,"79":0.67262,"80":0.31434,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 36 38 39 40 41 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 60 62 66 67 68 69 70 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00676},G:{"8":0.00139,"15":0.50351,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00347,"5.0-5.1":0.00485,"6.0-6.1":0.00416,"7.0-7.1":0.00508,"8.1-8.4":0.00046,"9.0-9.2":0.00416,"9.3":0.04945,"10.0-10.2":0.00139,"10.3":0.0409,"11.0-11.2":0.00901,"11.3-11.4":0.00601,"12.0-12.1":0.01294,"12.2-12.5":0.19803,"13.0-13.1":0.01155,"13.2":0.00393,"13.3":0.01594,"13.4-13.7":0.10583,"14.0-14.4":0.44713,"14.5-14.8":0.88085},B:{"12":0.09126,"13":0.02704,"14":0.03042,"15":0.0507,"16":0.0507,"17":0.05408,"18":0.34476,"81":0.00338,"84":0.04056,"85":0.02366,"86":0.02028,"87":0.00676,"88":0.00338,"89":0.05408,"90":0.07436,"91":0.20618,"92":0.1521,"93":0.29068,"94":2.13954,"95":0.5746,_:"79 80 83"},E:{"4":0,"11":0.00338,"12":0.00676,"13":0.00676,"14":0.05408,"15":0.06422,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.04394,"11.1":0.00676,"12.1":0.02028,"13.1":0.16562,"14.1":0.13858},P:{"4":0.40955,"5.0-5.4":0.02048,"6.2-6.4":0.03072,"7.2-7.4":0.15358,"8.2":0.0201,"9.2":0.03072,"10.1":0.03072,"11.1-11.2":0.10239,"12.0":0.12287,"13.0":0.27645,"14.0":0.3174,"15.0":1.10579},I:{"0":0,"3":0,"4":0.00242,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00485,"4.2-4.3":0.01334,"4.4":0,"4.4.3-4.4.4":0.22429},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01889,"10":0.01259,"11":0.28962,_:"6 7 9 5.5"},J:{"7":0,"10":0.13238},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.19195},Q:{"10.4":0.19857},O:{"0":6.54619},H:{"0":11.04774},L:{"0":49.09457},S:{"2.5":0.04633}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js
new file mode 100644
index 0000000000..ca1e21dac5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MX.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.70665,"52":0.02735,"56":0.00456,"62":0.00456,"68":0.00456,"73":0.00456,"78":0.06839,"84":0.01368,"88":0.01824,"89":0.00912,"90":0.0228,"91":0.0228,"92":0.49693,"93":1.18534,"94":0.01368,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 63 64 65 66 67 69 70 71 72 74 75 76 77 79 80 81 82 83 85 86 87 95 3.5 3.6"},D:{"22":0.00912,"34":0.00456,"38":0.01368,"49":0.10942,"52":0.01368,"58":0.00912,"61":0.04103,"63":0.00912,"65":0.01368,"66":0.0228,"67":0.01368,"69":0.00912,"70":0.00912,"71":0.00456,"72":0.01368,"73":0.00456,"74":0.00912,"75":0.01368,"76":0.03191,"77":0.01368,"78":0.09118,"79":0.08662,"80":0.02735,"81":0.0228,"83":0.0228,"84":0.03647,"85":0.02735,"86":0.03647,"87":0.20971,"88":0.09574,"89":0.05471,"90":0.08206,"91":0.16412,"92":0.39663,"93":1.13519,"94":23.62474,"95":5.86287,"96":0.01824,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 59 60 62 64 68 97 98"},F:{"77":0.00456,"78":0.0775,"79":0.93004,"80":0.41943,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.48422,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00457,"6.0-6.1":0.00183,"7.0-7.1":0.01189,"8.1-8.4":0.01006,"9.0-9.2":0.01372,"9.3":0.08692,"10.0-10.2":0.00274,"10.3":0.06588,"11.0-11.2":0.01281,"11.3-11.4":0.04392,"12.0-12.1":0.01372,"12.2-12.5":0.54076,"13.0-13.1":0.01372,"13.2":0.00823,"13.3":0.04849,"13.4-13.7":0.16653,"14.0-14.4":0.55357,"14.5-14.8":5.06268},B:{"12":0.00912,"14":0.00456,"15":0.00456,"16":0.00456,"17":0.00912,"18":0.03191,"84":0.00456,"85":0.00912,"89":0.01368,"90":0.00912,"91":0.01368,"92":0.02735,"93":0.14589,"94":2.79923,"95":0.77959,_:"13 79 80 81 83 86 87 88"},E:{"4":0,"12":0.00456,"13":0.03647,"14":0.24619,"15":0.69297,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1","5.1":0.03647,"9.1":0.00456,"10.1":0.00912,"11.1":0.03191,"12.1":0.04103,"13.1":0.21427,"14.1":1.0121},P:{"4":0.12811,"5.0-5.4":0.01012,"6.2-6.4":0.08086,"7.2-7.4":0.07473,"8.2":0.03036,"9.2":0.02122,"10.1":0.02024,"11.1-11.2":0.05338,"12.0":0.02135,"13.0":0.05338,"14.0":0.08541,"15.0":0.99286},I:{"0":0,"3":0,"4":0.00111,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00278,"4.2-4.3":0.005,"4.4":0,"4.4.3-4.4.4":0.04553},A:{"8":0.01984,"9":0.00992,"10":0.00992,"11":0.24299,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.17411},Q:{"10.4":0},O:{"0":0.06529},H:{"0":0.2112},L:{"0":45.5156},S:{"2.5":0.00544}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js
new file mode 100644
index 0000000000..382a4375fe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MY.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.01673,"39":0.00836,"52":0.02927,"60":0.02509,"63":0.00418,"72":0.00418,"78":0.03346,"80":0.00836,"81":0.00418,"82":0.00418,"84":0.02509,"85":0.00418,"88":0.01255,"89":0.01255,"90":0.00836,"91":0.01673,"92":0.40984,"93":1.19187,"94":0.03764,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 64 65 66 67 68 69 70 71 73 74 75 76 77 79 83 86 87 95 3.5 3.6"},D:{"22":0.00836,"25":0.02091,"34":0.02509,"38":0.09619,"47":0.01255,"49":0.092,"53":0.08782,"55":0.08364,"56":0.02927,"58":0.00836,"59":0.02927,"60":0.00418,"62":0.01255,"63":0.00418,"65":0.01255,"66":0.00836,"67":0.01673,"68":0.01255,"69":0.01673,"70":0.02927,"71":0.01673,"72":0.01673,"73":0.03346,"74":0.02091,"75":0.04182,"76":0.02091,"77":0.01673,"78":0.02509,"79":0.29274,"80":0.02927,"81":0.05437,"83":0.05437,"84":0.03764,"85":0.04182,"86":0.05855,"87":0.18401,"88":0.12546,"89":0.06273,"90":0.07109,"91":0.15473,"92":0.58966,"93":1.15841,"94":23.91686,"95":4.61275,"96":0.02509,"97":0.00418,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 57 61 64 98"},F:{"28":0.01673,"36":0.05437,"40":0.01255,"46":0.05018,"78":0.02091,"79":0.30529,"80":0.12128,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00493,"15":3.51896,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00246,"5.0-5.1":0.01355,"6.0-6.1":0.01602,"7.0-7.1":0.0308,"8.1-8.4":0.04066,"9.0-9.2":0.01848,"9.3":0.26614,"10.0-10.2":0.02218,"10.3":0.20207,"11.0-11.2":0.02834,"11.3-11.4":0.0382,"12.0-12.1":0.06161,"12.2-12.5":0.8206,"13.0-13.1":0.04559,"13.2":0.02095,"13.3":0.11089,"13.4-13.7":0.30064,"14.0-14.4":1.15697,"14.5-14.8":5.60249},B:{"17":0.00418,"18":0.01673,"84":0.00836,"89":0.00418,"91":0.00836,"92":0.01673,"93":0.04182,"94":1.5557,"95":0.38056,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 90"},E:{"4":0,"8":0.00418,"13":0.05437,"14":0.29692,"15":0.78203,_:"0 5 6 7 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00836,"11.1":0.02091,"12.1":0.02927,"13.1":0.16728,"14.1":1.7648},P:{"4":0.74255,"5.0-5.4":0.01012,"6.2-6.4":0.08086,"7.2-7.4":0.07426,"8.2":0.03036,"9.2":0.02122,"10.1":0.02024,"11.1-11.2":0.09547,"12.0":0.03182,"13.0":0.09547,"14.0":0.14851,"15.0":1.43207},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0026,"4.2-4.3":0.00607,"4.4":0,"4.4.3-4.4.4":0.03206},A:{"7":0.01094,"8":0.00547,"9":0.00547,"11":0.19141,_:"6 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.14545},Q:{"10.4":0.02909},O:{"0":1.18105},H:{"0":0.68301},L:{"0":42.38532},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js
new file mode 100644
index 0000000000..95920b061a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/MZ.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00849,"57":0.04245,"68":0.00425,"72":0.00425,"78":0.02547,"84":0.05519,"85":0.00425,"88":0.02123,"89":0.02547,"90":0.01274,"91":0.00849,"92":0.30989,"93":1.17587,"94":0.02123,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 86 87 95 3.5 3.6"},D:{"24":0.00425,"33":0.16556,"40":0.0849,"43":0.09339,"49":0.08066,"50":0.01274,"55":0.03396,"56":0.01698,"57":0.00849,"60":0.11037,"62":0.01274,"63":0.05094,"65":0.00849,"69":0.00849,"70":0.01274,"71":0.00849,"72":0.00849,"74":0.05943,"75":0.00849,"79":0.05519,"80":0.00849,"81":0.15282,"83":0.01274,"84":0.00849,"85":0.01274,"86":0.03396,"87":0.38205,"88":0.02972,"89":0.02972,"90":0.02547,"91":0.09339,"92":0.28017,"93":0.67071,"94":13.04489,"95":4.51668,"96":0.01274,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 34 35 36 37 38 39 41 42 44 45 46 47 48 51 52 53 54 58 59 61 64 66 67 68 73 76 77 78 97 98"},F:{"46":0.01274,"51":0.00849,"53":0.00425,"65":0.00849,"77":0.0467,"78":0.02972,"79":1.81262,"80":1.24379,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 52 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00494,"15":0.63335,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00439,"6.0-6.1":0.00165,"7.0-7.1":0.02248,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.06196,"10.0-10.2":0.00603,"10.3":0.3334,"11.0-11.2":0.02413,"11.3-11.4":0.06416,"12.0-12.1":0.05429,"12.2-12.5":1.60833,"13.0-13.1":0.01206,"13.2":0.01042,"13.3":0.06471,"13.4-13.7":0.15025,"14.0-14.4":0.76441,"14.5-14.8":1.66262},B:{"12":0.03821,"13":0.00849,"14":0.02972,"15":0.01698,"16":0.03396,"17":0.01274,"18":0.11886,"84":0.00849,"85":0.01274,"89":0.05943,"90":0.01274,"91":0.05094,"92":0.10613,"93":0.10613,"94":1.81686,"95":0.44148,_:"79 80 81 83 86 87 88"},E:{"4":0,"13":0.00849,"14":0.03396,"15":0.08915,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00425,"11.1":0.00849,"12.1":0.00849,"13.1":0.07217,"14.1":0.16131},P:{"4":2.1302,"5.0-5.4":0.0616,"6.2-6.4":0.01019,"7.2-7.4":0.24462,"8.2":0.06115,"9.2":0.08154,"10.1":0.02038,"11.1-11.2":0.1325,"12.0":0.11212,"13.0":0.10192,"14.0":0.16308,"15.0":0.64212},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00085,"4.2-4.3":0.0032,"4.4":0,"4.4.3-4.4.4":0.03047},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.32262,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.02302},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.04028},Q:{"10.4":0.02302},O:{"0":0.43155},H:{"0":5.76347},L:{"0":54.86753},S:{"2.5":0.04603}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js
new file mode 100644
index 0000000000..7df2ed08c4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NA.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.0075,"37":0.0075,"47":0.0075,"48":0.0075,"49":0.00375,"52":0.0375,"56":0.015,"60":0.01125,"67":0.015,"78":0.06375,"80":0.00375,"82":0.0225,"83":0.01125,"86":0.00375,"87":0.00375,"88":0.01125,"89":0.0375,"91":0.0225,"92":0.6675,"93":1.49625,"94":0.0825,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 41 42 43 44 45 46 50 51 53 54 55 57 58 59 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 79 81 84 85 90 95 3.5 3.6"},D:{"37":0.0075,"43":0.0225,"48":0.015,"49":0.075,"55":0.0075,"57":0.0075,"58":0.0075,"60":0.0075,"62":0.0075,"63":0.02625,"64":0.0075,"65":0.00375,"66":0.00375,"67":0.06375,"69":0.09375,"70":0.03375,"71":0.0075,"73":0.01125,"74":0.0075,"75":0.01125,"76":0.045,"77":0.01125,"78":0.0075,"79":0.045,"80":0.01875,"81":0.0225,"83":0.02625,"84":0.015,"85":0.0075,"86":0.0525,"87":0.07875,"88":0.0375,"89":0.0525,"90":0.06,"91":0.15,"92":0.4875,"93":1.23375,"94":15.57375,"95":4.27875,"96":0.015,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 44 45 46 47 50 51 52 53 54 56 59 61 68 72 97 98"},F:{"65":0.00375,"77":0.01125,"78":0.01875,"79":0.90375,"80":0.31125,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.38698,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01518,"6.0-6.1":0,"7.0-7.1":0.00924,"8.1-8.4":0.04883,"9.0-9.2":0.00396,"9.3":0.05345,"10.0-10.2":0.00858,"10.3":0.25272,"11.0-11.2":0.01386,"11.3-11.4":0.05675,"12.0-12.1":0.05939,"12.2-12.5":0.6407,"13.0-13.1":0.00396,"13.2":0.00462,"13.3":0.04751,"13.4-13.7":0.12867,"14.0-14.4":0.59715,"14.5-14.8":3.26223},B:{"12":0.03,"13":0.03,"14":0.01125,"15":0.015,"16":0.03375,"17":0.0375,"18":0.15,"80":0.00375,"84":0.01875,"85":0.01125,"86":0.00375,"88":0.015,"89":0.03375,"90":0.015,"91":0.02625,"92":0.0675,"93":0.13125,"94":2.91375,"95":0.9075,_:"79 81 83 87"},E:{"4":0,"10":0.00375,"11":0.00375,"12":0.0075,"13":0.015,"14":0.12375,"15":0.3975,_:"0 5 6 7 8 9 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.0075,"11.1":0.01875,"12.1":0.03,"13.1":0.13125,"14.1":0.71625},P:{"4":0.4979,"5.0-5.4":0.0616,"6.2-6.4":0.01016,"7.2-7.4":1.25999,"8.2":0.06115,"9.2":0.06097,"10.1":0.02032,"11.1-11.2":0.39629,"12.0":0.07113,"13.0":0.39629,"14.0":0.44709,"15.0":3.22111},I:{"0":0,"3":0,"4":0.00043,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00152,"4.2-4.3":0.0076,"4.4":0,"4.4.3-4.4.4":0.04669},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.00967,"11":0.80783,_:"6 7 8 10 5.5"},J:{"7":0,"10":0.01875},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.3375},Q:{"10.4":0},O:{"0":0.64375},H:{"0":1.65087},L:{"0":50.55875},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js
new file mode 100644
index 0000000000..cd7aa35300
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NC.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.00977,"48":0.00977,"52":0.17105,"55":0.00489,"60":0.05376,"68":0.02932,"72":0.00489,"78":0.46915,"81":0.01955,"84":0.01466,"85":0.00489,"87":0.04398,"88":0.02932,"89":0.01466,"90":0.01955,"91":0.07331,"92":1.74466,"93":4.83324,"94":0.02932,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 49 50 51 53 54 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 82 83 86 95 3.5 3.6"},D:{"38":0.01466,"49":0.18571,"55":0.00489,"56":0.00977,"57":0.02932,"65":0.0391,"67":0.01955,"70":0.00489,"73":0.01466,"74":0.00489,"75":0.00977,"76":0.00489,"77":0.01466,"78":0.00977,"79":0.02932,"80":0.02444,"81":0.02444,"83":0.01466,"85":0.02444,"86":0.10751,"87":1.14356,"88":0.01466,"89":0.17105,"90":0.09774,"91":0.04398,"92":0.17593,"93":1.35859,"94":17.67139,"95":5.05316,"96":0.00489,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 58 59 60 61 62 63 64 66 68 69 71 72 84 97 98"},F:{"29":0.00977,"78":0.09285,"79":0.34209,"80":0.31766,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.53456,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00408,"5.0-5.1":0.00408,"6.0-6.1":0,"7.0-7.1":0.00408,"8.1-8.4":0.00272,"9.0-9.2":0,"9.3":0.09795,"10.0-10.2":0.01224,"10.3":0.22448,"11.0-11.2":0.03673,"11.3-11.4":0.26121,"12.0-12.1":0.02449,"12.2-12.5":1.2013,"13.0-13.1":0.02313,"13.2":0.00544,"13.3":0.16598,"13.4-13.7":0.24897,"14.0-14.4":1.00403,"14.5-14.8":7.74245},B:{"13":0.02444,"15":0.00977,"16":0.02444,"17":0.14661,"18":0.03421,"85":0.00977,"86":0.00977,"88":0.00489,"89":0.01955,"91":0.04887,"92":0.03421,"93":1.15333,"94":3.66525,"95":1.15822,_:"12 14 79 80 81 83 84 87 90"},E:{"4":0,"12":0.01466,"13":0.10751,"14":0.60599,"15":1.00184,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00489,"10.1":0.01955,"11.1":0.07331,"12.1":0.31766,"13.1":0.46427,"14.1":3.07392},P:{"4":0.04276,"5.0-5.4":0.0616,"6.2-6.4":0.01013,"7.2-7.4":0.97274,"8.2":0.06115,"9.2":0.07483,"10.1":0.05345,"11.1-11.2":0.55585,"12.0":0.21379,"13.0":0.30999,"14.0":0.79102,"15.0":3.79476},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00079,"4.2-4.3":0.00047,"4.4":0,"4.4.3-4.4.4":0.01919},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.35186,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.5521},Q:{"10.4":0},O:{"0":0.02556},H:{"0":0.04356},L:{"0":31.02972},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js
new file mode 100644
index 0000000000..86b1849817
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NE.js
@@ -0,0 +1 @@
+module.exports={C:{"27":0.00753,"47":0.05524,"52":0.00502,"56":0.01004,"66":0.00251,"72":0.00753,"78":0.04269,"79":0.00502,"80":0.00502,"84":0.01004,"85":0.00753,"87":0.00251,"88":0.01758,"89":0.03013,"91":0.12806,"92":0.65286,"93":1.65475,"94":0.00753,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 67 68 69 70 71 73 74 75 76 77 81 82 83 86 90 95 3.5 3.6"},D:{"25":0.00251,"28":0.00502,"49":0.04269,"55":0.01758,"56":0.00251,"58":0.01758,"64":0.00251,"67":0.00251,"68":0.00502,"69":0.00502,"70":0.00251,"71":0.00502,"74":0.01256,"75":0.00251,"76":0.0226,"78":0.00753,"79":0.29379,"80":0.06278,"81":0.01256,"83":0.00753,"84":0.04018,"86":0.00251,"87":0.01758,"88":0.20841,"89":0.00251,"90":0.00753,"91":0.05273,"92":0.67295,"93":0.46956,"94":4.12306,"95":0.90145,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 57 59 60 61 62 63 65 66 72 73 77 85 96 97 98"},F:{"42":0.00753,"56":0.00251,"76":0.00251,"77":0.00753,"78":0.02009,"79":0.28374,"80":0.15568,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.51159,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01052,"8.1-8.4":0,"9.0-9.2":0.0015,"9.3":0.05762,"10.0-10.2":0.0015,"10.3":0.19291,"11.0-11.2":0.08919,"11.3-11.4":0.02004,"12.0-12.1":0.06464,"12.2-12.5":0.81022,"13.0-13.1":0.06814,"13.2":0.07766,"13.3":0.0451,"13.4-13.7":0.24051,"14.0-14.4":1.02618,"14.5-14.8":1.79281},B:{"12":0.03515,"13":0.00753,"14":0.00753,"15":0.00502,"16":0.02009,"17":0.0226,"18":0.05273,"84":0.01256,"85":0.0226,"87":0.00251,"89":0.01256,"90":0.00753,"91":0.0226,"92":0.08789,"93":0.17326,"94":1.65475,"95":0.80101,_:"79 80 81 83 86 88"},E:{"4":0,"10":0.00251,"14":0.03264,"15":0.19837,_:"0 5 6 7 8 9 11 12 13 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01004,"11.1":0.00502,"12.1":0.00251,"13.1":0.02762,"14.1":0.45449},P:{"4":0.05399,"5.0-5.4":0.0616,"6.2-6.4":0.03239,"7.2-7.4":0.08638,"8.2":0.06115,"9.2":0.08638,"10.1":0.0216,"11.1-11.2":0.04319,"12.0":0.03239,"13.0":0.04319,"14.0":0.23756,"15.0":0.29155},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00918,"4.4":0,"4.4.3-4.4.4":0.28289},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01619,"11":5.97505,_:"6 7 9 10 5.5"},J:{"7":0,"10":0.02247},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.09736},Q:{"10.4":0.62908},O:{"0":3.45992},H:{"0":3.94919},L:{"0":64.74876},S:{"2.5":0.02996}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js
new file mode 100644
index 0000000000..b2a576ec4f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NF.js
@@ -0,0 +1 @@
+module.exports={C:{"78":0.44421,"84":0.3315,"92":5.23107,"93":3.56031,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 87 88 89 90 91 94 95 3.5 3.6"},D:{"38":0.44421,"49":0.11271,"74":1.00113,"81":2.11497,"87":0.11271,"91":0.44421,"92":0.3315,"93":5.11836,"94":25.14096,"95":7.67754,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 75 76 77 78 79 80 83 84 85 86 88 89 90 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0},B:{"18":0.11271,"94":6.00678,"95":1.33263,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 89 90 91 92 93"},E:{"4":0,"13":0.11271,"14":1.00113,"15":0.55692,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.11271,"13.1":0.22542,"14.1":3.4476},P:{"4":0.01135,"5.0-5.4":0.01135,"6.2-6.4":0.03239,"7.2-7.4":0.03405,"8.2":0.06115,"9.2":0.0227,"10.1":0.0216,"11.1-11.2":0.03405,"12.0":0.03405,"13.0":0.07945,"14.0":0.14755,"15.0":0},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.22542,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0.22542},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js
new file mode 100644
index 0000000000..6da6642ee7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NG.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.00158,"43":0.02993,"47":0.0126,"48":0.00315,"52":0.01733,"56":0.00315,"57":0.00315,"58":0.00158,"65":0.00473,"68":0.00788,"72":0.00945,"77":0.00315,"78":0.02835,"79":0.00473,"80":0.00473,"81":0.00315,"82":0.00315,"83":0.00788,"84":0.00945,"85":0.0063,"86":0.00473,"87":0.00315,"88":0.00788,"89":0.01418,"90":0.00788,"91":0.02205,"92":0.33233,"93":0.85365,"94":0.05985,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 49 50 51 53 54 55 59 60 61 62 63 64 66 67 69 70 71 73 74 75 76 95 3.5 3.6"},D:{"23":0.00158,"37":0.00158,"38":0.00158,"43":0.00158,"47":0.01418,"49":0.01575,"50":0.0063,"51":0.00473,"53":0.00158,"55":0.00945,"56":0.00315,"57":0.00473,"58":0.0126,"61":0.00158,"62":0.00945,"63":0.00788,"64":0.0126,"65":0.00315,"66":0.00315,"67":0.00158,"68":0.00315,"69":0.0063,"70":0.01733,"71":0.00473,"72":0.00473,"73":0.00473,"74":0.01418,"75":0.00788,"76":0.0063,"77":0.01418,"78":0.00473,"79":0.03465,"80":0.03308,"81":0.02363,"83":0.02363,"84":0.02205,"85":0.01103,"86":0.03623,"87":0.08348,"88":0.04095,"89":0.02993,"90":0.04725,"91":0.14175,"92":0.2142,"93":0.33075,"94":4.51395,"95":1.20488,"96":0.0063,"97":0.00315,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 39 40 41 42 44 45 46 48 52 54 59 60 98"},F:{"34":0.00315,"36":0.0189,"43":0.00158,"64":0.01418,"65":0.0189,"77":0.00473,"78":0.01418,"79":0.2205,"80":0.1008,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00163,"15":0.74584,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00163,"5.0-5.1":0.00163,"6.0-6.1":0,"7.0-7.1":0.00381,"8.1-8.4":0,"9.0-9.2":0.00054,"9.3":0.03699,"10.0-10.2":0.00326,"10.3":0.04515,"11.0-11.2":0.13274,"11.3-11.4":0.02829,"12.0-12.1":0.04842,"12.2-12.5":0.63867,"13.0-13.1":0.06039,"13.2":0.02611,"13.3":0.1545,"13.4-13.7":0.34762,"14.0-14.4":1.47209,"14.5-14.8":1.6848},B:{"12":0.0126,"13":0.00158,"14":0.00315,"15":0.00473,"16":0.00315,"17":0.00473,"18":0.03623,"84":0.0063,"85":0.0063,"88":0.0189,"89":0.00945,"90":0.00473,"91":0.01103,"92":0.02363,"93":0.04253,"94":0.58433,"95":0.1764,_:"79 80 81 83 86 87"},E:{"4":0,"8":0.00315,"12":0.00315,"13":0.0126,"14":0.04725,"15":0.06615,_:"0 5 6 7 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.0126,"10.1":0.0063,"11.1":0.00788,"12.1":0.01103,"13.1":0.03623,"14.1":0.09765},P:{"4":0.01135,"5.0-5.4":0.01135,"6.2-6.4":0.03239,"7.2-7.4":0.03405,"8.2":0.06115,"9.2":0.0227,"10.1":0.0216,"11.1-11.2":0.03405,"12.0":0.03405,"13.0":0.07945,"14.0":0.14755,"15.0":0.44266},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00121,"4.2-4.3":0.00121,"4.4":0,"4.4.3-4.4.4":0.0397},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00928,"10":0.00464,"11":0.07427,_:"6 7 9 5.5"},J:{"7":0,"10":0.01685},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.26118},Q:{"10.4":0.00843},O:{"0":1.25533},H:{"0":37.36871},L:{"0":41.94293},S:{"2.5":0.00843}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js
new file mode 100644
index 0000000000..c9c257588d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NI.js
@@ -0,0 +1 @@
+module.exports={C:{"16":0.01348,"52":0.01798,"61":0.03595,"70":0.00449,"72":0.00449,"78":0.04045,"81":0.00899,"85":0.00899,"87":0.00899,"88":0.02696,"89":0.03146,"90":0.01798,"91":0.08089,"92":0.48086,"93":1.39314,"94":0.01798,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 62 63 64 65 66 67 68 69 71 73 74 75 76 77 79 80 82 83 84 86 95 3.5 3.6"},D:{"38":0.02247,"42":0.01798,"49":0.09437,"58":0.00899,"60":0.00449,"63":0.00899,"65":0.03595,"66":0.00449,"67":0.00449,"69":0.00899,"70":0.01798,"71":0.00449,"72":0.00899,"73":0.00899,"74":0.01348,"75":0.04494,"76":0.04943,"77":0.00899,"78":0.00899,"79":0.08539,"80":0.03595,"81":0.02696,"83":0.02247,"84":0.01798,"85":0.01348,"86":0.02247,"87":0.08988,"88":0.04943,"89":2.34137,"90":0.08539,"91":0.17527,"92":0.42693,"93":1.92793,"94":22.90142,"95":5.57256,"96":0.01348,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 43 44 45 46 47 48 50 51 52 53 54 55 56 57 59 61 62 64 68 97 98"},F:{"46":0.00449,"77":0.00899,"78":0.05393,"79":0.86734,"80":0.47636,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.53897,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00862,"6.0-6.1":0,"7.0-7.1":0.02484,"8.1-8.4":0.00051,"9.0-9.2":0.00101,"9.3":0.05221,"10.0-10.2":0.00203,"10.3":0.01571,"11.0-11.2":0.00912,"11.3-11.4":0.01369,"12.0-12.1":0.01065,"12.2-12.5":0.4111,"13.0-13.1":0.02281,"13.2":0.00406,"13.3":0.08364,"13.4-13.7":0.07908,"14.0-14.4":0.46382,"14.5-14.8":2.32366},B:{"12":0.00899,"15":0.00449,"16":0.00899,"17":0.00449,"18":0.05393,"84":0.01798,"85":0.00449,"89":0.02696,"90":0.01798,"91":0.02247,"92":0.04494,"93":0.0764,"94":2.0987,"95":0.57074,_:"13 14 79 80 81 83 86 87 88"},E:{"4":0,"13":0.11235,"14":0.0719,"15":0.27863,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.05393,"11.1":0.00899,"12.1":0.02696,"13.1":0.0764,"14.1":0.373},P:{"4":0.42357,"5.0-5.4":0.0616,"6.2-6.4":0.01033,"7.2-7.4":0.30993,"8.2":0.06115,"9.2":0.09298,"10.1":0.01033,"11.1-11.2":0.33059,"12.0":0.08265,"13.0":0.26861,"14.0":0.40291,"15.0":1.99388},I:{"0":0,"3":0,"4":0.00061,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00182,"4.2-4.3":0.00789,"4.4":0,"4.4.3-4.4.4":0.06677},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.10786,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.13214},Q:{"10.4":0},O:{"0":0.15417},H:{"0":0.43787},L:{"0":47.89256},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js
new file mode 100644
index 0000000000..e2c74fb610
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NL.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.02415,"55":0.00483,"60":0.00966,"63":0.00483,"68":0.00966,"74":0.00483,"78":0.09658,"79":0.00483,"80":0.01449,"81":0.01449,"82":0.00966,"83":0.00483,"84":0.01932,"86":0.00483,"87":0.00966,"88":0.02415,"89":0.02897,"90":0.01449,"91":0.05795,"92":0.86922,"93":1.79156,"94":0.01449,"95":0.00966,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 57 58 59 61 62 64 65 66 67 69 70 71 72 73 75 76 77 85 3.5 3.6"},D:{"38":0.00966,"47":0.06761,"48":0.02415,"49":0.49256,"52":0.03863,"59":0.01449,"61":0.15453,"62":0.00483,"63":0.00483,"64":0.07244,"65":0.00966,"66":0.01449,"67":0.00966,"69":0.02897,"70":0.10624,"71":0.01449,"72":0.10141,"73":0.01932,"74":0.01449,"75":0.02415,"76":0.07726,"77":0.01932,"78":0.02415,"79":0.19316,"80":0.10624,"81":0.01932,"83":0.08692,"84":0.11107,"85":0.1159,"86":0.25111,"87":0.40081,"88":0.06761,"89":0.05795,"90":0.11107,"91":0.36218,"92":0.50705,"93":2.49659,"94":19.88099,"95":4.52477,"96":0.00966,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 50 51 53 54 55 56 57 58 60 68 97 98"},F:{"71":0.00483,"77":0.00483,"78":0.04829,"79":0.42495,"80":0.24145,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.82954,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00277,"8.1-8.4":0,"9.0-9.2":0.04711,"9.3":0.08036,"10.0-10.2":0.00277,"10.3":0.11361,"11.0-11.2":0.01386,"11.3-11.4":0.03325,"12.0-12.1":0.0194,"12.2-12.5":0.68721,"13.0-13.1":0.03602,"13.2":0.02217,"13.3":0.0859,"13.4-13.7":0.28819,"14.0-14.4":11.30018,"14.5-14.8":11.12838},B:{"17":0.00966,"18":0.0338,"84":0.01449,"85":0.00966,"86":0.00966,"87":0.00483,"89":0.01449,"90":0.00966,"91":0.02415,"92":0.04829,"93":0.22696,"94":4.24952,"95":1.23622,_:"12 13 14 15 16 79 80 81 83 88"},E:{"4":0,"11":0.00483,"12":0.00966,"13":0.07244,"14":0.55051,"15":1.52114,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00966,"11.1":0.03863,"12.1":0.09175,"13.1":0.42495,"14.1":3.04227},P:{"4":0.0843,"5.0-5.4":0.01049,"6.2-6.4":0.01049,"7.2-7.4":0.05245,"8.2":0.03036,"9.2":0.02098,"10.1":0.02024,"11.1-11.2":0.03161,"12.0":0.02108,"13.0":0.09484,"14.0":0.14753,"15.0":3.79363},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0016,"4.2-4.3":0.00883,"4.4":0,"4.4.3-4.4.4":0.03611},A:{"6":0.01515,"7":0.00757,"8":0.05301,"9":0.05301,"10":0.03029,"11":0.50737,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.33094},Q:{"10.4":0.01034},O:{"0":0.27406},H:{"0":0.2252},L:{"0":19.44918},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js
new file mode 100644
index 0000000000..6ec9cc7cdc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NO.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01253,"59":0.0188,"78":0.08145,"84":0.00627,"87":0.00627,"88":0.03133,"89":0.01253,"91":0.05012,"92":3.55226,"93":5.1561,"94":0.00627,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 90 95 3.5 3.6"},D:{"38":0.01253,"49":0.03759,"62":0.00627,"63":0.01253,"65":0.01253,"66":0.08145,"67":0.00627,"69":0.11277,"70":0.00627,"71":0.00627,"72":0.00627,"73":0.0188,"75":0.03133,"76":0.43229,"77":0.01253,"78":0.00627,"79":0.05639,"80":0.03133,"81":0.0188,"83":0.02506,"84":0.0188,"85":4.18502,"86":0.03759,"87":0.20048,"88":0.09398,"89":0.05639,"90":0.1441,"91":0.30699,"92":1.55372,"93":3.42069,"94":21.84606,"95":4.86164,"96":0.00627,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 64 68 74 97 98"},F:{"78":0.11277,"79":0.96481,"80":0.38217,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.80428,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01163,"8.1-8.4":0.00233,"9.0-9.2":0,"9.3":0.05814,"10.0-10.2":0.00233,"10.3":0.09999,"11.0-11.2":0.01163,"11.3-11.4":0.05814,"12.0-12.1":0.0279,"12.2-12.5":0.4581,"13.0-13.1":0.02558,"13.2":0.01163,"13.3":0.08139,"13.4-13.7":0.26742,"14.0-14.4":1.48593,"14.5-14.8":15.82902},B:{"17":0.01253,"18":0.0188,"84":0.00627,"85":0.04386,"86":0.01253,"89":0.01253,"91":0.0188,"92":0.04386,"93":0.20048,"94":3.42696,"95":0.93349,_:"12 13 14 15 16 79 80 81 83 87 88 90"},E:{"4":0,"12":0.0188,"13":0.10651,"14":0.93975,"15":1.87324,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0188,"11.1":0.06892,"12.1":0.1253,"13.1":0.59518,"14.1":5.00574},P:{"4":0.0214,"5.0-5.4":0.01049,"6.2-6.4":0.01049,"7.2-7.4":0.04373,"8.2":0.03036,"9.2":0.02169,"10.1":0.02024,"11.1-11.2":0.0656,"12.0":0.02169,"13.0":0.0321,"14.0":0.0749,"15.0":2.24706},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00187,"4.2-4.3":0.00093,"4.4":0,"4.4.3-4.4.4":0.0084},A:{"11":0.23807,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.16061},Q:{"10.4":0},O:{"0":0.02241},H:{"0":0.12376},L:{"0":11.7391},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js
new file mode 100644
index 0000000000..895565aec9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NP.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.0021,"52":0.01262,"72":0.00421,"78":0.02313,"84":0.0021,"87":0.0021,"88":0.01052,"89":0.01682,"90":0.00631,"91":0.01262,"92":0.3512,"93":0.75077,"94":0.06099,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"11":0.00421,"38":0.0021,"49":0.02103,"53":0.0021,"58":0.0021,"60":0.00421,"63":0.00841,"64":0.00421,"65":0.00841,"67":0.00421,"69":0.00421,"70":0.00421,"71":0.00631,"72":0.0021,"73":0.00631,"74":0.00421,"75":0.00421,"76":0.00631,"77":0.0021,"78":0.01052,"79":0.04416,"80":0.01052,"81":0.01262,"83":0.01893,"84":0.04627,"85":0.01052,"86":0.02103,"87":0.15352,"88":0.01682,"89":0.02944,"90":0.02103,"91":0.04627,"92":0.16614,"93":0.38485,"94":11.50551,"95":3.66974,"96":0.03155,"97":0.00841,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 61 62 66 68 98"},F:{"36":0.0021,"78":0.01052,"79":0.31545,"80":0.17455,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.7957,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00045,"6.0-6.1":0,"7.0-7.1":0.01943,"8.1-8.4":0.00045,"9.0-9.2":0.00407,"9.3":0.04654,"10.0-10.2":0.00407,"10.3":0.07184,"11.0-11.2":0.01491,"11.3-11.4":0.01807,"12.0-12.1":0.01581,"12.2-12.5":0.60592,"13.0-13.1":0.00633,"13.2":0.00452,"13.3":0.03298,"13.4-13.7":0.10212,"14.0-14.4":0.30183,"14.5-14.8":2.47204},B:{"12":0.0021,"15":0.0021,"17":0.00421,"18":0.01262,"81":0.01472,"84":0.0021,"89":0.00841,"91":0.0021,"92":0.01052,"93":0.02103,"94":0.79283,"95":0.30494,_:"13 14 16 79 80 83 85 86 87 88 90"},E:{"4":0,"13":0.01052,"14":0.03575,"15":0.11146,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01052,"11.1":0.00841,"12.1":0.00841,"13.1":0.02524,"14.1":0.19348},P:{"4":0.24318,"5.0-5.4":0.0616,"6.2-6.4":0.01013,"7.2-7.4":0.08458,"8.2":0.06115,"9.2":0.01057,"10.1":0.02032,"11.1-11.2":0.03172,"12.0":0.03172,"13.0":0.1163,"14.0":0.08458,"15.0":0.67666},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00209,"4.2-4.3":0.00697,"4.4":0,"4.4.3-4.4.4":0.08571},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.01682,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.04738},Q:{"10.4":0},O:{"0":1.47674},H:{"0":0.92707},L:{"0":71.7221},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js
new file mode 100644
index 0000000000..6ff5a6a3e5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NR.js
@@ -0,0 +1 @@
+module.exports={C:{"11":0.02108,"92":0.05622,"93":0.08082,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 94 95 3.5 3.6"},D:{"49":0.01054,"71":0.01054,"77":0.03514,"78":0.04568,"79":0.08082,"81":0.62901,"89":0.23895,"90":0.02108,"91":0.19327,"92":0.01054,"93":0.51304,"94":6.97529,"95":2.04515,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 72 73 74 75 76 80 83 84 85 86 87 88 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.30127,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.04299,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.06465,"13.0-13.1":0.01083,"13.2":0,"13.3":0.01083,"13.4-13.7":0.19363,"14.0-14.4":0.4519,"14.5-14.8":2.10854},B:{"14":0.06677,"16":0.01054,"18":0.02108,"85":0.01054,"88":0.02108,"92":0.01054,"93":0.02108,"94":2.06623,"95":0.35491,_:"12 13 15 17 79 80 81 83 84 86 87 89 90 91"},E:{"4":0,"11":0.03514,"13":0.19327,"14":18.83855,"15":0.02108,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1","14.1":0.43222},P:{"4":0.4979,"5.0-5.4":0.0616,"6.2-6.4":0.01013,"7.2-7.4":0.02026,"8.2":0.06115,"9.2":0.06097,"10.1":0.02032,"11.1-11.2":0.12154,"12.0":0.05064,"13.0":0.08103,"14.0":0.09115,"15.0":0.94192},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.8539,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":1.07668},Q:{"10.4":0.01297},O:{"0":1.52421},H:{"0":7.00634},L:{"0":51.53206},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js
new file mode 100644
index 0000000000..2dc40dad73
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NU.js
@@ -0,0 +1 @@
+module.exports={C:{"92":13.6365,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 95 3.5 3.6"},D:{"81":54.546,"94":22.7275,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.01135,"5.0-5.4":0.01135,"6.2-6.4":0.03239,"7.2-7.4":0.03405,"8.2":0.06115,"9.2":0.0227,"10.1":0.0216,"11.1-11.2":0.03405,"12.0":0.03405,"13.0":0.07945,"14.0":0.14755,"15.0":0.44266},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":9.09},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js
new file mode 100644
index 0000000000..ca943b7241
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/NZ.js
@@ -0,0 +1 @@
+module.exports={C:{"11":0.02756,"34":0.00551,"52":0.03307,"59":0.01102,"60":0.01102,"78":0.12678,"85":0.01102,"86":0.02205,"87":0.01102,"88":0.03307,"89":0.02756,"90":0.02205,"91":0.03858,"92":0.77168,"93":1.86857,"94":0.00551,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 95 3.5 3.6"},D:{"20":0.0441,"34":0.01102,"38":0.07717,"49":0.15985,"53":0.03307,"57":0.01102,"58":0.00551,"61":0.01654,"63":0.02756,"65":0.02756,"66":0.00551,"67":0.03307,"68":0.02756,"69":0.0441,"70":0.03307,"71":0.02205,"72":0.01654,"73":0.02756,"74":0.03307,"75":0.02756,"76":0.04961,"77":0.02756,"78":0.02205,"79":0.28111,"80":0.04961,"81":0.02756,"83":0.03858,"84":0.02756,"85":0.01654,"86":0.0441,"87":0.2315,"88":0.06063,"89":0.16536,"90":0.33623,"91":0.2756,"92":1.32839,"93":2.99853,"94":23.48112,"95":5.40176,"96":0.02756,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 59 60 62 64 97 98"},F:{"36":0.00551,"46":0.06614,"78":0.02756,"79":0.33072,"80":0.14882,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.33407,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0072,"6.0-6.1":0.04498,"7.0-7.1":0.02339,"8.1-8.4":0.03599,"9.0-9.2":0.01259,"9.3":0.26629,"10.0-10.2":0.03239,"10.3":0.30408,"11.0-11.2":0.12235,"11.3-11.4":0.07737,"12.0-12.1":0.05578,"12.2-12.5":1.20372,"13.0-13.1":0.02519,"13.2":0.01439,"13.3":0.10256,"13.4-13.7":0.36885,"14.0-14.4":0.95362,"14.5-14.8":11.00261},B:{"18":0.07717,"83":0.01102,"84":0.00551,"85":0.00551,"89":0.01102,"90":0.01102,"91":0.00551,"92":0.03307,"93":0.17087,"94":3.80879,"95":1.08586,_:"12 13 14 15 16 17 79 80 81 86 87 88"},E:{"4":0,"11":0.02756,"12":0.01654,"13":0.1378,"14":0.74963,"15":1.8355,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01102,"10.1":0.02756,"11.1":0.06063,"12.1":0.16536,"13.1":0.6449,"14.1":4.55842},P:{"4":0.44463,"5.0-5.4":0.01049,"6.2-6.4":0.01049,"7.2-7.4":0.05245,"8.2":0.03036,"9.2":0.02169,"10.1":0.02024,"11.1-11.2":0.05422,"12.0":0.02169,"13.0":0.16267,"14.0":0.18436,"15.0":2.39668},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00182,"4.2-4.3":0.00318,"4.4":0,"4.4.3-4.4.4":0.03091},A:{"11":0.99216,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.39054},Q:{"10.4":0.03142},O:{"0":0.23792},H:{"0":0.22099},L:{"0":23.24748},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js
new file mode 100644
index 0000000000..c0378d76d6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/OM.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00318,"52":0.00318,"77":0.00636,"78":0.00636,"86":0.00636,"88":0.00954,"89":0.00954,"91":0.01272,"92":0.15269,"93":0.42307,"94":0.00954,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 87 90 95 3.5 3.6"},D:{"11":0.00636,"30":0.01909,"34":0.00636,"38":0.02545,"43":0.00318,"49":0.04135,"53":0.00318,"55":0.00318,"56":0.00954,"58":0.00318,"62":0.01272,"63":0.00636,"64":0.01272,"65":0.03817,"68":0.00318,"69":0.01591,"70":0.01272,"71":0.00318,"72":0.00636,"73":0.00636,"74":0.00318,"75":0.00954,"76":0.01272,"77":0.00954,"78":0.00954,"79":0.07634,"80":0.01909,"81":0.01272,"83":0.02863,"84":0.00636,"85":0.01591,"86":0.03499,"87":0.1177,"88":0.1336,"89":0.0668,"90":0.03499,"91":0.15905,"92":0.28629,"93":0.79525,"94":14.8998,"95":4.92101,"96":0.03817,"97":0.00318,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 54 57 59 60 61 66 67 98"},F:{"28":0.00636,"36":0.00954,"46":0.02227,"78":0.03817,"79":0.29583,"80":0.17496,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.28507,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0087,"6.0-6.1":0.0029,"7.0-7.1":0.05654,"8.1-8.4":0,"9.0-9.2":0.0116,"9.3":0.04639,"10.0-10.2":0.00145,"10.3":0.04349,"11.0-11.2":0.03479,"11.3-11.4":0.01595,"12.0-12.1":0.02174,"12.2-12.5":0.67697,"13.0-13.1":0.02464,"13.2":0.02029,"13.3":0.10437,"13.4-13.7":0.28268,"14.0-14.4":1.24667,"14.5-14.8":7.60614},B:{"12":0.00636,"14":0.00318,"15":0.01591,"16":0.01272,"17":0.00636,"18":0.06044,"80":0.00318,"84":0.01272,"86":0.00318,"88":0.00954,"89":0.01272,"90":0.00636,"91":0.01591,"92":0.02227,"93":0.0509,"94":1.97222,"95":0.74117,_:"13 79 81 83 85 87"},E:{"4":0,"13":0.02227,"14":0.26402,"15":0.52487,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00954,"11.1":0.01272,"12.1":0.01272,"13.1":0.09861,"14.1":0.93203},P:{"4":0.29796,"5.0-5.4":0.01135,"6.2-6.4":0.03239,"7.2-7.4":0.18494,"8.2":0.08219,"9.2":0.0411,"10.1":0.02055,"11.1-11.2":0.23631,"12.0":0.12329,"13.0":0.32878,"14.0":0.42125,"15.0":2.83573},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00238,"4.2-4.3":0.00555,"4.4":0,"4.4.3-4.4.4":0.06026},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.98494,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.07501},Q:{"10.4":0.02046},O:{"0":0.76373},H:{"0":0.51001},L:{"0":49.17167},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js
new file mode 100644
index 0000000000..92be6de8c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PA.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00858,"57":0.01715,"73":0.05146,"78":0.03859,"88":0.01286,"89":0.01286,"90":0.0343,"91":0.00858,"92":0.41594,"93":1.00768,"94":0.00429,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 77 79 80 81 82 83 84 85 86 87 95 3.5 3.6"},D:{"38":0.01715,"47":0.00429,"49":0.09005,"56":0.00429,"58":0.00858,"63":0.00858,"65":0.01286,"67":0.00858,"68":0.00429,"69":0.00429,"70":0.01286,"73":0.07718,"74":0.00429,"75":0.03859,"76":0.0343,"77":0.01715,"78":0.01286,"79":0.15008,"80":0.0343,"81":0.02573,"83":0.02144,"84":0.02144,"85":0.01286,"86":0.06432,"87":0.06432,"88":0.04288,"89":0.04717,"90":0.05574,"91":0.15866,"92":0.59603,"93":1.01197,"94":22.20326,"95":6.3248,"96":0.01286,"97":0.00858,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 53 54 55 57 59 60 61 62 64 66 71 72 98"},F:{"46":0.00429,"78":0.09862,"79":1.00768,"80":0.45453,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.12692,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.00844,"7.0-7.1":0.02991,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0698,"10.0-10.2":0.00153,"10.3":0.05062,"11.0-11.2":0.01611,"11.3-11.4":0.02148,"12.0-12.1":0.01074,"12.2-12.5":0.30374,"13.0-13.1":0.01841,"13.2":0.00997,"13.3":0.02454,"13.4-13.7":0.13346,"14.0-14.4":0.56912,"14.5-14.8":4.27072},B:{"14":0.00429,"15":0.00858,"16":0.00858,"17":0.00858,"18":0.03002,"84":0.00429,"89":0.01286,"90":0.00858,"91":0.02144,"92":0.03002,"93":0.06861,"94":2.57709,"95":0.86618,_:"12 13 79 80 81 83 85 86 87 88"},E:{"4":0,"8":0.00858,"12":0.00858,"13":0.02144,"14":0.22298,"15":0.78899,_:"0 5 6 7 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.09434,"10.1":0.00858,"11.1":0.01715,"12.1":0.03859,"13.1":0.21011,"14.1":1.26067},P:{"4":0.28613,"5.0-5.4":0.01135,"6.2-6.4":0.02112,"7.2-7.4":0.39853,"8.2":0.08219,"9.2":0.07153,"10.1":0.05109,"11.1-11.2":0.34744,"12.0":0.12263,"13.0":0.23503,"14.0":0.38832,"15.0":2.73865},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00714,"4.4":0,"4.4.3-4.4.4":0.06712},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.28301,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.22277},Q:{"10.4":0.01142},O:{"0":0.11424},H:{"0":0.25416},L:{"0":45.44605},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js
new file mode 100644
index 0000000000..c5dc5f2bc0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PE.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01172,"73":0.00586,"76":0.02929,"78":0.02343,"84":0.01172,"88":0.01172,"89":0.00586,"90":0.02343,"91":0.02343,"92":0.31633,"93":0.82598,"94":0.00586,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 77 79 80 81 82 83 85 86 87 95 3.5 3.6"},D:{"22":0.01172,"38":0.02929,"49":0.0703,"53":0.01172,"65":0.00586,"69":0.01172,"70":0.01172,"72":0.00586,"73":0.00586,"74":0.01172,"75":0.01757,"76":0.01172,"77":0.01172,"78":0.01172,"79":0.14059,"80":0.04686,"81":0.12888,"83":0.04686,"84":0.02929,"85":0.02929,"86":0.04686,"87":0.17574,"88":0.05272,"89":0.06444,"90":0.06444,"91":0.43349,"92":0.52136,"93":0.93728,"94":34.7848,"95":11.12434,"96":0.01757,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 67 68 71 97 98"},F:{"77":0.01172,"78":0.12302,"79":1.5348,"80":0.7674,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.77513,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00338,"6.0-6.1":0.00197,"7.0-7.1":0.00422,"8.1-8.4":0.00056,"9.0-9.2":0.00084,"9.3":0.01547,"10.0-10.2":0.00225,"10.3":0.01576,"11.0-11.2":0.00535,"11.3-11.4":0.0045,"12.0-12.1":0.03404,"12.2-12.5":0.175,"13.0-13.1":0.01069,"13.2":0.0045,"13.3":0.02448,"13.4-13.7":0.06696,"14.0-14.4":0.24253,"14.5-14.8":1.42478},B:{"18":0.02343,"89":0.01172,"91":0.01757,"92":0.02343,"93":0.05858,"94":1.98586,"95":0.71468,_:"12 13 14 15 16 17 79 80 81 83 84 85 86 87 88 90"},E:{"4":0,"13":0.02929,"14":0.10544,"15":0.34562,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01172,"12.1":0.01172,"13.1":0.07615,"14.1":0.37491},P:{"4":0.19311,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.08583,"8.2":0.08219,"9.2":0.01073,"10.1":0.03038,"11.1-11.2":0.10728,"12.0":0.02146,"13.0":0.08583,"14.0":0.12874,"15.0":0.67589},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00321,"4.2-4.3":0.00321,"4.4":0,"4.4.3-4.4.4":0.0557},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.17574,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.07456},Q:{"10.4":0},O:{"0":0.02899},H:{"0":0.1647},L:{"0":38.60576},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js
new file mode 100644
index 0000000000..45b29fafb4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PF.js
@@ -0,0 +1 @@
+module.exports={C:{"12":0.11313,"47":0.00905,"48":0.02263,"52":0.04073,"54":0.00905,"56":0.00453,"59":0.00905,"60":0.02715,"66":0.00453,"68":0.14933,"72":0.00905,"77":0.00453,"78":0.543,"81":0.00905,"82":0.0181,"83":0.0181,"84":0.10408,"85":0.08145,"88":0.0181,"89":0.04073,"90":0.02263,"91":0.09955,"92":1.61543,"93":3.36208,"94":0.00453,_:"2 3 4 5 6 7 8 9 10 11 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 55 57 58 61 62 63 64 65 67 69 70 71 73 74 75 76 79 80 86 87 95 3.5 3.6"},D:{"49":0.42988,"53":0.04978,"61":2.26703,"65":0.0181,"67":0.04073,"71":0.00453,"75":0.04073,"79":0.02715,"80":0.04073,"81":0.00905,"83":0.09503,"84":0.00453,"85":0.00905,"86":0.01358,"87":0.181,"88":0.0181,"89":0.03168,"90":0.09503,"91":0.20815,"92":0.4344,"93":1.09053,"94":14.18135,"95":3.97295,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 62 63 64 66 68 69 70 72 73 74 76 77 78 96 97 98"},F:{"69":0.00453,"78":0.03168,"79":0.35295,"80":0.13123,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.4538,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.02258,"6.0-6.1":0.11288,"7.0-7.1":0.06363,"8.1-8.4":0,"9.0-9.2":0.01231,"9.3":0.11904,"10.0-10.2":0.00205,"10.3":0.11288,"11.0-11.2":0.0862,"11.3-11.4":0.03694,"12.0-12.1":0.11904,"12.2-12.5":0.90718,"13.0-13.1":0.02052,"13.2":0.01642,"13.3":0.1642,"13.4-13.7":0.45359,"14.0-14.4":1.98676,"14.5-14.8":11.83027},B:{"15":0.00453,"16":0.00905,"17":0.01358,"18":0.0362,"85":0.00453,"89":0.02715,"90":0.02715,"91":0.01358,"92":0.02263,"93":0.08598,"94":2.85075,"95":1.00908,_:"12 13 14 79 80 81 83 84 86 87 88"},E:{"4":0,"12":0.01358,"13":0.14933,"14":1.08148,"15":1.1765,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02263,"11.1":0.07693,"12.1":0.22173,"13.1":0.58373,"14.1":3.99105},P:{"4":0.01047,"5.0-5.4":0.01022,"6.2-6.4":0.05112,"7.2-7.4":0.08378,"8.2":0.02045,"9.2":0.02094,"10.1":0.02094,"11.1-11.2":0.19898,"12.0":0.01047,"13.0":0.10472,"14.0":0.13614,"15.0":2.77519},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0.0049,"2.3":0,"4.1":0.00082,"4.2-4.3":0.00409,"4.4":0,"4.4.3-4.4.4":0.04494},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.43893,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.37778},Q:{"10.4":0},O:{"0":0.19163},H:{"0":0.07257},L:{"0":32.82108},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js
new file mode 100644
index 0000000000..11e3a5f901
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PG.js
@@ -0,0 +1 @@
+module.exports={C:{"40":0.00354,"44":0.07076,"50":0.00354,"56":0.00708,"61":0.01415,"66":0.00708,"69":0.00708,"71":0.00708,"72":0.01415,"77":0.08137,"78":0.0283,"82":0.03538,"83":0.00708,"84":0.01769,"85":0.02123,"86":0.02123,"87":0.01415,"88":0.03892,"89":0.04246,"90":0.03892,"91":0.04953,"92":0.83851,"93":1.16754,"94":0.02123,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 45 46 47 48 49 51 52 53 54 55 57 58 59 60 62 63 64 65 67 68 70 73 74 75 76 79 80 81 95 3.5 3.6"},D:{"11":0.03892,"31":0.02123,"37":0.01061,"41":0.00708,"49":0.04953,"50":0.00354,"54":0.01061,"55":0.01769,"56":0.00708,"57":0.00708,"58":0.00354,"60":0.00708,"63":0.00708,"65":0.00708,"66":0.00708,"67":0.01769,"68":0.01769,"69":0.11322,"70":0.2512,"71":0.01769,"72":0.01769,"74":0.02477,"75":0.01415,"77":0.03184,"78":0.01769,"79":0.01415,"80":0.04599,"81":0.03892,"83":0.04953,"84":0.01769,"85":0.01415,"86":0.03892,"87":0.16629,"88":0.08137,"89":0.20874,"90":0.10614,"91":0.09553,"92":0.53778,"93":0.65453,"94":12.4573,"95":3.88472,"96":0.00708,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 38 39 40 42 43 44 45 46 47 48 51 52 53 59 61 62 64 73 76 97 98"},F:{"77":0.05661,"78":0.01415,"79":0.42102,"80":0.24058,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.30631,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00093,"6.0-6.1":0.00116,"7.0-7.1":0.00486,"8.1-8.4":0.00578,"9.0-9.2":0.01157,"9.3":0.0539,"10.0-10.2":0.00393,"10.3":0.01828,"11.0-11.2":0.01319,"11.3-11.4":0.01735,"12.0-12.1":0.03308,"12.2-12.5":0.30793,"13.0-13.1":0.00995,"13.2":0.00602,"13.3":0.05113,"13.4-13.7":0.1439,"14.0-14.4":0.38635,"14.5-14.8":0.93743},B:{"12":0.03184,"13":0.03538,"14":0.0283,"15":0.0283,"16":0.1769,"17":0.10614,"18":0.31134,"80":0.06368,"83":0.00708,"84":0.06368,"85":0.0283,"87":0.00708,"88":0.01061,"89":0.07784,"90":0.01769,"91":0.0743,"92":0.21936,"93":0.31488,"94":2.98607,"95":0.71114,_:"79 81 86"},E:{"4":0,"9":0.00708,"13":0.1026,"14":0.04246,"15":0.07784,_:"0 5 6 7 8 10 11 12 3.1 3.2 5.1 6.1 9.1","7.1":0.00708,"10.1":0.00708,"11.1":0.00354,"12.1":0.01061,"13.1":0.03538,"14.1":0.18398},P:{"4":0.28502,"5.0-5.4":0.01135,"6.2-6.4":0.03054,"7.2-7.4":1.32329,"8.2":0.08219,"9.2":0.14251,"10.1":0.06107,"11.1-11.2":0.42752,"12.0":0.13233,"13.0":0.4886,"14.0":1.12988,"15.0":1.37418},I:{"0":0,"3":0,"4":0.00383,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00958,"4.2-4.3":0.03066,"4.4":0,"4.4.3-4.4.4":0.23375},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.0091,"11":0.43669,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.10338},Q:{"10.4":0.27782},O:{"0":2.09336},H:{"0":2.01856},L:{"0":57.67398},S:{"2.5":0.24552}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js
new file mode 100644
index 0000000000..228652407c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PH.js
@@ -0,0 +1 @@
+module.exports={C:{"36":0.00489,"52":0.00978,"56":0.19071,"59":0.00489,"78":0.02445,"84":0.00489,"87":0.00489,"88":0.00978,"89":0.00978,"90":0.00489,"91":0.01467,"92":0.26895,"93":0.64059,"94":0.01467,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"49":0.06846,"53":0.00489,"55":0.00489,"56":0.00489,"58":0.00489,"63":0.00978,"65":0.01467,"66":0.03423,"67":0.00978,"68":0.00489,"69":0.01467,"70":0.01467,"71":0.01956,"72":0.01467,"73":0.01467,"74":0.02445,"75":0.03423,"76":0.05379,"77":0.02445,"78":0.05379,"79":0.10269,"80":0.04401,"81":0.04401,"83":0.05868,"84":0.04401,"85":0.0489,"86":0.09291,"87":0.37164,"88":0.13692,"89":0.0978,"90":0.12225,"91":0.22005,"92":0.57702,"93":1.10025,"94":27.99525,"95":6.33255,"96":0.03912,"97":0.00978,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 54 57 59 60 61 62 64 98"},F:{"28":0.01467,"46":0.00489,"78":0.0489,"79":0.65037,"80":0.31296,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.19009,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01488,"6.0-6.1":0.0027,"7.0-7.1":0.01533,"8.1-8.4":0.0018,"9.0-9.2":0.00811,"9.3":0.07303,"10.0-10.2":0.00586,"10.3":0.04147,"11.0-11.2":0.02615,"11.3-11.4":0.04553,"12.0-12.1":0.03065,"12.2-12.5":0.51571,"13.0-13.1":0.01848,"13.2":0.01172,"13.3":0.04418,"13.4-13.7":0.13569,"14.0-14.4":0.4003,"14.5-14.8":1.92533},B:{"17":0.00978,"18":0.04401,"84":0.00978,"89":0.01956,"91":0.00978,"92":0.02934,"93":0.05868,"94":2.88021,"95":0.81663,_:"12 13 14 15 16 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.02934,"14":0.14181,"15":0.3912,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01956,"12.1":0.02445,"13.1":0.09291,"14.1":0.57702},P:{"4":0.29174,"5.0-5.4":0.01073,"6.2-6.4":0.01049,"7.2-7.4":0.01081,"8.2":0.03036,"9.2":0.01081,"10.1":0.02024,"11.1-11.2":0.06483,"12.0":0.02161,"13.0":0.07564,"14.0":0.09725,"15.0":0.8428},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00119,"4.2-4.3":0.00299,"4.4":0,"4.4.3-4.4.4":0.04181},A:{"11":1.30563,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.1022},Q:{"10.4":0.00511},O:{"0":1.01178},H:{"0":0.77405},L:{"0":44.71538},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js
new file mode 100644
index 0000000000..b1ee8c9522
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PK.js
@@ -0,0 +1 @@
+module.exports={C:{"21":0.03427,"33":0.00428,"43":0.00214,"47":0.00428,"50":0.00428,"51":0.00214,"52":0.02999,"56":0.00214,"57":0.00214,"68":0.00214,"72":0.00428,"78":0.01928,"79":0.00214,"80":0.00643,"81":0.00428,"82":0.00214,"83":0.00428,"84":0.02142,"85":0.00428,"87":0.00214,"88":0.00643,"89":0.00857,"90":0.00428,"91":0.01928,"92":0.22277,"93":0.55906,"94":0.0257,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 48 49 53 54 55 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 86 95 3.5 3.6"},D:{"24":0.02142,"27":0.02356,"28":0.00643,"30":0.01071,"31":0.00428,"32":0.00214,"33":0.01285,"34":0.00214,"35":0.00428,"36":0.00643,"37":0.00214,"38":0.00428,"41":0.01714,"42":0.00428,"43":0.01928,"47":0.00428,"48":0.00428,"49":0.0664,"50":0.00428,"56":0.01714,"57":0.00428,"58":0.00428,"60":0.00428,"61":0.0257,"62":0.00428,"63":0.01071,"64":0.01071,"65":0.00643,"67":0.00214,"68":0.00643,"69":0.00643,"70":0.00857,"71":0.00428,"72":0.00643,"73":0.00857,"74":0.01714,"75":0.01071,"76":0.00857,"77":0.00857,"78":0.00643,"79":0.01928,"80":0.02142,"81":0.02356,"83":0.03427,"84":0.0664,"85":0.03856,"86":0.0664,"87":0.40912,"88":0.02999,"89":0.04284,"90":0.03856,"91":0.07925,"92":0.23776,"93":0.43268,"94":10.71,"95":3.11447,"96":0.02785,"97":0.01071,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 29 39 40 44 45 46 51 52 53 54 55 59 66 98"},F:{"70":0.00214,"71":0.00214,"78":0.01285,"79":0.362,"80":0.20992,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.78028,"3.2":0.00034,"4.0-4.1":0,"4.2-4.3":0.00068,"5.0-5.1":0.00752,"6.0-6.1":0.00137,"7.0-7.1":0.02666,"8.1-8.4":0.00308,"9.0-9.2":0.00273,"9.3":0.07246,"10.0-10.2":0.0106,"10.3":0.05161,"11.0-11.2":0.01948,"11.3-11.4":0.01914,"12.0-12.1":0.01367,"12.2-12.5":0.38587,"13.0-13.1":0.0123,"13.2":0.00649,"13.3":0.03281,"13.4-13.7":0.10629,"14.0-14.4":0.31649,"14.5-14.8":1.54792},B:{"12":0.00857,"13":0.00214,"14":0.00857,"15":0.00643,"16":0.00643,"17":0.00428,"18":0.02785,"83":0.00214,"84":0.00643,"85":0.00428,"89":0.00643,"90":0.00214,"91":0.00428,"92":0.00857,"93":0.01714,"94":0.50123,"95":0.16493,_:"79 80 81 86 87 88"},E:{"4":0,"13":0.01285,"14":0.03641,"15":0.05355,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.01499,"10.1":0.00214,"11.1":0.00214,"12.1":0.00643,"13.1":0.02142,"14.1":0.10924},P:{"4":0.24676,"5.0-5.4":0.01073,"6.2-6.4":0.01049,"7.2-7.4":0.05364,"8.2":0.03036,"9.2":0.01073,"10.1":0.02024,"11.1-11.2":0.04292,"12.0":0.03219,"13.0":0.10729,"14.0":0.13948,"15.0":0.91195},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00224,"4.2-4.3":0.00821,"4.4":0,"4.4.3-4.4.4":0.12312},A:{"8":0.01492,"9":0.00995,"10":0.00497,"11":0.1094,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.055},Q:{"10.4":0.00786},O:{"0":3.75565},H:{"0":1.60672},L:{"0":70.29275},S:{"2.5":0.14143}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js
new file mode 100644
index 0000000000..c08eb54d11
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PL.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.18872,"60":0.00944,"68":0.01415,"72":0.02359,"74":0.00472,"76":0.00472,"77":0.00472,"78":0.20759,"80":0.00944,"81":0.01415,"82":0.02359,"83":0.01415,"84":0.03774,"85":0.01415,"86":0.02359,"87":0.01415,"88":0.06133,"89":0.07077,"90":0.0519,"91":0.1038,"92":2.12782,"93":5.58611,"94":0.01887,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 75 79 95 3.5 3.6"},D:{"34":0.00472,"38":0.00472,"49":0.12739,"58":0.00944,"59":0.00472,"61":0.04246,"63":0.01887,"67":0.00472,"69":0.00472,"70":0.00944,"71":0.01415,"72":0.00472,"73":0.00472,"74":0.00944,"75":0.01415,"76":0.06133,"77":0.00944,"78":0.01415,"79":0.21231,"80":0.02831,"81":0.01887,"83":0.01887,"84":0.01415,"85":0.01887,"86":0.03303,"87":0.11795,"88":0.04718,"89":0.04718,"90":0.06605,"91":0.14154,"92":0.32082,"93":0.85396,"94":17.95199,"95":4.62836,"96":0.00944,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 60 62 64 65 66 68 97 98"},F:{"36":0.01415,"73":0.00472,"76":0.00944,"77":0.02831,"78":0.32554,"79":3.97727,"80":2.03818,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.05421,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00249,"6.0-6.1":0.00083,"7.0-7.1":0.00332,"8.1-8.4":0.00125,"9.0-9.2":0.00166,"9.3":0.01745,"10.0-10.2":0.00166,"10.3":0.01828,"11.0-11.2":0.00956,"11.3-11.4":0.01122,"12.0-12.1":0.01413,"12.2-12.5":0.16206,"13.0-13.1":0.00748,"13.2":0.00416,"13.3":0.03366,"13.4-13.7":0.08518,"14.0-14.4":0.29877,"14.5-14.8":2.42506},B:{"12":0.00472,"15":0.00944,"17":0.01415,"18":0.02359,"84":0.00944,"85":0.00944,"86":0.00944,"87":0.00472,"89":0.01887,"90":0.00944,"91":0.02359,"92":0.04718,"93":0.12267,"94":2.9346,"95":0.91529,_:"13 14 16 79 80 81 83 88"},E:{"4":0,"13":0.01887,"14":0.12739,"15":0.37272,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.00944,"12.1":0.02831,"13.1":0.11323,"14.1":0.51898},P:{"4":0.17508,"5.0-5.4":0.01073,"6.2-6.4":0.01049,"7.2-7.4":0.0206,"8.2":0.03036,"9.2":0.05149,"10.1":0.0103,"11.1-11.2":0.18538,"12.0":0.06179,"13.0":0.18538,"14.0":0.26777,"15.0":2.47169},I:{"0":0,"3":0,"4":0.00148,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01477,"4.2-4.3":0.01255,"4.4":0,"4.4.3-4.4.4":0.03988},A:{"11":0.16985,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.28},Q:{"10.4":0},O:{"0":0.0317},H:{"0":1.23039},L:{"0":44.72032},S:{"2.5":0.00528}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js
new file mode 100644
index 0000000000..e46f7bb0f6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PM.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.0057,"56":0.06266,"64":0.02848,"66":0.10822,"75":0.02848,"78":1.08794,"79":0.39302,"80":0.0057,"88":0.01139,"89":0.01139,"91":1.04806,"92":4.51123,"93":5.61626,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 65 67 68 69 70 71 72 73 74 76 77 81 82 83 84 85 86 87 90 94 95 3.5 3.6"},D:{"49":0.01139,"66":0.0057,"68":0.0057,"79":0.07405,"81":0.06266,"83":0.0057,"87":0.0057,"89":0.02848,"90":0.01139,"91":0.20506,"92":0.03418,"93":1.58918,"94":21.29165,"95":4.89286,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 67 69 70 71 72 73 74 75 76 77 78 80 84 85 86 88 96 97 98"},F:{"78":0.0057,"79":0.53542,"80":0.51264,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.23374,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.01595,"10.0-10.2":0,"10.3":0.06152,"11.0-11.2":0.02279,"11.3-11.4":0.02051,"12.0-12.1":0,"12.2-12.5":2.83219,"13.0-13.1":0.02279,"13.2":0,"13.3":0.23241,"13.4-13.7":0.14355,"14.0-14.4":3.1922,"14.5-14.8":11.01205},B:{"84":0.0057,"87":0.0057,"89":0.01139,"93":0.04557,"94":3.94163,"95":1.58349,_:"12 13 14 15 16 17 18 79 80 81 83 85 86 88 90 91 92"},E:{"4":0,"12":0.01139,"13":0.15379,"14":0.70061,"15":2.18157,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.0057,"13.1":0.58099,"14.1":3.29798},P:{"4":0.03663,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.86763,"8.2":0.08219,"9.2":0.03136,"10.1":0.03136,"11.1-11.2":0.06105,"12.0":0.10453,"13.0":0.41814,"14.0":0.4704,"15.0":2.14901},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.02582},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.10822,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.52939},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":17.61331},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js
new file mode 100644
index 0000000000..8d4f379f01
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PN.js
@@ -0,0 +1 @@
+module.exports={C:{"92":13.04,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 93 94 95 3.5 3.6"},D:{"81":52.17,"94":34.78,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0,"14.5-14.8":0},B:{_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94 95"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.19311,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.08583,"8.2":0.08219,"9.2":0.01073,"10.1":0.03038,"11.1-11.2":0.10728,"12.0":0.02146,"13.0":0.08583,"14.0":0.12874,"15.0":0.67589},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":0},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js
new file mode 100644
index 0000000000..3764cb5689
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PR.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.01419,"46":0.01419,"47":0.01892,"48":0.02365,"49":0.01419,"50":0.01892,"51":0.01419,"52":0.07095,"53":0.01892,"54":0.01419,"55":0.01892,"56":0.01892,"73":0.06622,"77":0.00946,"78":0.05676,"84":0.01892,"87":0.00473,"88":0.00946,"89":0.01892,"90":0.06622,"91":0.08514,"92":0.6149,"93":1.40481,"94":0.03784,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 74 75 76 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"25":0.00946,"43":0.03784,"49":0.17028,"54":0.03784,"58":0.01892,"62":0.00946,"63":0.00473,"65":0.01892,"68":0.00473,"71":0.00473,"74":0.03311,"75":0.00946,"76":0.01419,"77":0.00473,"78":0.01419,"79":0.05676,"80":0.01419,"81":0.01419,"83":0.02838,"84":0.01419,"85":0.30745,"86":0.03311,"87":0.52503,"88":0.02365,"89":0.06622,"90":0.03784,"91":0.11352,"92":0.4257,"93":1.38116,"94":18.68823,"95":4.89555,"96":0.01892,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 55 56 57 59 60 61 64 66 67 69 70 72 73 97 98"},F:{"78":0.05203,"79":0.55341,"80":0.28853,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":6.2047,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.12912,"10.0-10.2":0.01614,"10.3":0.04611,"11.0-11.2":0.13373,"11.3-11.4":0.05534,"12.0-12.1":0.01845,"12.2-12.5":0.47728,"13.0-13.1":0.02075,"13.2":0.02536,"13.3":0.11298,"13.4-13.7":0.33664,"14.0-14.4":1.30965,"14.5-14.8":14.15945},B:{"12":0.00946,"14":0.00473,"15":0.00473,"16":0.00473,"17":0.01419,"18":0.07095,"84":0.01892,"85":0.00946,"88":0.01419,"89":0.02838,"90":0.00946,"91":0.0473,"92":0.05203,"93":0.30745,"94":5.43004,"95":1.67915,_:"13 79 80 81 83 86 87"},E:{"4":0,"12":0.00473,"13":0.09933,"14":0.58179,"15":2.07174,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00946,"10.1":0.02365,"11.1":0.08514,"12.1":0.07568,"13.1":0.36421,"14.1":3.10288},P:{"4":0.17863,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.05254,"8.2":0.08219,"9.2":0.04203,"10.1":0.03038,"11.1-11.2":0.08406,"12.0":0.01051,"13.0":0.15761,"14.0":0.21015,"15.0":2.65836},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00226,"4.4":0,"4.4.3-4.4.4":0.01355},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.3311,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.30039},Q:{"10.4":0},O:{"0":0.03162},H:{"0":0.09979},L:{"0":27.13053},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js
new file mode 100644
index 0000000000..5b8cd65ed6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PS.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00361,"52":0.02168,"72":0.00361,"78":0.01084,"80":0.01446,"81":0.01084,"83":0.01084,"86":0.00361,"88":0.01084,"89":0.00723,"90":0.00723,"91":0.01807,"92":0.37224,"93":0.78785,"94":0.00723,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 82 84 85 87 95 3.5 3.6"},D:{"34":0.00723,"38":0.0506,"41":0.00723,"43":0.00723,"49":0.27466,"53":0.00361,"56":0.00361,"58":0.00723,"60":0.00361,"63":0.01807,"65":0.00361,"67":0.01807,"69":0.00723,"70":0.01446,"71":0.01084,"72":0.00723,"73":0.00361,"74":0.00723,"76":0.00723,"77":0.21323,"78":0.02168,"79":0.12649,"80":0.0253,"81":0.01084,"83":0.0253,"84":0.08674,"85":0.03975,"86":0.0506,"87":0.1301,"88":0.0253,"89":0.14817,"90":0.0506,"91":0.12288,"92":0.32887,"93":0.91073,"94":21.43825,"95":5.59086,"96":0.01446,"97":0.00723,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 42 44 45 46 47 48 50 51 52 54 55 57 59 61 62 64 66 68 75 98"},F:{"68":0.00361,"72":0.01084,"78":0.03975,"79":0.62884,"80":0.3108,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.24024,"3.2":0.00073,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00438,"6.0-6.1":0.00146,"7.0-7.1":0.06713,"8.1-8.4":0,"9.0-9.2":0.00803,"9.3":0.0394,"10.0-10.2":0.00657,"10.3":0.01678,"11.0-11.2":0.01241,"11.3-11.4":0.02189,"12.0-12.1":0.01824,"12.2-12.5":0.3561,"13.0-13.1":0.00876,"13.2":0.0073,"13.3":0.04743,"13.4-13.7":0.135,"14.0-14.4":0.48964,"14.5-14.8":3.81132},B:{"13":0.00361,"14":0.00361,"15":0.00723,"17":0.01084,"18":0.02891,"84":0.01446,"86":0.00361,"89":0.01807,"90":0.01084,"91":0.00361,"92":0.01084,"93":0.05782,"94":1.25767,"95":0.43007,_:"12 16 79 80 81 83 85 87 88"},E:{"4":0,"13":0.0253,"14":0.09035,"15":0.23852,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01807,"11.1":0.00723,"12.1":0.00723,"13.1":0.03975,"14.1":0.28551},P:{"4":0.12333,"5.0-5.4":0.01135,"6.2-6.4":0.02112,"7.2-7.4":0.10277,"8.2":0.08219,"9.2":0.06166,"10.1":0.01028,"11.1-11.2":0.16443,"12.0":0.07194,"13.0":0.2261,"14.0":0.2261,"15.0":1.88071},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00223,"4.2-4.3":0.01004,"4.4":0,"4.4.3-4.4.4":0.17292},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.0161,"9":0.00805,"10":0.00805,"11":0.14489,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.07025},Q:{"10.4":0},O:{"0":0.06386},H:{"0":0.50181},L:{"0":53.69404},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js
new file mode 100644
index 0000000000..fcef90a293
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PT.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.01324,"49":0.01986,"52":0.04635,"72":0.00662,"78":0.08607,"88":0.01324,"89":0.01986,"90":0.01324,"91":0.02648,"92":0.96005,"93":2.45639,"94":0.01324,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 85 86 87 95 3.5 3.6"},D:{"23":0.01986,"38":0.00662,"43":0.52306,"49":0.23836,"61":0.24498,"62":0.01324,"63":0.01324,"65":0.01986,"67":0.00662,"69":0.00662,"71":0.01324,"74":0.01324,"75":0.03973,"76":0.01986,"77":0.00662,"78":0.01324,"79":0.07945,"80":0.02648,"81":0.01324,"83":0.03311,"84":0.03311,"85":0.03311,"86":0.04635,"87":0.13904,"88":0.04635,"89":0.07945,"90":0.18539,"91":0.25822,"92":0.36416,"93":1.19178,"94":33.58833,"95":10.29566,"96":0.01986,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 64 66 68 70 72 73 97 98"},F:{"77":0.01324,"78":0.22511,"79":2.53584,"80":1.27123,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00173,"15":2.67878,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00086,"6.0-6.1":0,"7.0-7.1":0.00259,"8.1-8.4":0.00432,"9.0-9.2":0.00346,"9.3":0.06997,"10.0-10.2":0.00259,"10.3":0.05874,"11.0-11.2":0.02505,"11.3-11.4":0.01641,"12.0-12.1":0.01123,"12.2-12.5":0.36454,"13.0-13.1":0.02419,"13.2":0.00777,"13.3":0.04233,"13.4-13.7":0.1434,"14.0-14.4":0.52176,"14.5-14.8":4.65699},B:{"15":0.00662,"17":0.00662,"18":0.02648,"84":0.00662,"86":0.01324,"88":0.00662,"89":0.01324,"90":0.01986,"91":0.03973,"92":0.03973,"93":0.09932,"94":3.91301,"95":1.35068,_:"12 13 14 16 79 80 81 83 85 87"},E:{"4":0,"11":0.00662,"13":0.03311,"14":0.38402,"15":1.01301,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01324,"11.1":0.04635,"12.1":0.06621,"13.1":0.2847,"14.1":1.27785},P:{"4":0.05342,"5.0-5.4":0.01073,"6.2-6.4":0.01049,"7.2-7.4":0.0206,"8.2":0.03036,"9.2":0.01068,"10.1":0.0103,"11.1-11.2":0.02137,"12.0":0.02137,"13.0":0.05342,"14.0":0.06411,"15.0":1.35699},I:{"0":0,"3":0,"4":0.0016,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0024,"4.2-4.3":0.0048,"4.4":0,"4.4.3-4.4.4":0.05202},A:{"11":0.5032,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.17909},Q:{"10.4":0},O:{"0":0.17233},H:{"0":0.17915},L:{"0":24.01099},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js
new file mode 100644
index 0000000000..05dd238ac7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PW.js
@@ -0,0 +1 @@
+module.exports={C:{"72":0.02232,"86":0.01785,"87":0.0357,"89":0.32134,"92":0.50432,"93":1.25857,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 78 79 80 81 82 83 84 85 88 90 91 94 95 3.5 3.6"},D:{"48":0.30348,"49":0.05802,"62":0.01339,"72":0.00893,"76":0.6516,"79":0.09372,"81":0.00893,"83":0.07587,"84":0.00893,"85":0.05802,"86":0.01339,"87":0.08926,"89":0.01339,"91":0.0848,"92":0.40167,"93":1.40138,"94":20.07904,"95":5.82422,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57 58 59 60 61 63 64 65 66 67 68 69 70 71 73 74 75 77 78 80 88 90 96 97 98"},F:{"79":0.12943,"80":0.03124,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.0303,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.00377,"10.0-10.2":0.01256,"10.3":0.0201,"11.0-11.2":0.00754,"11.3-11.4":0.34675,"12.0-12.1":0.00377,"12.2-12.5":0.55028,"13.0-13.1":0,"13.2":0,"13.3":0.02387,"13.4-13.7":0.21986,"14.0-14.4":0.57918,"14.5-14.8":7.76547},B:{"17":0.16959,"18":0.01339,"84":0.02678,"85":0.01785,"89":0.01339,"91":0.00893,"92":0.0357,"93":0.03124,"94":2.61532,"95":0.52217,_:"12 13 14 15 16 79 80 81 83 86 87 88 90"},E:{"4":0,"13":0.00893,"14":0.14282,"15":1.15145,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01339,"12.1":0.16959,"13.1":0.12496,"14.1":2.12885},P:{"4":0.01056,"5.0-5.4":0.01135,"6.2-6.4":0.02112,"7.2-7.4":0.29566,"8.2":0.08219,"9.2":0.0411,"10.1":0.02055,"11.1-11.2":0.16895,"12.0":0.09503,"13.0":0.04224,"14.0":0.16895,"15.0":4.76219},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.61589,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0},Q:{"10.4":0.01107},O:{"0":0.2547},H:{"0":0.5609},L:{"0":41.44286},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js
new file mode 100644
index 0000000000..28a4ff505f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/PY.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00484,"24":0.03874,"35":0.09684,"43":0.00242,"47":0.00242,"52":0.30747,"56":0.00726,"57":0.00242,"60":0.00484,"61":0.00242,"63":0.00242,"64":0.00726,"65":0.00484,"66":0.00484,"68":0.00968,"69":0.00242,"71":0.00242,"72":0.00484,"73":0.04358,"78":0.01695,"82":0.02905,"84":0.00484,"85":0.00242,"86":0.00242,"87":0.00242,"88":0.02179,"89":0.01211,"90":0.00484,"91":0.01453,"92":0.29052,"93":0.81588,"94":0.00968,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 44 45 46 48 49 50 51 53 54 55 58 59 62 67 70 74 75 76 77 79 80 81 83 95 3.5 3.6"},D:{"38":0.00484,"47":0.01211,"49":0.10168,"53":0.00242,"63":0.00484,"64":0.17673,"65":0.01453,"66":0.00242,"67":0.00242,"68":0.00484,"69":0.00242,"70":0.00484,"71":0.00726,"73":0.00484,"74":0.00484,"75":0.01211,"76":0.00484,"77":0.00726,"78":0.00726,"79":0.05084,"80":0.01695,"81":0.01937,"83":0.01453,"84":0.00726,"85":0.01211,"86":0.02905,"87":0.32926,"88":0.02663,"89":0.03389,"90":0.02663,"91":0.07263,"92":0.33168,"93":0.43094,"94":12.53352,"95":3.63392,"96":0.00242,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 72 97 98"},F:{"77":0.00242,"78":0.03874,"79":0.75293,"80":0.63188,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.05276,"3.2":0.00049,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00099,"6.0-6.1":0.00148,"7.0-7.1":0.00642,"8.1-8.4":0,"9.0-9.2":0.00198,"9.3":0.01728,"10.0-10.2":0.00247,"10.3":0.01975,"11.0-11.2":0.00938,"11.3-11.4":0.01284,"12.0-12.1":0.00938,"12.2-12.5":0.33874,"13.0-13.1":0.00494,"13.2":0.00296,"13.3":0.01778,"13.4-13.7":0.09431,"14.0-14.4":0.25924,"14.5-14.8":3.08074},B:{"12":0.00726,"14":0.00242,"16":0.00242,"17":0.00484,"18":0.02179,"84":0.00242,"89":0.00726,"91":0.00484,"92":0.01453,"93":0.02905,"94":1.08461,"95":0.32199,_:"13 15 79 80 81 83 85 86 87 88 90"},E:{"4":0,"11":0.00242,"13":0.00242,"14":0.0581,"15":0.14042,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.046,"11.1":0.00242,"12.1":0.00242,"13.1":0.04116,"14.1":0.18642},P:{"4":0.43547,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.61776,"8.2":0.08219,"9.2":0.08102,"10.1":0.03038,"11.1-11.2":0.29369,"12.0":0.1114,"13.0":0.36458,"14.0":0.43547,"15.0":2.25838},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00632,"4.2-4.3":0.00421,"4.4":0,"4.4.3-4.4.4":0.10316},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01211,"11":0.1041,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.06063},Q:{"10.4":0},O:{"0":0.06821},H:{"0":0.18656},L:{"0":66.41349},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js
new file mode 100644
index 0000000000..fd82003db6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/QA.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00652,"78":0.03261,"85":0.00326,"89":0.00978,"91":0.02283,"92":0.25762,"93":0.54785,"94":0.00652,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 86 87 88 90 95 3.5 3.6"},D:{"34":0.00326,"38":0.02283,"49":0.075,"53":0.00326,"56":0.00652,"63":0.00326,"65":0.00652,"67":0.00652,"68":0.00326,"69":0.00978,"73":0.00652,"74":0.05218,"75":0.00978,"76":0.00978,"77":0.00326,"78":0.00978,"79":0.08153,"80":0.01631,"81":0.00978,"83":0.01957,"84":0.03913,"85":0.04565,"86":0.04892,"87":0.10435,"88":0.04565,"89":0.03261,"90":0.04892,"91":0.08805,"92":0.29675,"93":1.05656,"94":16.20065,"95":4.72519,"96":0.01631,"97":0.00326,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 55 57 58 59 60 61 62 64 66 70 71 72 98"},F:{"28":0.00978,"37":0.00652,"46":0.00652,"65":0.00326,"75":0.00326,"78":0.02609,"79":0.4011,"80":0.18262,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.1297,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01456,"6.0-6.1":0.00132,"7.0-7.1":0.01589,"8.1-8.4":0,"9.0-9.2":0.00265,"9.3":0.06354,"10.0-10.2":0.00265,"10.3":0.05295,"11.0-11.2":0.03574,"11.3-11.4":0.01059,"12.0-12.1":0.01191,"12.2-12.5":0.34154,"13.0-13.1":0.01059,"13.2":0.01456,"13.3":0.06222,"13.4-13.7":0.25682,"14.0-14.4":0.80354,"14.5-14.8":6.39789},B:{"16":0.00652,"17":0.00978,"18":0.05218,"84":0.00978,"85":0.00652,"87":0.01304,"89":0.01304,"90":0.00652,"91":0.01304,"92":0.03261,"93":0.09457,"94":2.02182,"95":0.66851,_:"12 13 14 15 79 80 81 83 86 88"},E:{"4":0,"12":0.00326,"13":0.03913,"14":0.27719,"15":0.71742,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01631,"12.1":0.04239,"13.1":0.16957,"14.1":1.20005},P:{"4":0.10231,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.06139,"8.2":0.08219,"9.2":0.02046,"10.1":0.03038,"11.1-11.2":0.09208,"12.0":0.03069,"13.0":0.08185,"14.0":0.1637,"15.0":2.24069},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00096,"4.2-4.3":0.00289,"4.4":0,"4.4.3-4.4.4":0.01637},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.25762,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.11456},Q:{"10.4":0},O:{"0":5.70793},H:{"0":1.11013},L:{"0":46.24792},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js
new file mode 100644
index 0000000000..74bb3a4d70
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RE.js
@@ -0,0 +1 @@
+module.exports={C:{"11":0.06236,"48":0.01439,"49":0.01919,"52":0.02878,"55":0.01919,"56":0.01439,"57":0.0048,"60":0.02878,"61":0.02399,"68":0.01439,"72":0.07675,"75":0.0048,"78":0.42214,"81":0.01919,"82":0.00959,"84":0.05756,"85":0.00959,"87":0.02878,"88":0.03838,"89":0.10074,"90":0.02878,"91":0.10074,"92":1.51106,"93":3.54019,"94":0.0048,_:"2 3 4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 50 51 53 54 58 59 62 63 64 65 66 67 69 70 71 73 74 76 77 79 80 83 86 95 3.5 3.6"},D:{"46":0.01439,"47":0.01919,"49":0.26384,"53":0.00959,"54":0.01439,"56":0.09594,"58":0.01919,"61":0.0048,"63":0.01439,"65":0.01919,"67":0.0048,"70":0.0048,"71":0.01439,"74":0.0048,"75":0.0048,"76":0.03838,"77":0.00959,"78":0.0048,"79":0.06716,"80":0.01439,"81":0.00959,"83":0.00959,"84":0.00959,"85":0.01919,"86":0.01919,"87":2.27378,"88":0.03838,"89":0.03838,"90":0.03358,"91":0.09114,"92":0.33099,"93":1.26161,"94":17.65776,"95":5.09921,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 48 50 51 52 55 57 59 60 62 64 66 68 69 72 73 96 97 98"},F:{"78":0.04797,"79":0.8059,"80":0.45572,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.91867,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00116,"6.0-6.1":0.01745,"7.0-7.1":0.00698,"8.1-8.4":0,"9.0-9.2":0.00116,"9.3":0.20125,"10.0-10.2":0.00233,"10.3":0.07096,"11.0-11.2":0.01163,"11.3-11.4":0.01629,"12.0-12.1":0.04537,"12.2-12.5":0.4816,"13.0-13.1":0.01629,"13.2":0.00698,"13.3":0.07445,"13.4-13.7":0.18845,"14.0-14.4":0.91085,"14.5-14.8":6.65164},B:{"15":0.01439,"16":0.03358,"17":0.02878,"18":0.03838,"84":0.00959,"85":0.00959,"86":0.00959,"89":0.01919,"90":0.01919,"91":0.10074,"92":0.07675,"93":0.11033,"94":3.91435,"95":1.22324,_:"12 13 14 79 80 81 83 87 88"},E:{"4":0,"8":0.0048,"11":0.0048,"12":0.01919,"13":0.10553,"14":0.60442,"15":1.07453,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02399,"11.1":0.04797,"12.1":0.12472,"13.1":0.62361,"14.1":2.19223},P:{"4":0.01036,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.09324,"8.2":0.08219,"9.2":0.04144,"10.1":0.03038,"11.1-11.2":0.29007,"12.0":0.03108,"13.0":0.18648,"14.0":0.31079,"15.0":3.69843},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00196,"4.2-4.3":0.00196,"4.4":0,"4.4.3-4.4.4":0.0481},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.23505,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.3538},Q:{"10.4":0},O:{"0":0.27056},H:{"0":0.16748},L:{"0":36.61296},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js
new file mode 100644
index 0000000000..6ccd2e0abb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RO.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.00427,"52":0.13648,"56":0.00427,"68":0.00427,"72":0.00853,"78":0.08104,"80":0.00427,"81":0.00853,"82":0.0128,"83":0.00427,"84":0.02559,"85":0.00427,"86":0.00853,"87":0.00427,"88":0.02559,"89":0.02559,"90":0.0128,"91":0.03839,"92":0.83168,"93":2.25192,"94":0.01706,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 95 3.5 3.6"},D:{"38":0.00853,"39":0.00427,"49":0.33694,"53":0.00427,"58":0.00427,"60":0.31135,"61":0.30708,"63":0.00427,"64":0.00427,"65":0.00427,"66":0.00427,"67":0.03839,"68":0.00427,"69":0.08957,"70":0.0128,"71":0.01706,"72":0.00853,"73":0.00853,"74":0.0128,"75":0.0128,"76":0.02133,"77":0.0128,"78":0.01706,"79":0.06824,"80":0.03412,"81":0.02986,"83":0.02559,"84":0.03839,"85":0.02559,"86":0.04265,"87":0.33694,"88":0.05545,"89":0.05118,"90":0.05971,"91":0.10663,"92":0.26017,"93":0.80182,"94":21.80695,"95":6.4828,"96":0.0128,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 59 62 97 98"},F:{"36":0.00853,"65":0.00427,"77":0.00427,"78":0.0853,"79":1.68041,"80":0.89139,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.98081,"3.2":0.01705,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.06392,"6.0-6.1":0.00533,"7.0-7.1":0.00426,"8.1-8.4":0.00213,"9.0-9.2":0.00107,"9.3":0.03622,"10.0-10.2":0.00426,"10.3":0.04687,"11.0-11.2":0.02024,"11.3-11.4":0.03409,"12.0-12.1":0.0277,"12.2-12.5":0.33132,"13.0-13.1":0.02131,"13.2":0.01598,"13.3":0.06925,"13.4-13.7":0.21733,"14.0-14.4":0.78728,"14.5-14.8":5.96162},B:{"15":0.02133,"16":0.00427,"17":0.00427,"18":0.02559,"84":0.0128,"85":0.00427,"89":0.0128,"90":0.00427,"91":0.01706,"92":0.02133,"93":0.05971,"94":1.71453,"95":0.56298,_:"12 13 14 79 80 81 83 86 87 88"},E:{"4":0,"13":0.02986,"14":0.11942,"15":0.34547,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00427,"11.1":0.0128,"12.1":0.02133,"13.1":0.0853,"14.1":0.40518},P:{"4":0.14481,"5.0-5.4":0.01073,"6.2-6.4":0.01049,"7.2-7.4":0.0206,"8.2":0.03036,"9.2":0.04137,"10.1":0.01034,"11.1-11.2":0.19653,"12.0":0.07241,"13.0":0.19653,"14.0":0.27928,"15.0":3.27895},I:{"0":0,"3":0,"4":0.00228,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00228,"4.2-4.3":0.02277,"4.4":0,"4.4.3-4.4.4":0.1275},A:{"8":0.01413,"9":0.00471,"11":0.20721,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.18922},Q:{"10.4":0},O:{"0":0.06881},H:{"0":0.29314},L:{"0":42.54477},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js
new file mode 100644
index 0000000000..bf39d4f284
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RS.js
@@ -0,0 +1 @@
+module.exports={C:{"40":0.00418,"48":0.00836,"50":0.01671,"51":0.00418,"52":0.16294,"56":0.01253,"60":0.00418,"61":0.00418,"65":0.00836,"66":0.00836,"67":0.00418,"68":0.00836,"69":0.00836,"72":0.01253,"73":0.01671,"77":0.00418,"78":0.08774,"79":0.00836,"80":0.00836,"81":0.01253,"82":0.00836,"83":0.00836,"84":0.04596,"85":0.00836,"86":0.00418,"87":0.01253,"88":0.06685,"89":0.05014,"90":0.02089,"91":0.05849,"92":1.1782,"93":5.54421,"94":0.04596,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 49 53 54 55 57 58 59 62 63 64 70 71 74 75 76 95 3.5 3.6"},D:{"29":0.00836,"34":0.00836,"38":0.02089,"43":0.00836,"47":0.01253,"48":0.01671,"49":0.23397,"52":0.00418,"53":0.01253,"58":0.00836,"61":0.31753,"63":0.00836,"65":0.00836,"66":0.00418,"67":0.01253,"68":0.01671,"69":0.00418,"70":0.01671,"71":0.01253,"72":0.00836,"73":0.01671,"74":0.00836,"75":0.02089,"76":0.00836,"77":0.01253,"78":0.01253,"79":0.09609,"80":0.04596,"81":0.02925,"83":0.0376,"84":0.06685,"85":0.06685,"86":0.08356,"87":0.17548,"88":0.05431,"89":0.06685,"90":0.05849,"91":0.12116,"92":0.5891,"93":0.85649,"94":19.14777,"95":5.30188,"96":0.00836,"97":0.00418,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 36 37 39 40 41 42 44 45 46 50 51 54 55 56 57 59 60 62 64 98"},F:{"36":0.01671,"77":0.00836,"78":0.05014,"79":1.39545,"80":0.71444,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.84956,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00396,"6.0-6.1":0,"7.0-7.1":0.02769,"8.1-8.4":0.00527,"9.0-9.2":0.00527,"9.3":0.05011,"10.0-10.2":0.01055,"10.3":0.06329,"11.0-11.2":0.03692,"11.3-11.4":0.06725,"12.0-12.1":0.02769,"12.2-12.5":0.74898,"13.0-13.1":0.03428,"13.2":0.01714,"13.3":0.10945,"13.4-13.7":0.37845,"14.0-14.4":1.10765,"14.5-14.8":7.63749},B:{"13":0.00836,"17":0.00418,"18":0.0376,"84":0.00836,"85":0.00418,"86":0.00836,"87":0.00418,"89":0.00836,"90":0.00418,"91":0.01253,"92":0.01253,"93":0.03342,"94":1.14059,"95":0.40109,_:"12 14 15 16 79 80 81 83 88"},E:{"4":0.00418,"12":0.00836,"13":0.01253,"14":0.08774,"15":0.30917,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.01253,"12.1":0.01671,"13.1":0.08356,"14.1":0.30917},P:{"4":0.08352,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.01044,"8.2":0.03147,"9.2":0.01044,"10.1":0.01041,"11.1-11.2":0.15659,"12.0":0.03132,"13.0":0.14615,"14.0":0.15659,"15.0":2.43239},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00178,"4.2-4.3":0.00535,"4.4":0,"4.4.3-4.4.4":0.0278},A:{"8":0.08418,"9":0.01981,"10":0.02971,"11":0.40109,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.21541},Q:{"10.4":0},O:{"0":0.04075},H:{"0":0.29764},L:{"0":42.29728},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js
new file mode 100644
index 0000000000..4808ba4b1f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RU.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.01287,"17":0.00644,"21":0.00644,"33":0.01287,"40":0.01287,"44":0.00644,"45":0.04505,"48":0.01287,"50":0.02574,"51":0.01931,"52":0.34754,"53":0.01931,"54":0.01287,"55":0.05792,"56":0.06436,"57":0.01287,"58":0.00644,"59":0.01287,"60":0.02574,"61":0.01287,"62":0.00644,"63":0.01287,"65":0.00644,"66":0.01287,"67":0.00644,"68":0.03218,"69":0.01287,"70":0.02574,"72":0.02574,"73":0.00644,"74":0.01287,"75":0.01287,"76":0.01287,"77":0.00644,"78":0.14159,"79":0.03218,"80":0.03218,"81":0.03862,"82":0.02574,"83":0.02574,"84":0.0901,"85":0.01287,"86":0.01931,"87":0.01287,"88":0.10298,"89":0.0901,"90":0.09654,"91":0.06436,"92":0.72727,"93":1.71841,"94":0.01931,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 41 42 43 46 47 49 64 71 95 3.5","3.6":0.00644},D:{"24":0.00644,"25":0.00644,"34":0.00644,"36":0.00644,"37":0.00644,"38":0.02574,"39":0.00644,"40":0.00644,"41":0.01931,"43":0.01287,"44":0.00644,"45":0.01287,"46":0.01287,"47":0.01931,"48":0.05149,"49":0.50844,"50":0.01287,"51":0.13516,"53":0.00644,"55":0.00644,"56":0.07723,"57":0.02574,"58":0.01287,"59":0.03218,"60":0.00644,"61":0.37972,"62":0.00644,"63":0.01287,"64":0.01931,"65":0.01287,"66":0.01931,"67":0.01931,"68":0.01287,"69":0.01931,"70":0.05149,"71":0.18021,"72":0.03218,"73":0.14159,"74":0.02574,"75":0.03862,"76":0.10941,"77":0.03218,"78":0.03862,"79":0.65004,"80":0.10941,"81":0.10298,"83":0.19308,"84":0.26388,"85":0.21882,"86":0.36042,"87":1.56395,"88":0.53419,"89":0.21239,"90":0.20595,"91":0.23813,"92":0.81737,"93":1.26789,"94":20.08032,"95":5.15524,"96":0.03862,"97":0.01287,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 26 27 28 29 30 31 32 33 35 42 52 54 98"},F:{"34":0.01287,"35":0.01287,"36":0.04505,"44":0.00644,"54":0.01287,"55":0.00644,"60":0.00644,"68":0.01931,"69":0.00644,"70":0.01287,"71":0.01931,"72":0.01287,"73":0.01287,"74":0.01931,"75":0.01931,"76":0.06436,"77":0.05792,"78":0.19308,"79":4.92998,"80":1.78921,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 56 57 58 62 63 64 65 66 67 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.03862},G:{"8":0.00142,"15":1.9726,"3.2":0.00641,"4.0-4.1":0,"4.2-4.3":0.00142,"5.0-5.1":0.00641,"6.0-6.1":0.00926,"7.0-7.1":0.00926,"8.1-8.4":0.01282,"9.0-9.2":0.01282,"9.3":0.0862,"10.0-10.2":0.01995,"10.3":0.29849,"11.0-11.2":0.03134,"11.3-11.4":0.03633,"12.0-12.1":0.03776,"12.2-12.5":0.34907,"13.0-13.1":0.02778,"13.2":0.01995,"13.3":0.06981,"13.4-13.7":0.27071,"14.0-14.4":0.65183,"14.5-14.8":3.19078},B:{"12":0.01287,"13":0.01287,"14":0.01287,"15":0.01287,"16":0.01931,"17":0.01287,"18":0.07723,"80":0.00644,"81":0.01287,"83":0.01287,"84":0.02574,"85":0.02574,"86":0.02574,"87":0.01287,"89":0.01931,"90":0.01287,"91":0.01931,"92":0.01931,"93":0.05792,"94":1.49959,"95":0.41834,_:"79 88"},E:{"4":0,"10":0.01287,"11":0.01287,"12":0.01931,"13":0.10941,"14":0.30249,"15":0.68222,_:"0 5 6 7 8 9 3.1 3.2 6.1 7.1 9.1","5.1":0.12872,"10.1":0.00644,"11.1":0.01931,"12.1":0.04505,"13.1":0.20595,"14.1":0.79163},P:{"4":0.0944,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.29368,"8.2":0.03147,"9.2":0.05244,"10.1":0.04195,"11.1-11.2":0.24124,"12.0":0.07342,"13.0":0.17831,"14.0":0.30417,"15.0":1.27962},I:{"0":0,"3":0,"4":0.00123,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00245,"4.2-4.3":0.01043,"4.4":0,"4.4.3-4.4.4":0.07853},A:{"6":0.01433,"7":0.01433,"8":0.08599,"9":0.03583,"10":0.043,"11":0.50161,_:"5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.13183},Q:{"10.4":0.01069},O:{"0":0.28148},H:{"0":0.72524},L:{"0":22.80553},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js
new file mode 100644
index 0000000000..4bf06c3f1f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/RW.js
@@ -0,0 +1 @@
+module.exports={C:{"31":0.00934,"34":0.00467,"36":0.00467,"40":0.00934,"43":0.00934,"47":0.014,"48":0.01867,"50":0.014,"52":0.02334,"56":0.00934,"65":0.00467,"66":0.00467,"72":0.00467,"78":0.03734,"80":0.00467,"81":0.00467,"82":0.00467,"87":0.014,"88":0.01867,"89":0.04201,"90":0.01867,"91":0.03734,"92":0.90092,"93":1.90921,"94":0.14938,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 35 37 38 39 41 42 44 45 46 49 51 53 54 55 57 58 59 60 61 62 63 64 67 68 69 70 71 73 74 75 76 77 79 83 84 85 86 95 3.5 3.6"},D:{"38":0.1027,"39":0.07002,"40":0.00467,"49":0.06535,"56":0.00467,"57":0.00467,"60":0.01867,"61":0.00934,"62":0.03268,"63":0.01867,"64":0.00467,"65":0.014,"67":0.014,"68":0.00934,"69":0.00934,"70":0.00467,"71":0.04201,"73":0.014,"74":0.04201,"75":0.00934,"76":0.02801,"77":0.014,"78":0.02801,"79":0.05135,"80":0.31276,"81":0.02334,"83":0.01867,"84":0.11203,"85":0.01867,"86":0.04201,"87":0.07002,"88":0.02801,"89":0.05602,"90":0.1167,"91":0.21473,"92":0.54616,"93":1.32571,"94":22.70982,"95":5.16281,"96":0.08869,"97":0.02334,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 41 42 43 44 45 46 47 48 50 51 52 53 54 55 58 59 66 72 98"},F:{"65":0.00467,"77":0.00934,"78":0.03268,"79":0.63018,"80":0.32209,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.35131,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00242,"6.0-6.1":0.00121,"7.0-7.1":0.00423,"8.1-8.4":0,"9.0-9.2":0.00121,"9.3":0.03266,"10.0-10.2":0.00544,"10.3":0.05565,"11.0-11.2":0.02964,"11.3-11.4":0.02601,"12.0-12.1":0.02722,"12.2-12.5":0.73614,"13.0-13.1":0.02903,"13.2":0.01331,"13.3":0.06412,"13.4-13.7":0.15908,"14.0-14.4":0.81841,"14.5-14.8":2.69052},B:{"12":0.07936,"13":0.07002,"14":0.03268,"15":0.00934,"16":0.02801,"17":0.01867,"18":0.11203,"84":0.02334,"85":0.014,"88":0.00934,"89":0.02334,"90":0.014,"91":0.01867,"92":0.06535,"93":0.1027,"94":3.37963,"95":1.08764,_:"79 80 81 83 86 87"},E:{"4":0,"11":0.00467,"12":0.00467,"13":0.00934,"14":0.14938,"15":0.25674,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1","5.1":0.014,"10.1":0.01867,"11.1":0.00934,"12.1":0.01867,"13.1":0.08869,"14.1":0.38278},P:{"4":0.24332,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.07405,"8.2":0.08219,"9.2":0.04232,"10.1":0.01058,"11.1-11.2":0.16926,"12.0":0.03174,"13.0":0.09521,"14.0":0.30679,"15.0":0.97327},I:{"0":0,"3":0,"4":0.00021,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00036,"4.2-4.3":0.00114,"4.4":0,"4.4.3-4.4.4":0.01963},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.03249,"9":0.00541,"10":0.01083,"11":0.35738,_:"6 7 5.5"},J:{"7":0,"10":0.01067},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.21332},Q:{"10.4":0.016},O:{"0":0.28798},H:{"0":10.61287},L:{"0":37.45971},S:{"2.5":0.05333}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js
new file mode 100644
index 0000000000..d8d668b47a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SA.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00607,"78":0.02733,"84":0.02733,"86":0.00304,"88":0.01519,"89":0.00911,"90":0.00304,"91":0.02733,"92":0.26422,"93":0.61347,"94":0.01215,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 87 95 3.5 3.6"},D:{"11":0.00607,"34":0.00304,"38":0.01215,"43":0.00607,"47":0.00607,"49":0.06681,"53":0.00911,"56":0.01215,"60":0.00304,"61":0.00304,"63":0.01215,"64":0.00607,"65":0.00304,"66":0.00304,"67":0.01822,"68":0.00304,"69":0.01822,"70":0.00304,"71":0.01215,"72":0.00911,"73":0.00607,"74":0.01822,"75":0.01215,"76":0.00607,"77":0.01215,"78":0.00607,"79":0.06681,"80":0.01519,"81":0.01215,"83":0.03948,"84":0.01822,"85":0.04252,"86":0.04556,"87":0.16704,"88":0.08807,"89":0.04859,"90":0.03644,"91":0.08807,"92":0.28244,"93":0.75014,"94":15.51907,"95":4.51298,"96":0.01822,"97":0.00607,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 57 58 59 62 98"},F:{"28":0.00607,"36":0.00304,"46":0.00607,"70":0.00607,"72":0.00607,"73":0.0243,"75":0.01215,"76":0.01215,"77":0.03037,"78":0.04859,"79":0.09415,"80":0.03341,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":7.92414,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00612,"6.0-6.1":0,"7.0-7.1":0.03058,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.07034,"10.0-10.2":0.00918,"10.3":0.05199,"11.0-11.2":0.03058,"11.3-11.4":0.04282,"12.0-12.1":0.08563,"12.2-12.5":0.95726,"13.0-13.1":0.14986,"13.2":0.10704,"13.3":0.38535,"13.4-13.7":1.01537,"14.0-14.4":4.80464,"14.5-14.8":14.89409},B:{"12":0.00911,"14":0.01822,"15":0.00607,"16":0.00607,"17":0.00607,"18":0.03037,"84":0.00911,"86":0.00304,"87":0.00304,"88":0.00607,"89":0.02126,"90":0.00304,"91":0.01215,"92":0.03037,"93":0.1063,"94":1.82827,"95":0.6074,_:"13 79 80 81 83 85"},E:{"4":0,"12":0.00304,"13":0.03341,"14":0.3857,"15":0.69547,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00304,"10.1":0.00911,"11.1":0.01519,"12.1":0.0243,"13.1":0.1397,"14.1":1.08421},P:{"4":0.05204,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.10409,"8.2":0.03147,"9.2":0.02082,"10.1":0.01041,"11.1-11.2":0.15613,"12.0":0.03123,"13.0":0.18736,"14.0":0.24981,"15.0":2.11299},I:{"0":0,"3":0,"4":0.00152,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00152,"4.2-4.3":0.0038,"4.4":0,"4.4.3-4.4.4":0.03495},A:{"8":0.00655,"11":0.49151,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.09053},Q:{"10.4":0},O:{"0":1.55994},H:{"0":0.13186},L:{"0":35.20079},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js
new file mode 100644
index 0000000000..4f49880a0c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SB.js
@@ -0,0 +1 @@
+module.exports={C:{"40":0.00372,"45":0.01116,"68":0.06326,"77":0.01116,"78":0.00372,"79":0.01861,"81":0.00744,"86":0.00372,"88":0.01488,"89":0.08186,"91":0.01488,"92":0.72187,"93":1.44747,"94":0.02977,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 41 42 43 44 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 80 82 83 84 85 87 90 95 3.5 3.6"},D:{"35":0.01861,"38":0.01116,"49":0.00744,"52":0.00744,"53":0.6735,"55":0.00372,"56":0.00372,"60":0.01116,"63":0.01116,"65":0.00372,"67":0.00744,"69":0.05209,"71":0.02233,"73":0.00744,"74":0.01488,"75":0.04465,"76":0.03349,"77":0.00744,"78":0.00744,"79":0.03721,"80":0.01116,"81":0.0707,"83":0.03721,"85":0.00744,"86":0.01488,"87":0.0893,"88":0.04465,"89":0.02233,"90":0.02605,"91":0.06698,"92":0.13024,"93":0.40559,"94":11.18905,"95":3.50518,"96":0.00372,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 40 41 42 43 44 45 46 47 48 50 51 54 57 58 59 61 62 64 66 68 70 72 84 97 98"},F:{"53":0.00744,"79":0.10047,"80":0.26791,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.02901,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00038,"9.0-9.2":0.00038,"9.3":0.00697,"10.0-10.2":0.00622,"10.3":0.00301,"11.0-11.2":0.00132,"11.3-11.4":0.00188,"12.0-12.1":0.01281,"12.2-12.5":0.77217,"13.0-13.1":0.08816,"13.2":0.0049,"13.3":0.01978,"13.4-13.7":0.55215,"14.0-14.4":0.16578,"14.5-14.8":0.21909},B:{"12":0.04837,"13":0.06698,"14":0.03721,"15":0.18605,"16":0.18233,"17":0.24187,"18":1.7191,"84":0.01488,"85":0.11163,"86":0.04093,"87":0.00372,"88":0.01861,"89":0.0707,"90":0.05209,"91":0.06326,"92":0.27535,"93":0.1414,"94":3.35634,"95":0.77397,_:"79 80 81 83"},E:{"4":0,"7":0.04465,"10":0.00744,"12":0.00744,"14":0.04093,"15":0.05582,_:"0 5 6 8 9 11 13 3.1 3.2 5.1 6.1 7.1 9.1 11.1","10.1":0.04093,"12.1":0.04465,"13.1":0.00744,"14.1":0.21954},P:{"4":0.32743,"5.0-5.4":0.03067,"6.2-6.4":0.13302,"7.2-7.4":0.29673,"8.2":0.01023,"9.2":0.14325,"10.1":0.20499,"11.1-11.2":0.38882,"12.0":0.04093,"13.0":0.15348,"14.0":0.33766,"15.0":1.72922},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00314,"4.4":0,"4.4.3-4.4.4":0.09106},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"9":0.01488,"11":1.45863,_:"6 7 8 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.05024},Q:{"10.4":0.24492},O:{"0":4.2076},H:{"0":1.86094},L:{"0":58.0137},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js
new file mode 100644
index 0000000000..e68a72fde8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SC.js
@@ -0,0 +1 @@
+module.exports={C:{"5":0.00492,"17":0.01477,"29":0.00984,"30":0.00984,"33":0.01477,"34":0.00984,"36":0.00984,"38":0.00984,"40":0.01477,"41":0.00984,"42":0.01477,"43":0.01969,"44":0.00984,"45":0.00492,"47":0.00984,"50":0.10828,"51":0.06399,"52":0.14274,"53":0.07875,"54":0.0886,"55":0.05414,"56":0.07875,"57":0.09352,"58":0.08367,"59":0.24118,"60":0.18211,"61":0.28548,"62":0.13289,"63":0.18211,"64":0.02953,"65":0.0443,"66":0.03938,"67":0.03445,"68":0.08367,"69":0.03445,"70":0.35931,"71":0.01969,"72":0.01969,"73":0.05414,"74":0.02461,"75":0.02461,"76":0.02953,"77":0.03445,"78":0.81705,"79":0.03445,"80":0.1575,"81":0.02953,"82":0.02461,"83":0.07383,"84":0.04922,"86":0.00492,"87":0.00984,"88":0.00492,"89":0.00984,"90":0.03938,"91":0.05414,"92":0.76783,"93":2.1263,"94":0.0443,_:"2 3 4 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 31 32 35 37 39 46 48 49 85 95 3.5 3.6"},D:{"10":0.00984,"11":0.00492,"21":0.00492,"25":0.00492,"26":0.00492,"31":0.01477,"34":0.00492,"35":0.00984,"36":0.01969,"37":0.00984,"38":0.00984,"39":0.01477,"40":0.01969,"41":0.06891,"42":0.02953,"43":0.01969,"44":0.00984,"45":0.02461,"46":0.04922,"47":0.04922,"48":0.02461,"49":1.25511,"50":0.01969,"51":0.01969,"52":0.00984,"53":0.02461,"54":0.02953,"55":0.04922,"56":0.05414,"57":0.06399,"58":0.02953,"59":0.01969,"60":0.06399,"61":0.03938,"62":0.03445,"63":0.05414,"64":0.05906,"65":0.0443,"66":0.07383,"67":0.06399,"68":0.13289,"69":0.22149,"70":0.19196,"71":0.11321,"72":2.85476,"73":0.0443,"74":0.08367,"75":0.08367,"76":0.05414,"77":0.03445,"78":0.38392,"79":0.19688,"80":0.28548,"81":0.06891,"83":0.34454,"84":0.46759,"85":0.12797,"86":0.57095,"87":3.08609,"88":0.28055,"89":0.52173,"90":0.09352,"91":0.15258,"92":1.16159,"93":1.77684,"94":10.24268,"95":2.39209,"96":0.00492,_:"4 5 6 7 8 9 12 13 14 15 16 17 18 19 20 22 23 24 27 28 29 30 32 33 97 98"},F:{"9":0.01477,"12":0.00492,"18":0.00984,"27":0.00492,"32":0.01477,"33":0.00984,"34":0.01969,"36":0.00984,"38":0.00984,"39":0.00984,"42":0.01477,"43":0.0443,"44":0.00984,"46":0.01969,"47":0.01477,"48":0.22149,"49":0.03445,"50":0.01969,"51":0.01969,"52":0.03445,"53":0.06399,"54":0.07875,"55":0.07875,"56":0.0443,"57":0.00492,"58":0.00492,"60":0.00492,"62":0.00492,"63":0.00492,"65":0.03445,"66":0.01969,"67":0.0443,"68":0.03445,"70":0.05414,"71":0.01969,"72":0.00492,"75":0.00984,"77":0.01477,"78":0.01477,"79":0.47743,"80":0.25594,_:"11 15 16 17 19 20 21 22 23 24 25 26 28 29 30 31 35 37 40 41 45 64 69 73 74 76 10.5 10.6 11.1 11.6","9.5-9.6":0.00492,"10.0-10.1":0.00492,"11.5":0.00492,"12.1":0.07383},G:{"8":0.02232,"15":2.55209,"3.2":0.00638,"4.0-4.1":0.00638,"4.2-4.3":0.04677,"5.0-5.1":0.03827,"6.0-6.1":0.06059,"7.0-7.1":0.0861,"8.1-8.4":0.11799,"9.0-9.2":0.10736,"9.3":0.1807,"10.0-10.2":0.11692,"10.3":0.16688,"11.0-11.2":0.22853,"11.3-11.4":0.14987,"12.0-12.1":0.17219,"12.2-12.5":0.56016,"13.0-13.1":0.16688,"13.2":0.05634,"13.3":0.21365,"13.4-13.7":0.97577,"14.0-14.4":0.76743,"14.5-14.8":3.83079},B:{"12":0.09844,"13":0.08367,"14":0.13289,"15":0.09844,"16":0.16243,"17":0.09844,"18":0.62509,"79":0.05414,"80":0.06399,"81":0.11321,"83":0.10828,"84":0.15258,"85":0.07875,"86":0.12305,"87":0.05906,"88":0.01477,"89":0.02953,"91":0.01969,"92":0.07875,"93":0.18211,"94":2.08693,"95":0.59064,_:"90"},E:{"4":0,"10":0.03938,"11":0.07383,"12":0.10336,"13":0.51681,"14":0.35438,"15":0.35438,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02461,"11.1":0.05906,"12.1":0.14274,"13.1":0.19196,"14.1":1.1862},P:{"4":0.14349,"5.0-5.4":0.041,"6.2-6.4":0.041,"7.2-7.4":0.64573,"8.2":0.05124,"9.2":0.13324,"10.1":0.20499,"11.1-11.2":0.38948,"12.0":0.44073,"13.0":0.61498,"14.0":0.18449,"15.0":2.23441},I:{"0":0,"3":0,"4":0.00235,"2.1":0,"2.2":0.00188,"2.3":0,"4.1":0.00329,"4.2-4.3":0.01409,"4.4":0,"4.4.3-4.4.4":0.05966},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00984,"9":0.01477,"10":0.00492,"11":0.46759,_:"6 7 5.5"},J:{"7":0,"10":0.06603},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.37077},Q:{"10.4":0},O:{"0":3.53498},H:{"0":1.15403},L:{"0":31.04601},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js
new file mode 100644
index 0000000000..827892caf2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SD.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00144,"21":0.00288,"23":0.00144,"28":0.00288,"30":0.00288,"33":0.00144,"34":0.00863,"35":0.00288,"36":0.00288,"37":0.00288,"38":0.00288,"39":0.00288,"40":0.00288,"41":0.00432,"42":0.00432,"43":0.01151,"44":0.00863,"45":0.00144,"47":0.01295,"48":0.00432,"49":0.00576,"50":0.00863,"51":0.00144,"52":0.04029,"53":0.00288,"54":0.00432,"56":0.02446,"57":0.00432,"58":0.00288,"59":0.00288,"60":0.00432,"61":0.00288,"62":0.00288,"63":0.00144,"65":0.00288,"66":0.00288,"68":0.00432,"69":0.00144,"70":0.00576,"72":0.02159,"74":0.00288,"76":0.0072,"77":0.00288,"78":0.03741,"79":0.00432,"80":0.00288,"81":0.00432,"82":0.00144,"83":0.00288,"84":0.00576,"85":0.00432,"86":0.00288,"87":0.00576,"88":0.01295,"89":0.10793,"90":0.01295,"91":0.02734,"92":0.62597,"93":1.12242,"94":0.04893,"95":0.00144,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 22 24 25 26 27 29 31 32 46 55 64 67 71 73 75 3.5 3.6"},D:{"11":0.00432,"20":0.00144,"26":0.00576,"28":0.00288,"29":0.00863,"30":0.00288,"32":0.00432,"33":0.0072,"37":0.00863,"38":0.00288,"40":0.00288,"41":0.00144,"43":0.04749,"45":0.00144,"46":0.00144,"47":0.00432,"48":0.0259,"49":0.02734,"50":0.00288,"51":0.00432,"52":0.00288,"53":0.00144,"54":0.00288,"55":0.00432,"56":0.01007,"57":0.01151,"58":0.0072,"59":0.00432,"60":0.00432,"61":0.01151,"62":0.00144,"63":0.01871,"64":0.01727,"65":0.00288,"66":0.00432,"67":0.00432,"68":0.00288,"69":0.03598,"70":0.01439,"71":0.00863,"72":0.00576,"73":0.00863,"74":0.01439,"75":0.01151,"76":0.00863,"77":0.00576,"78":0.01439,"79":0.12663,"80":0.02159,"81":0.02159,"83":0.01727,"84":0.01439,"85":0.01583,"86":0.10793,"87":0.74828,"88":0.0331,"89":0.02446,"90":0.06476,"91":0.09929,"92":0.28636,"93":0.29356,"94":4.62926,"95":0.47631,"96":0.00576,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 21 22 23 24 25 27 31 34 35 36 39 42 44 97 98"},F:{"18":0.00576,"36":0.00288,"42":0.00288,"54":0.00144,"55":0.00144,"65":0.00288,"71":0.00863,"73":0.01007,"74":0.00288,"75":0.02302,"77":0.01007,"78":0.01871,"79":0.53243,"80":0.13383,_:"9 11 12 15 16 17 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 56 57 58 60 62 63 64 66 67 68 69 70 72 76 9.5-9.6 10.5 10.6 11.1 11.6","10.0-10.1":0,"11.5":0.00576,"12.1":0.00288},G:{"8":0,"15":0.81336,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00139,"5.0-5.1":0.00093,"6.0-6.1":0.00139,"7.0-7.1":0.01393,"8.1-8.4":0.01021,"9.0-9.2":0.00093,"9.3":0.03435,"10.0-10.2":0.00325,"10.3":0.02785,"11.0-11.2":0.03435,"11.3-11.4":0.03575,"12.0-12.1":0.04178,"12.2-12.5":0.66759,"13.0-13.1":0.04271,"13.2":0.02507,"13.3":0.06592,"13.4-13.7":0.24605,"14.0-14.4":1.13787,"14.5-14.8":1.43591},B:{"12":0.0259,"13":0.01871,"14":0.06476,"15":0.01151,"16":0.01727,"17":0.04317,"18":0.07915,"80":0.00432,"81":0.00288,"83":0.00432,"84":0.01727,"85":0.00576,"86":0.00288,"87":0.00288,"88":0.01727,"89":0.01727,"90":0.00863,"91":0.01151,"92":0.03598,"93":0.05612,"94":0.76699,"95":0.19427,_:"79"},E:{"4":0,"10":0.00288,"11":0.00144,"12":0.00288,"13":0.01727,"14":0.05468,"15":0.08202,_:"0 5 6 7 8 9 3.1 3.2 6.1 7.1 10.1","5.1":0.01583,"9.1":0.00288,"11.1":0.01295,"12.1":0.01727,"13.1":0.12663,"14.1":0.21441},P:{"4":0.92099,"5.0-5.4":0.07085,"6.2-6.4":0.11133,"7.2-7.4":0.39471,"8.2":0.03044,"9.2":0.11133,"10.1":0.04048,"11.1-11.2":0.31374,"12.0":0.09109,"13.0":0.2935,"14.0":0.55664,"15.0":0.93111},I:{"0":0,"3":0,"4":0.00085,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00254,"4.2-4.3":0.01778,"4.4":0,"4.4.3-4.4.4":0.13295},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00373,"9":0.00746,"11":0.61189,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.12843},Q:{"10.4":0},O:{"0":1.9607},H:{"0":7.43315},L:{"0":67.96984},S:{"2.5":0.02569}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js
new file mode 100644
index 0000000000..4546593d10
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SE.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.02782,"59":0.01113,"78":0.08901,"84":0.01113,"86":0.01669,"87":0.00556,"88":0.02782,"89":0.01669,"90":0.00556,"91":0.03894,"92":0.63975,"93":1.44638,"94":0.01113,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 85 95 3.5 3.6"},D:{"29":0.00556,"34":0.00556,"36":0.00556,"38":0.01113,"39":0.00556,"41":0.00556,"43":0.00556,"45":0.00556,"46":0.01113,"49":0.05563,"53":0.00556,"61":0.13351,"62":0.00556,"63":0.01113,"64":0.00556,"65":0.01669,"66":0.0445,"67":0.01669,"69":0.14464,"70":0.00556,"71":0.01113,"72":0.00556,"73":0.01113,"74":0.00556,"75":0.0445,"76":0.05007,"77":0.02782,"78":0.01113,"79":0.06119,"80":0.02225,"81":0.01669,"83":0.01669,"84":0.02782,"85":0.03338,"86":0.07788,"87":0.29484,"88":0.11682,"89":0.07232,"90":0.30597,"91":0.3004,"92":1.26836,"93":7.48224,"94":21.60113,"95":4.53385,"96":0.01113,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 35 37 40 42 44 47 48 50 51 52 54 55 56 57 58 59 60 68 97 98"},F:{"69":0.00556,"76":0.01113,"78":0.09457,"79":0.90677,"80":0.4506,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.89376,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00484,"8.1-8.4":0.00967,"9.0-9.2":0.00484,"9.3":0.08223,"10.0-10.2":0.00484,"10.3":0.13785,"11.0-11.2":0.0266,"11.3-11.4":0.06046,"12.0-12.1":0.05079,"12.2-12.5":0.86824,"13.0-13.1":0.03628,"13.2":0.02418,"13.3":0.13544,"13.4-13.7":0.37487,"14.0-14.4":1.44626,"14.5-14.8":17.01164},B:{"16":0.00556,"17":0.01113,"18":0.02782,"84":0.00556,"85":0.01113,"86":0.01113,"87":0.00556,"88":0.01669,"89":0.02782,"90":0.01669,"91":0.03338,"92":0.06119,"93":0.32265,"94":4.23901,"95":1.14042,_:"12 13 14 15 79 80 81 83"},E:{"4":0,"12":0.01113,"13":0.11126,"14":0.9624,"15":1.45751,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02225,"11.1":0.06119,"12.1":0.12239,"13.1":0.56186,"14.1":4.25013},P:{"4":0.04258,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.02129,"12.0":0.02129,"13.0":0.07452,"14.0":0.15969,"15.0":3.17254},I:{"0":0,"3":0,"4":0.00135,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00068,"4.2-4.3":0.00338,"4.4":0,"4.4.3-4.4.4":0.02566},A:{"11":0.22808,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.29284},Q:{"10.4":0},O:{"0":0.02662},H:{"0":0.40746},L:{"0":16.42421},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js
new file mode 100644
index 0000000000..c814207e31
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SG.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00345,"48":0.00691,"52":0.01382,"55":0.00345,"56":0.00691,"63":0.00691,"65":0.00345,"78":0.06217,"79":0.00691,"80":0.01036,"81":0.00345,"82":0.00691,"83":0.00345,"84":0.01382,"87":0.00691,"88":0.01382,"89":0.01382,"90":0.01727,"91":0.02072,"92":0.42139,"93":1.06038,"94":0.00345,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 57 58 59 60 61 62 64 66 67 68 69 70 71 72 73 74 75 76 77 85 86 95 3.5 3.6"},D:{"22":0.00691,"24":0.00345,"26":0.00691,"34":0.05181,"38":0.13471,"47":0.02763,"49":0.22106,"50":0.00345,"53":0.03454,"55":0.01036,"56":0.01382,"57":0.00691,"62":0.01382,"64":0.03454,"65":0.02418,"66":0.07944,"67":0.01727,"68":0.01036,"69":0.01382,"70":0.04145,"71":0.00691,"72":0.04145,"73":0.01382,"74":0.01036,"75":0.01727,"76":0.01382,"77":0.01382,"78":0.02072,"79":0.34195,"80":0.06908,"81":0.04836,"83":0.07599,"84":0.07253,"85":0.0829,"86":0.0898,"87":0.24178,"88":0.05526,"89":0.04836,"90":0.05526,"91":0.16579,"92":0.48701,"93":1.18818,"94":16.22344,"95":3.54726,"96":0.01382,"97":0.00345,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 25 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 51 52 54 58 59 60 61 63 98"},F:{"28":0.01036,"36":0.01727,"40":0.01036,"46":0.03454,"71":0.00691,"78":0.02072,"79":0.26596,"80":0.11398,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.41551,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00318,"5.0-5.1":0.00635,"6.0-6.1":0.01429,"7.0-7.1":0.02224,"8.1-8.4":0.02224,"9.0-9.2":0.01588,"9.3":0.18266,"10.0-10.2":0.02541,"10.3":0.11277,"11.0-11.2":0.04606,"11.3-11.4":0.04924,"12.0-12.1":0.054,"12.2-12.5":0.63374,"13.0-13.1":0.03971,"13.2":0.02065,"13.3":0.09053,"13.4-13.7":0.3129,"14.0-14.4":0.92281,"14.5-14.8":8.89455},B:{"17":0.00691,"18":0.01727,"84":0.00691,"85":0.00345,"86":0.01382,"87":0.00345,"89":0.00345,"90":0.00691,"91":0.00691,"92":0.02072,"93":0.06908,"94":1.7719,"95":0.51465,_:"12 13 14 15 16 79 80 81 83 88"},E:{"4":0,"8":0.00345,"11":0.01382,"12":0.00691,"13":0.07944,"14":0.45938,"15":1.11564,_:"0 5 6 7 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.00345,"10.1":0.01382,"11.1":0.03454,"12.1":0.05181,"13.1":0.29359,"14.1":2.33145},P:{"4":0.53819,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.01044,"8.2":0.03147,"9.2":0.01035,"10.1":0.01041,"11.1-11.2":0.0207,"12.0":0.05175,"13.0":0.0828,"14.0":0.0828,"15.0":3.0946},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":3.48647,"4.4":0,"4.4.3-4.4.4":14.64318},A:{"7":0.01854,"8":0.01236,"9":0.01854,"10":0.00618,"11":0.41412,_:"6 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.42543},Q:{"10.4":0.05891},O:{"0":0.68068},H:{"0":0.57626},L:{"0":22.8418},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js
new file mode 100644
index 0000000000..92fef6ba04
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SH.js
@@ -0,0 +1 @@
+module.exports={C:{"63":0.4347,"91":0.6555,"93":4.5885,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 92 94 95 3.5 3.6"},D:{"49":24.0189,"79":0.2208,"81":2.622,"93":0.2208,"94":14.8488,"95":17.4708,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 83 84 85 86 87 88 89 90 91 92 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.21614,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":1.29636,"13.0-13.1":0,"13.2":0,"13.3":0.86407,"13.4-13.7":0,"14.0-14.4":0.21614,"14.5-14.8":2.37658},B:{"17":1.311,"92":1.311,_:"12 13 14 15 16 18 79 80 81 83 84 85 86 87 88 89 90 91 93 94 95"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.24332,"5.0-5.4":0.01013,"6.2-6.4":0.03038,"7.2-7.4":0.07405,"8.2":0.08219,"9.2":0.04232,"10.1":0.01058,"11.1-11.2":0.23281,"12.0":1.41804,"13.0":0.09521,"14.0":0.30679,"15.0":6.86795},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.0902,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":17.7327},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js
new file mode 100644
index 0000000000..6268b3e777
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SI.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.20578,"53":0.00572,"57":0.00572,"60":0.02858,"61":0.00572,"66":0.07431,"67":0.00572,"68":0.02286,"72":0.00572,"76":0.00572,"78":0.38297,"82":0.00572,"83":0.01715,"84":0.02858,"85":0.00572,"86":0.01143,"87":0.00572,"88":0.08574,"89":0.05716,"90":0.19434,"91":0.05144,"92":2.32641,"93":5.21871,"94":0.01143,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 54 55 56 58 59 62 63 64 65 69 70 71 73 74 75 77 79 80 81 95 3.5 3.6"},D:{"38":0.01715,"49":0.15433,"51":0.02286,"56":0.00572,"62":0.00572,"63":0.02858,"67":0.01143,"69":0.01143,"70":0.01143,"73":0.01143,"74":0.01143,"75":0.01143,"76":0.01143,"77":0.00572,"78":0.01143,"79":0.06288,"80":0.04573,"81":0.01715,"83":0.02286,"84":0.0343,"85":0.02286,"86":0.0343,"87":0.13718,"88":0.0343,"89":0.06859,"90":0.1429,"91":0.13147,"92":0.41727,"93":1.49759,"94":25.67627,"95":7.64801,"96":0.22864,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 52 53 54 55 57 58 59 60 61 64 65 66 68 71 72 97 98"},F:{"46":0.01143,"75":0.00572,"78":0.09717,"79":1.13177,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 76 77 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.83019,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00487,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.14993,"10.0-10.2":0.00487,"10.3":0.04673,"11.0-11.2":0.02045,"11.3-11.4":0.02142,"12.0-12.1":0.0516,"12.2-12.5":0.22392,"13.0-13.1":0.0185,"13.2":0.00876,"13.3":0.03602,"13.4-13.7":0.16453,"14.0-14.4":0.76523,"14.5-14.8":5.38194},B:{"16":0.01143,"18":0.02858,"87":0.00572,"89":0.02286,"90":0.00572,"91":0.01715,"92":0.06288,"93":0.12575,"94":3.80686,_:"12 13 14 15 17 79 80 81 83 84 85 86 88 95"},E:{"4":0,"5":0.01143,"10":0.02286,"12":0.00572,"13":0.0343,"14":0.2858,"15":0.84597,_:"0 6 7 8 9 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01143,"10.1":0.01143,"11.1":0.02286,"12.1":0.0343,"13.1":0.21721,"14.1":1.16606},P:{"4":0.02098,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 9.2 10.1","11.1-11.2":0.06295,"12.0":0.05246,"13.0":0.1364,"14.0":0.19935,"15.0":3.03217},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0024,"4.2-4.3":0.0024,"4.4":0,"4.4.3-4.4.4":0.02519},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.6802,_:"6 7 8 9 10 5.5"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0},O:{"0":0.01285},H:{"0":0.25146},L:{"0":29.53309},S:{"2.5":0},R:{_:"0"},M:{"0":0.51408}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js
new file mode 100644
index 0000000000..d35c3b3553
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SK.js
@@ -0,0 +1 @@
+module.exports={C:{"33":0.00508,"48":0.00508,"52":0.19312,"56":0.01016,"57":0.00508,"68":0.04066,"70":0.00508,"72":0.02541,"78":0.16771,"80":0.01016,"81":0.00508,"82":0.00508,"83":0.01016,"84":0.01016,"85":0.01016,"86":0.00508,"87":0.02033,"88":0.03557,"89":0.04066,"90":0.03049,"91":0.09148,"92":1.73804,"93":4.44167,"94":0.02541,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 58 59 60 61 62 63 64 65 66 67 69 71 73 74 75 76 77 79 95 3.5 3.6"},D:{"26":0.00508,"38":0.03557,"43":0.01525,"47":0.01525,"49":0.26426,"53":0.04574,"63":0.07115,"64":0.00508,"67":0.01525,"68":0.01016,"69":0.02033,"70":0.01525,"71":0.01525,"72":0.01016,"73":0.01016,"74":0.00508,"75":0.01525,"76":0.01016,"77":0.01016,"78":0.01016,"79":0.22361,"80":0.01525,"81":0.05082,"83":0.02541,"84":0.04066,"85":0.04066,"86":0.10164,"87":0.09148,"88":0.04066,"89":0.08639,"90":0.06607,"91":0.10164,"92":0.29984,"93":0.96558,"94":22.83851,"95":6.81496,"96":0.01016,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 48 50 51 52 54 55 56 57 58 59 60 61 62 65 66 97 98"},F:{"28":0.01016,"36":0.01016,"46":0.02033,"69":0.01016,"72":0.00508,"77":0.00508,"78":0.09656,"79":2.01247,"80":1.04689,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01525},G:{"8":0,"15":3.147,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00717,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00205,"9.0-9.2":0.00102,"9.3":0.04714,"10.0-10.2":0.00717,"10.3":0.08096,"11.0-11.2":0.0123,"11.3-11.4":0.04099,"12.0-12.1":0.02152,"12.2-12.5":0.30435,"13.0-13.1":0.01127,"13.2":0.01947,"13.3":0.05636,"13.4-13.7":0.13424,"14.0-14.4":0.60153,"14.5-14.8":5.74473},B:{"15":0.00508,"16":0.01525,"17":0.01016,"18":0.02541,"84":0.01016,"86":0.01016,"87":0.01016,"89":0.01525,"90":0.00508,"91":0.01525,"92":0.04066,"93":0.11689,"94":2.851,"95":0.98591,_:"12 13 14 79 80 81 83 85 88"},E:{"4":0,"12":0.00508,"13":0.02541,"14":0.32525,"15":0.91476,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.02033,"12.1":0.04066,"13.1":0.19312,"14.1":0.99099},P:{"4":0.34207,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.01044,"8.2":0.03147,"9.2":0.01035,"10.1":0.01041,"11.1-11.2":0.05183,"12.0":0.02073,"13.0":0.09329,"14.0":0.14512,"15.0":2.04203},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00182,"4.2-4.3":0.00726,"4.4":0,"4.4.3-4.4.4":0.06961},A:{"11":0.34049,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.28524},Q:{"10.4":0},O:{"0":0.03934},H:{"0":0.46095},L:{"0":36.01354},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js
new file mode 100644
index 0000000000..f5f7824a3e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SL.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.0025,"17":0.01,"29":0.0025,"30":0.005,"41":0.0075,"43":0.0075,"44":0.005,"48":0.0025,"68":0.0025,"72":0.0025,"78":0.01,"84":0.0025,"87":0.0025,"88":0.005,"89":0.0075,"90":0.0075,"91":0.0125,"92":0.31987,"93":0.70972,"94":0.07247,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 31 32 33 34 35 36 37 38 39 40 42 45 46 47 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 83 85 86 95 3.5 3.6"},D:{"11":0.0025,"24":0.0025,"30":0.0025,"33":0.05248,"34":0.02999,"38":0.02249,"40":0.0025,"42":0.0025,"43":0.0075,"49":0.0075,"55":0.005,"56":0.005,"57":0.0075,"58":0.005,"60":0.0125,"63":0.005,"64":0.005,"65":0.0025,"69":0.01,"70":0.005,"71":0.02999,"72":0.01749,"74":0.01,"75":0.01499,"76":0.01499,"77":0.01749,"79":0.01999,"80":0.005,"81":0.0125,"83":0.0125,"84":0.03249,"85":0.005,"86":0.05998,"87":0.03998,"88":0.01749,"89":0.0125,"90":0.05748,"91":0.20742,"92":0.2549,"93":1.02459,"94":5.64524,"95":2.12165,"96":0.0025,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 31 32 35 36 37 39 41 44 45 46 47 48 50 51 52 53 54 59 61 62 66 67 68 73 78 97 98"},F:{"38":0.005,"42":0.0025,"43":0.0025,"51":0.0025,"62":0.005,"65":0.02999,"77":0.01499,"78":0.07997,"79":0.47731,"80":0.28489,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 44 45 46 47 48 49 50 52 53 54 55 56 57 58 60 63 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.39914,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.06285,"8.1-8.4":0,"9.0-9.2":0.0055,"9.3":0.04949,"10.0-10.2":0.00628,"10.3":0.04007,"11.0-11.2":0.01728,"11.3-11.4":0.02121,"12.0-12.1":0.05656,"12.2-12.5":0.51063,"13.0-13.1":0.12334,"13.2":0.01807,"13.3":0.18383,"13.4-13.7":0.34252,"14.0-14.4":2.18473,"14.5-14.8":2.83205},B:{"12":0.04248,"13":0.03249,"14":0.01499,"15":0.0075,"16":0.01499,"17":0.01499,"18":0.10496,"80":0.005,"84":0.01749,"85":0.01499,"87":0.0125,"88":0.0025,"89":0.03998,"90":0.005,"91":0.01,"92":0.02499,"93":0.08996,"94":1.65934,"95":0.52229,_:"79 81 83 86"},E:{"4":0,"8":0.0025,"10":0.0125,"13":0.0075,"14":0.06997,"15":0.16743,_:"0 5 6 7 9 11 12 3.1 3.2 6.1 9.1 10.1","5.1":0.01,"7.1":0.005,"11.1":0.0125,"12.1":0.07747,"13.1":0.02499,"14.1":0.17243},P:{"4":0.31697,"5.0-5.4":0.03067,"6.2-6.4":0.041,"7.2-7.4":0.13292,"8.2":0.05124,"9.2":0.02045,"10.1":0.20499,"11.1-11.2":0.14315,"12.0":0.0409,"13.0":0.1227,"14.0":0.14315,"15.0":0.87934},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00067,"4.2-4.3":0.00157,"4.4":0,"4.4.3-4.4.4":0.03526},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00455,"10":0.02275,"11":0.15013,_:"6 7 9 5.5"},J:{"7":0,"10":0.015},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.18753},Q:{"10.4":0},O:{"0":2.03277},H:{"0":19.08873},L:{"0":51.74464},S:{"2.5":0.015}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js
new file mode 100644
index 0000000000..c3d1256eeb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SM.js
@@ -0,0 +1 @@
+module.exports={C:{"48":0.0064,"52":0.04478,"56":0.03199,"60":0.01919,"78":0.17272,"86":0.01919,"88":0.01279,"90":0.0064,"91":0.02559,"92":1.65043,"93":3.34563,"94":0.01279,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 87 89 95 3.5 3.6"},D:{"49":0.16632,"64":0.03199,"71":0.01279,"74":0.01279,"76":1.01073,"77":0.10875,"79":0.02559,"81":0.01919,"86":0.01919,"87":0.12154,"88":0.0064,"90":0.01919,"91":0.07676,"92":0.19191,"93":0.99154,"94":29.66929,"95":9.25646,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 65 66 67 68 69 70 72 73 75 78 80 83 84 85 89 96 97 98"},F:{"78":0.28787,"79":0.40301,"80":0.17272,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.86859,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.06866,"8.1-8.4":0,"9.0-9.2":0.00366,"9.3":0.03662,"10.0-10.2":0,"10.3":0.01282,"11.0-11.2":0.01465,"11.3-11.4":0.01282,"12.0-12.1":0.01282,"12.2-12.5":0.95673,"13.0-13.1":0.02563,"13.2":0.00183,"13.3":0.04395,"13.4-13.7":0.07874,"14.0-14.4":0.57312,"14.5-14.8":5.44098},B:{"16":0.0064,"18":0.02559,"89":0.01279,"90":0.01279,"91":0.01919,"92":0.02559,"93":0.01919,"94":5.64855,"95":1.17065,_:"12 13 14 15 17 79 80 81 83 84 85 86 87 88"},E:{"4":0,"13":0.01919,"14":0.28787,"15":1.25381,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.47978,"12.1":0.16632,"13.1":0.75485,"14.1":3.73585},P:{"4":0.53294,"5.0-5.4":0.01025,"6.2-6.4":0.05124,"7.2-7.4":0.77892,"8.2":0.05124,"9.2":1.39385,"10.1":0.041,"11.1-11.2":4.61548,"12.0":0.04177,"13.0":0.01044,"14.0":0.04177,"15.0":2.88206},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.07927},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.23669,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.12971},Q:{"10.4":0},O:{"0":0},H:{"0":0.00682},L:{"0":20.95978},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js
new file mode 100644
index 0000000000..baef93154b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SN.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.00282,"34":0.00564,"35":0.01128,"36":0.00564,"42":0.01128,"43":0.01128,"44":0.00564,"45":0.00564,"47":0.00846,"48":0.00564,"49":0.00282,"51":0.00564,"52":0.02538,"53":0.00282,"56":0.00282,"60":0.01128,"68":0.01128,"69":0.00282,"70":0.03666,"72":0.00846,"78":0.10434,"80":0.04512,"81":0.00564,"84":0.02256,"85":0.00846,"86":0.00846,"88":0.0423,"89":0.03102,"90":0.01692,"91":0.03102,"92":0.60348,"93":1.46076,"94":0.00846,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 37 38 39 40 41 46 50 54 55 57 58 59 61 62 63 64 65 66 67 71 73 74 75 76 77 79 82 83 87 95 3.5 3.6"},D:{"38":0.00282,"40":0.00282,"43":0.00564,"44":0.00282,"49":0.05358,"55":0.01128,"57":0.00564,"58":0.00564,"59":0.00564,"60":0.01128,"63":0.01692,"65":0.01974,"67":0.00564,"69":0.01974,"70":0.01128,"71":0.00846,"72":0.01128,"73":0.00564,"74":0.03102,"75":0.03666,"76":0.01974,"77":0.00846,"78":0.00282,"79":0.06486,"80":0.0141,"81":0.02256,"83":0.01974,"84":0.00846,"85":0.02538,"86":0.03102,"87":0.11844,"88":0.03948,"89":0.0282,"90":0.03948,"91":0.10716,"92":0.17484,"93":0.423,"94":9.7713,"95":3.20634,"96":0.00282,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 41 42 45 46 47 48 50 51 52 53 54 56 61 62 64 66 68 97 98"},F:{"29":0.00564,"70":0.00846,"76":0.00564,"77":0.00282,"78":0.02256,"79":0.37788,"80":0.25944,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00281,"15":2.24824,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00281,"6.0-6.1":0,"7.0-7.1":0.05333,"8.1-8.4":0.00842,"9.0-9.2":0.00702,"9.3":0.09262,"10.0-10.2":0.3705,"10.3":0.47014,"11.0-11.2":0.15858,"11.3-11.4":0.14736,"12.0-12.1":0.0842,"12.2-12.5":1.51286,"13.0-13.1":0.06175,"13.2":0.04351,"13.3":0.19367,"13.4-13.7":0.53189,"14.0-14.4":1.94931,"14.5-14.8":6.09073},B:{"12":0.01692,"13":0.00564,"14":0.00564,"15":0.0564,"16":0.0141,"17":0.04794,"18":0.1551,"84":0.00564,"85":0.00564,"86":0.01128,"89":0.01128,"90":0.00846,"91":0.02538,"92":0.04512,"93":0.08742,"94":1.48896,"95":0.49068,_:"79 80 81 83 87 88"},E:{"4":0,"10":0.00846,"11":0.00564,"12":0.00564,"13":0.01128,"14":0.08178,"15":0.17766,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1","9.1":0.00564,"10.1":0.02256,"11.1":0.03102,"12.1":0.03384,"13.1":0.08742,"14.1":0.2679},P:{"4":0.48017,"5.0-5.4":0.01025,"6.2-6.4":0.02043,"7.2-7.4":0.46995,"8.2":0.05124,"9.2":0.10216,"10.1":0.02043,"11.1-11.2":0.33714,"12.0":0.26563,"13.0":0.28606,"14.0":0.51082,"15.0":1.87982},I:{"0":0,"3":0,"4":0.00115,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00729,"4.2-4.3":0.00575,"4.4":0,"4.4.3-4.4.4":0.08632},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.3102,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01436},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.18668},Q:{"10.4":0},O:{"0":0.12206},H:{"0":0.61178},L:{"0":58.99506},S:{"2.5":0.01436}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js
new file mode 100644
index 0000000000..1c05d39310
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SO.js
@@ -0,0 +1 @@
+module.exports={C:{"29":0.00246,"40":0.00246,"43":0.00246,"44":0.00246,"47":0.00246,"55":0.00246,"68":0.00738,"72":0.00246,"78":0.00492,"83":0.00492,"88":0.00246,"89":0.00738,"91":0.01475,"92":0.28524,"93":0.82868,"94":0.01721,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 31 32 33 34 35 36 37 38 39 41 42 45 46 48 49 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 90 95 3.5 3.6"},D:{"24":0.00246,"33":0.00492,"37":0.00984,"38":0.00492,"39":0.00738,"43":0.01721,"49":0.0123,"56":0.00492,"57":0.01475,"59":0.00246,"63":0.03197,"64":0.00246,"66":0.00246,"68":0.01475,"69":0.00492,"70":0.02213,"71":0.00738,"72":0.00492,"74":0.01721,"75":0.00492,"77":0.00738,"78":0.00492,"79":0.06148,"80":0.0123,"81":0.02951,"83":0.00738,"84":0.00246,"85":0.00984,"86":0.03197,"87":0.07623,"88":0.02459,"89":0.05164,"90":0.03689,"91":0.13033,"92":0.2459,"93":0.59754,"94":12.88762,"95":3.4549,"96":0.02213,"97":0.00492,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 34 35 36 40 41 42 44 45 46 47 48 50 51 52 53 54 55 58 60 61 62 65 67 73 76 98"},F:{"65":0.00492,"76":0.01721,"77":0.00738,"78":0.00984,"79":0.54344,"80":0.2459,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.25375,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0.0006,"7.0-7.1":0.01322,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.03184,"10.0-10.2":0.0006,"10.3":0.02223,"11.0-11.2":0.01922,"11.3-11.4":0.01262,"12.0-12.1":0.00841,"12.2-12.5":0.68124,"13.0-13.1":0.04506,"13.2":0.01021,"13.3":0.12375,"13.4-13.7":0.21627,"14.0-14.4":1.32885,"14.5-14.8":2.23477},B:{"12":0.01721,"13":0.0123,"14":0.00984,"15":0.00492,"16":0.00984,"17":0.01967,"18":0.16475,"84":0.01475,"85":0.00984,"86":0.00246,"88":0.00738,"89":0.02213,"90":0.02459,"91":0.02213,"92":0.03197,"93":0.07869,"94":1.43606,"95":0.48934,_:"79 80 81 83 87"},E:{"4":0,"10":0.00492,"13":0.00492,"14":0.06639,"15":0.13279,_:"0 5 6 7 8 9 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.00492,"10.1":0.03689,"11.1":0.00738,"12.1":0.00738,"13.1":0.06885,"14.1":0.22131},P:{"4":0.41278,"5.0-5.4":0.07047,"6.2-6.4":0.17115,"7.2-7.4":1.11753,"8.2":0.01023,"9.2":0.10068,"10.1":0.08054,"11.1-11.2":0.49332,"12.0":0.12081,"13.0":0.42285,"14.0":0.594,"15.0":2.16458},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00754,"4.2-4.3":0.01508,"4.4":0,"4.4.3-4.4.4":0.10557},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00611,"11":0.08242,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.21115},Q:{"10.4":0},O:{"0":2.27738},H:{"0":5.54012},L:{"0":56.42519},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js
new file mode 100644
index 0000000000..071cee60cf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SR.js
@@ -0,0 +1 @@
+module.exports={C:{"23":0.00655,"26":0.00655,"38":0.00983,"52":0.02622,"57":0.04588,"72":0.00328,"78":0.03932,"85":0.01639,"87":0.00655,"91":0.00983,"92":0.70783,"93":1.4812,"94":0.67834,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 84 86 88 89 90 95 3.5 3.6"},D:{"26":0.01966,"38":0.02294,"39":0.01966,"49":0.14747,"53":0.01966,"61":0.00328,"63":0.01966,"65":0.00655,"68":0.00328,"70":0.00328,"73":0.01311,"74":0.00655,"75":0.02294,"76":0.04588,"79":0.06882,"80":0.01966,"81":0.03277,"83":0.01639,"84":0.00983,"86":0.00983,"87":0.25561,"88":0.05899,"89":0.02294,"90":0.05899,"91":0.10159,"92":0.23594,"93":1.07486,"94":14.54005,"95":4.33219,"96":0.00328,"97":0.00655,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 27 28 29 30 31 32 33 34 35 36 37 40 41 42 43 44 45 46 47 48 50 51 52 54 55 56 57 58 59 60 62 64 66 67 69 71 72 77 78 85 98"},F:{"28":0.02294,"63":0.03605,"77":0.00655,"78":0.0426,"79":0.46533,"80":0.16057,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01311},G:{"8":0,"15":3.01059,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01624,"6.0-6.1":0,"7.0-7.1":0.04765,"8.1-8.4":0.00758,"9.0-9.2":0.00541,"9.3":0.09963,"10.0-10.2":0.00217,"10.3":0.22309,"11.0-11.2":0.00433,"11.3-11.4":0.013,"12.0-12.1":0.01083,"12.2-12.5":0.76239,"13.0-13.1":0.21659,"13.2":0.0065,"13.3":0.22417,"13.4-13.7":0.27615,"14.0-14.4":0.64219,"14.5-14.8":5.25553},B:{"12":0.04916,"13":0.01639,"14":0.00328,"15":0.00328,"16":0.01966,"17":0.00983,"18":0.01966,"84":0.00655,"87":0.00983,"89":0.00983,"90":0.00983,"92":0.05243,"93":0.09503,"94":2.56261,"95":0.85202,_:"79 80 81 83 85 86 88 91"},E:{"4":0,"12":0.00655,"13":0.01311,"14":0.13436,"15":0.46533,_:"0 5 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00328,"11.1":0.00328,"12.1":0.02949,"13.1":0.07865,"14.1":0.98638},P:{"4":1.50032,"5.0-5.4":0.07085,"6.2-6.4":0.11133,"7.2-7.4":0.64299,"8.2":0.03044,"9.2":0.11227,"10.1":0.02041,"11.1-11.2":0.41846,"12.0":0.13268,"13.0":0.37763,"14.0":0.56134,"15.0":7.22601},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00044,"4.2-4.3":0.00384,"4.4":0,"4.4.3-4.4.4":0.02261},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.14091,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.15463},Q:{"10.4":0.01345},O:{"0":0.4101},H:{"0":0.33097},L:{"0":46.20449},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js
new file mode 100644
index 0000000000..847edb3cc8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ST.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01103,"77":0.01103,"78":0.03309,"88":0.04412,"91":0.05515,"92":1.05337,"93":0.45775,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 79 80 81 82 83 84 85 86 87 89 90 94 95 3.5 3.6"},D:{"33":0.30884,"43":0.05515,"47":0.06618,"53":0.05515,"56":0.03309,"60":0.01103,"64":0.03309,"65":0.01103,"66":0.02206,"67":0.01103,"69":0.01103,"70":0.02206,"71":0.01103,"74":0.05515,"77":0.02206,"79":0.182,"80":0.02206,"81":0.12685,"83":0.20406,"84":0.05515,"87":0.03309,"88":0.02206,"89":0.04412,"90":0.50187,"91":0.14891,"92":0.90446,"93":0.87137,"94":23.97371,"95":5.25028,"96":0.02206,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 44 45 46 48 49 50 51 52 54 55 57 58 59 61 62 63 68 72 73 75 76 78 85 86 97 98"},F:{"79":0.93755,"80":0.11582,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.99355,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.02518,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.02518,"11.0-11.2":0.00852,"11.3-11.4":0,"12.0-12.1":0.00852,"12.2-12.5":1.1605,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0.02557,"14.0-14.4":0.0337,"14.5-14.8":1.59433},B:{"12":0.05515,"13":0.01103,"18":0.10479,"84":0.03309,"89":0.05515,"91":0.04412,"92":0.19303,"93":0.01103,"94":7.23017,"95":1.50008,_:"14 15 16 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"10":0.02206,"14":0.02206,"15":0.02206,_:"0 5 6 7 8 9 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1","13.1":0.02206,"14.1":0.24266},P:{"4":0.08318,"5.0-5.4":0.01025,"6.2-6.4":0.05124,"7.2-7.4":0.05199,"8.2":0.05124,"9.2":0.0104,"10.1":0.041,"11.1-11.2":0.04159,"12.0":0.02079,"13.0":0.06238,"14.0":0.29112,"15.0":0.58223},I:{"0":0,"3":0,"4":0.00071,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00035,"4.2-4.3":0.00118,"4.4":0,"4.4.3-4.4.4":0.00673},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.075,"11":0.76879,_:"6 7 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.05382},Q:{"10.4":0},O:{"0":3.65528},H:{"0":0.34393},L:{"0":42.8312},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js
new file mode 100644
index 0000000000..1d841fb3d0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SV.js
@@ -0,0 +1 @@
+module.exports={C:{"35":0.01867,"52":0.01867,"68":0.00467,"70":0.01867,"72":0.00934,"73":0.05602,"78":0.03734,"87":0.00934,"88":0.00934,"89":0.01867,"90":0.18205,"91":0.04668,"92":0.65352,"93":1.5311,"94":0.02801,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 71 74 75 76 77 79 80 81 82 83 84 85 86 95 3.5 3.6"},D:{"22":0.00467,"38":0.00934,"49":0.06535,"55":0.00934,"63":0.00467,"65":0.00467,"67":0.014,"69":0.00467,"70":0.014,"71":0.00934,"72":0.00934,"73":0.014,"74":0.00934,"75":0.02801,"76":0.02801,"77":0.01867,"78":0.014,"79":0.14471,"80":0.02334,"81":0.01867,"83":0.02801,"84":0.05602,"85":0.07469,"86":0.08869,"87":0.1027,"88":0.05602,"89":0.05135,"90":0.08869,"91":0.27074,"92":0.35944,"93":0.88692,"94":24.45565,"95":6.79661,"96":0.03268,"97":0.00934,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 56 57 58 59 60 61 62 64 66 68 98"},F:{"46":0.00467,"73":0.00467,"77":0.00467,"78":0.07936,"79":1.26036,"80":0.67686,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.49956,"3.2":0.00052,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00468,"6.0-6.1":0.0026,"7.0-7.1":0.01715,"8.1-8.4":0.00208,"9.0-9.2":0,"9.3":0.03533,"10.0-10.2":0.00208,"10.3":0.0213,"11.0-11.2":0.00675,"11.3-11.4":0.01403,"12.0-12.1":0.00624,"12.2-12.5":0.28266,"13.0-13.1":0.00727,"13.2":0.01819,"13.3":0.03845,"13.4-13.7":0.11951,"14.0-14.4":0.358,"14.5-14.8":2.75698},B:{"15":0.014,"17":0.00467,"18":0.03734,"80":0.00934,"84":0.00467,"85":0.00934,"87":0.00467,"89":0.014,"90":0.00467,"91":0.014,"92":0.01867,"93":0.04668,"94":2.24064,"95":0.7002,_:"12 13 14 16 79 81 83 86 88"},E:{"4":0,"13":0.04201,"14":0.1027,"15":0.46213,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.05135,"11.1":0.00934,"12.1":0.01867,"13.1":0.08402,"14.1":0.49948},P:{"4":0.15729,"5.0-5.4":0.01072,"6.2-6.4":0.14119,"7.2-7.4":0.17827,"8.2":0.01026,"9.2":0.04195,"10.1":0.01072,"11.1-11.2":0.19924,"12.0":0.04195,"13.0":0.26216,"14.0":0.3041,"15.0":1.64634},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00305,"4.2-4.3":0.00533,"4.4":0,"4.4.3-4.4.4":0.06627},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.10736,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.02666},N:{_:"10 11"},R:{_:"0"},M:{"0":0.78914},Q:{"10.4":0},O:{"0":0.12264},H:{"0":0.22211},L:{"0":47.29463},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js
new file mode 100644
index 0000000000..d648e38e5b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SY.js
@@ -0,0 +1 @@
+module.exports={C:{"16":0.00167,"30":0.01504,"35":0.00167,"38":0.00334,"41":0.00167,"43":0.00501,"47":0.00501,"48":0.00334,"49":0.00334,"50":0.00167,"52":0.06016,"56":0.01003,"58":0.00167,"60":0.00167,"61":0.01337,"63":0.00334,"64":0.00167,"65":0.00334,"66":0.00501,"68":0.00167,"70":0.00334,"72":0.01337,"74":0.00334,"75":0.00167,"76":0.0117,"77":0.00167,"78":0.05347,"80":0.01337,"81":0.00167,"82":0.00167,"83":0.00334,"84":0.04345,"85":0.01671,"86":0.0117,"87":0.01838,"88":0.01671,"89":0.04679,"90":0.01003,"91":0.03342,"92":0.42945,"93":1.19978,"94":0.03676,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 36 37 39 40 42 44 45 46 51 53 54 55 57 59 62 67 69 71 73 79 95 3.5 3.6"},D:{"11":0.00334,"28":0.00501,"29":0.00167,"33":0.00334,"36":0.00334,"37":0.00501,"38":0.01671,"39":0.00167,"40":0.00501,"43":0.01838,"44":0.00501,"47":0.00501,"48":0.00167,"49":0.03342,"50":0.00501,"52":0.01671,"53":0.00334,"55":0.00334,"56":0.00836,"57":0.00334,"58":0.00501,"59":0.00334,"60":0.01838,"61":0.00334,"62":0.00668,"63":0.0752,"64":0.00334,"65":0.00501,"66":0.00501,"67":0.01003,"68":0.00668,"69":0.01838,"70":0.14538,"71":0.0117,"72":0.00836,"73":0.00836,"74":0.01504,"75":0.00836,"76":0.01003,"77":0.00334,"78":0.01504,"79":0.09525,"80":0.04178,"81":0.0752,"83":0.03342,"84":0.02339,"85":0.03175,"86":0.09358,"87":0.19049,"88":0.03342,"89":0.06183,"90":0.08188,"91":0.13869,"92":0.20386,"93":0.42443,"94":7.33235,"95":2.11047,"96":0.00501,"97":0.00334,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 30 31 32 34 35 41 42 45 46 51 54 98"},F:{"72":0.00836,"74":0.01504,"77":0.00501,"78":0.02005,"79":0.32919,"80":0.20052,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 73 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.5061,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00057,"5.0-5.1":0.00229,"6.0-6.1":0.00229,"7.0-7.1":0.03344,"8.1-8.4":0.00171,"9.0-9.2":0.00286,"9.3":0.09488,"10.0-10.2":0.03286,"10.3":0.04572,"11.0-11.2":0.01257,"11.3-11.4":0.03201,"12.0-12.1":0.05573,"12.2-12.5":0.45323,"13.0-13.1":0.01486,"13.2":0.01057,"13.3":0.04487,"13.4-13.7":0.1526,"14.0-14.4":0.3675,"14.5-14.8":0.99019},B:{"12":0.00334,"14":0.00167,"15":0.00501,"16":0.00668,"17":0.00668,"18":0.03175,"80":0.00167,"83":0.00167,"84":0.00836,"85":0.00167,"86":0.00167,"89":0.0117,"90":0.00501,"91":0.00668,"92":0.01671,"93":0.02507,"94":0.62997,"95":0.18882,_:"13 79 81 87 88"},E:{"4":0,"13":0.01838,"14":0.0401,"15":0.03509,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1","5.1":0.08522,"13.1":0.0117,"14.1":0.07018},P:{"4":2.39303,"5.0-5.4":0.08044,"6.2-6.4":0.2212,"7.2-7.4":0.49268,"8.2":0.07038,"9.2":0.37203,"10.1":0.24131,"11.1-11.2":0.45246,"12.0":0.3117,"13.0":0.8446,"14.0":1.69925,"15.0":2.04111},I:{"0":0,"3":0,"4":0.00204,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02369,"4.2-4.3":0.03642,"4.4":0,"4.4.3-4.4.4":0.16274},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00167,"9":0.00334,"11":0.09525,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.16658},Q:{"10.4":0},O:{"0":1.22436},H:{"0":1.70324},L:{"0":68.63878},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js
new file mode 100644
index 0000000000..6facd98164
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/SZ.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00539,"54":0.00808,"56":0.00539,"59":0.00269,"60":0.06466,"61":0.02155,"66":0.00269,"68":0.00269,"72":0.00269,"78":0.03233,"83":0.00539,"88":0.01886,"91":0.03502,"92":0.26132,"93":0.51725,"94":0.0916,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 55 57 58 62 63 64 65 67 69 70 71 73 74 75 76 77 79 80 81 82 84 85 86 87 89 90 95 3.5 3.6"},D:{"11":0.00808,"37":0.00808,"40":0.00808,"46":0.00539,"48":0.00269,"49":0.00269,"51":0.00269,"57":0.00808,"60":0.01616,"62":0.00539,"63":0.00269,"65":0.06466,"66":0.00539,"67":0.00269,"69":0.01347,"70":0.05119,"71":0.00539,"73":0.00539,"74":0.01616,"75":0.00539,"77":0.01616,"78":0.00808,"79":0.01347,"80":0.00808,"81":0.02694,"84":0.01078,"85":0.01078,"86":0.06735,"87":0.11854,"88":0.01616,"89":0.03502,"90":0.01886,"91":0.53072,"92":0.15625,"93":0.51186,"94":10.94842,"95":1.60832,"96":0.00808,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 42 43 44 45 47 50 52 53 54 55 56 58 59 61 64 68 72 76 83 97 98"},F:{"16":0.00269,"42":0.00269,"63":0.00269,"65":0.01347,"74":0.00269,"76":0.00539,"77":0.01078,"78":0.00539,"79":0.73816,"80":0.19127,_:"9 11 12 15 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 66 67 68 69 70 71 72 73 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00539},G:{"8":0,"15":0.4359,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01378,"5.0-5.1":0.00052,"6.0-6.1":0.00312,"7.0-7.1":0.00754,"8.1-8.4":0.00442,"9.0-9.2":0.0026,"9.3":0.00598,"10.0-10.2":0.00338,"10.3":0.09545,"11.0-11.2":0.00884,"11.3-11.4":0.00546,"12.0-12.1":0.01274,"12.2-12.5":0.37192,"13.0-13.1":0.01144,"13.2":0.00572,"13.3":0.02185,"13.4-13.7":0.05228,"14.0-14.4":0.47075,"14.5-14.8":1.06686},B:{"12":0.05657,"13":0.00808,"14":0.02155,"15":0.02425,"16":0.03772,"17":0.03772,"18":0.10776,"80":0.01078,"84":0.00808,"85":0.03233,"86":0.00269,"88":0.00539,"89":0.02425,"90":0.00539,"91":0.01616,"92":0.10776,"93":0.10776,"94":1.62987,"95":0.35022,_:"79 81 83 87"},E:{"4":0,"11":0.00269,"12":0.00808,"13":0.00539,"14":0.11584,"15":0.10237,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 10.1","5.1":0.01078,"9.1":0.00539,"11.1":0.00269,"12.1":0.01616,"13.1":0.01886,"14.1":0.10507},P:{"4":0.50994,"5.0-5.4":0.07085,"6.2-6.4":0.0102,"7.2-7.4":0.8363,"8.2":0.03044,"9.2":0.0408,"10.1":0.0306,"11.1-11.2":0.14278,"12.0":0.09179,"13.0":0.28557,"14.0":0.43855,"15.0":1.83578},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00075,"4.2-4.3":0.00175,"4.4":0,"4.4.3-4.4.4":0.07056},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.12662,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01461},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.25568},Q:{"10.4":0},O:{"0":0.97887},H:{"0":21.48771},L:{"0":48.8893},S:{"2.5":0.23376}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js
new file mode 100644
index 0000000000..16589c593f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TC.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.00957,"56":0.05261,"63":0.01435,"78":0.01435,"91":0.00478,"92":0.35873,"93":1.00921,"94":0.01435,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 90 95 3.5 3.6"},D:{"49":0.11479,"65":0.00478,"71":0.02392,"74":0.22002,"75":0.04783,"76":0.10044,"79":0.17697,"80":0.02392,"81":0.02392,"85":0.00957,"86":0.07653,"87":0.08131,"89":0.00478,"90":0.0287,"91":0.04783,"92":0.71267,"93":4.93606,"94":16.72615,"95":3.41985,"96":0.3109,"97":0.01913,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 70 72 73 77 78 83 84 88 98"},F:{"69":0.00478,"78":0.45917,"79":0.60744,"80":0.18175,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.07624,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01682,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.13694,"9.0-9.2":0,"9.3":0.03363,"10.0-10.2":0,"10.3":0.05525,"11.0-11.2":0.00721,"11.3-11.4":0.01682,"12.0-12.1":0,"12.2-12.5":1.39579,"13.0-13.1":0,"13.2":0,"13.3":0.02162,"13.4-13.7":0.17057,"14.0-14.4":1.8162,"14.5-14.8":15.27198},B:{"16":0.00478,"17":0.03826,"18":0.27263,"80":0.00478,"83":0.00478,"89":0.04305,"91":0.01913,"92":0.01913,"93":0.10523,"94":4.28079,"95":1.62144,_:"12 13 14 15 79 81 84 85 86 87 88 90"},E:{"4":0,"10":0.00478,"13":0.01435,"14":0.64092,"15":1.66448,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1","9.1":0.01913,"10.1":0.18654,"11.1":0.03348,"12.1":0.07653,"13.1":0.33481,"14.1":6.72968},P:{"4":0.11619,"5.0-5.4":0.08172,"6.2-6.4":0.03169,"7.2-7.4":0.21125,"8.2":0.01056,"9.2":0.02113,"10.1":0.06129,"11.1-11.2":0.24294,"12.0":0.08172,"13.0":0.10563,"14.0":0.0845,"15.0":3.03148},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00138,"4.4":0,"4.4.3-4.4.4":0.01427},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.11001,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.20346},Q:{"10.4":0},O:{"0":0.01565},H:{"0":0.27659},L:{"0":24.73269},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js
new file mode 100644
index 0000000000..d9ac82824f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TD.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.00634,"15":0.01057,"18":0.00211,"30":0.00211,"35":0.00423,"36":0.00423,"37":0.01479,"38":0.00211,"43":0.00634,"44":0.00423,"47":0.00423,"52":0.00423,"57":0.00423,"58":0.01057,"71":0.00634,"72":0.0317,"78":0.01057,"88":0.00634,"89":0.03381,"90":0.00845,"91":0.00845,"92":0.42683,"93":0.6825,"94":0.01057,_:"2 3 5 6 7 8 9 10 11 12 13 14 16 17 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 39 40 41 42 45 46 48 49 50 51 53 54 55 56 59 60 61 62 63 64 65 66 67 68 69 70 73 74 75 76 77 79 80 81 82 83 84 85 86 87 95 3.5 3.6"},D:{"23":0.00423,"24":0.00423,"25":0.00845,"33":0.00634,"37":0.00845,"43":0.01479,"49":0.00423,"51":0.00211,"55":0.02958,"57":0.00845,"58":0.00211,"60":0.00423,"61":0.00211,"63":0.00423,"64":0.00423,"68":0.02958,"69":0.00634,"70":0.00634,"72":0.00423,"74":0.00845,"75":0.00634,"76":0.00423,"77":0.01479,"79":0.01268,"80":0.05705,"81":0.0169,"83":0.00634,"84":0.19017,"85":0.00423,"86":0.01057,"87":0.15214,"88":0.03803,"89":0.00423,"90":0.07184,"91":0.04437,"92":0.17115,"93":0.36344,"94":4.18163,"95":1.27837,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 26 27 28 29 30 31 32 34 35 36 38 39 40 41 42 44 45 46 47 48 50 52 53 54 56 59 62 65 66 67 71 73 78 96 97 98"},F:{"31":0.00423,"37":0.00211,"40":0.00211,"42":0.00423,"45":0.00211,"46":0.00211,"51":0.00423,"64":0.00423,"65":0.00845,"67":0.00845,"70":0.00211,"71":0.00634,"72":0.00634,"73":0.01057,"76":0.02747,"77":0.00845,"78":0.07607,"79":0.06339,"80":0.02747,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 36 38 39 41 43 44 47 48 49 50 52 53 54 55 56 57 58 60 62 63 66 68 69 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.6297,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.00097,"8.1-8.4":0.00049,"9.0-9.2":0.00097,"9.3":0.00146,"10.0-10.2":0.00049,"10.3":0.07277,"11.0-11.2":0.05191,"11.3-11.4":0.09266,"12.0-12.1":0.21103,"12.2-12.5":1.02703,"13.0-13.1":0.01649,"13.2":0.0034,"13.3":0.02717,"13.4-13.7":0.12031,"14.0-14.4":0.95135,"14.5-14.8":1.6417},B:{"12":0.01479,"13":0.00845,"14":0.04437,"16":0.01902,"17":0.02747,"18":0.02958,"81":0.00634,"84":0.01479,"85":0.00634,"90":0.00423,"91":0.00423,"92":0.02324,"93":0.05071,"94":1.06707,"95":0.39302,_:"15 79 80 83 86 87 88 89"},E:{"4":0,"11":0.00634,"13":0.00211,"14":0.00634,"15":0.01479,_:"0 5 6 7 8 9 10 12 3.1 3.2 6.1 7.1 9.1 11.1","5.1":0.00423,"10.1":0.00211,"12.1":0.0317,"13.1":0.01268,"14.1":0.21975},P:{"4":0.62895,"5.0-5.4":0.02029,"6.2-6.4":0.07101,"7.2-7.4":0.47678,"8.2":0.02149,"9.2":0.77097,"10.1":0.02029,"11.1-11.2":0.42606,"12.0":0.03043,"13.0":0.30433,"14.0":0.62895,"15.0":1.01443},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01545,"4.4":0,"4.4.3-4.4.4":0.06341},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":3.52871,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.15772},Q:{"10.4":0.06309},O:{"0":0.8438},H:{"0":2.29205},L:{"0":72.72558},S:{"2.5":0.01577}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js
new file mode 100644
index 0000000000..1bc2920f81
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TG.js
@@ -0,0 +1 @@
+module.exports={C:{"21":0.00452,"31":0.00452,"39":0.00452,"43":0.00903,"45":0.00452,"47":0.00903,"51":0.00903,"52":0.17161,"56":0.00452,"61":0.00452,"63":0.01355,"64":0.01355,"65":0.06774,"68":0.00903,"69":0.00903,"72":0.10838,"75":0.00452,"77":0.01355,"78":0.06774,"79":0.03161,"80":0.06774,"81":0.22128,"83":0.00903,"84":0.1129,"85":0.00452,"86":0.04968,"87":0.00903,"88":0.11742,"89":0.19419,"90":0.03613,"91":0.1987,"92":1.67092,"93":4.04182,"94":0.05419,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 32 33 34 35 36 37 38 40 41 42 44 46 48 49 50 53 54 55 57 58 59 60 62 66 67 70 71 73 74 76 82 95 3.5 3.6"},D:{"25":0.01355,"26":0.08129,"31":0.00452,"33":0.01806,"42":0.00452,"43":0.0271,"46":0.00452,"49":0.0271,"55":0.00452,"57":0.00452,"60":0.00903,"62":0.52386,"63":0.00903,"65":0.01806,"67":0.00452,"68":0.00452,"72":0.04516,"74":0.01355,"75":0.02258,"76":0.02258,"77":0.00452,"78":0.27548,"79":0.0271,"80":0.32064,"81":0.03161,"83":0.01355,"84":0.07677,"85":0.0271,"86":0.11742,"87":0.7632,"88":0.18516,"89":0.05419,"90":0.13096,"91":0.15806,"92":0.35225,"93":0.7045,"94":14.40152,"95":6.2095,"96":0.01355,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 27 28 29 30 32 34 35 36 37 38 39 40 41 44 45 47 48 50 51 52 53 54 56 58 59 61 64 66 69 70 71 73 97 98"},F:{"12":0.00452,"36":0.01806,"68":0.01806,"71":0.00903,"77":0.02258,"78":0.0271,"79":1.3819,"80":0.61869,_:"9 11 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.1979,"3.2":0.00107,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00321,"6.0-6.1":0.00107,"7.0-7.1":0.05984,"8.1-8.4":0.00053,"9.0-9.2":0.00321,"9.3":0.11808,"10.0-10.2":0,"10.3":0.36867,"11.0-11.2":0.13571,"11.3-11.4":0.00801,"12.0-12.1":0.01122,"12.2-12.5":0.93717,"13.0-13.1":0.0016,"13.2":0.00107,"13.3":0.01069,"13.4-13.7":0.07908,"14.0-14.4":0.39431,"14.5-14.8":2.00898},B:{"12":0.02258,"13":0.00903,"15":0.02258,"17":0.00903,"18":0.13096,"84":0.04516,"85":0.01806,"89":0.03161,"90":0.0271,"91":0.01355,"92":0.03161,"93":0.09032,"94":2.17671,"95":0.75417,_:"14 16 79 80 81 83 86 87 88"},E:{"4":0,"8":0.00452,"13":0.03613,"14":0.03613,"15":0.23032,_:"0 5 6 7 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.03613,"11.1":0.00452,"12.1":0.00452,"13.1":0.03613,"14.1":0.11742},P:{"4":0.16687,"5.0-5.4":0.01017,"6.2-6.4":0.02034,"7.2-7.4":0.02225,"8.2":0.02034,"9.2":0.10172,"10.1":0.02034,"11.1-11.2":0.36619,"12.0":0.0712,"13.0":0.02225,"14.0":0.05562,"15.0":0.51174},I:{"0":0,"3":0,"4":0.00059,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00411,"4.2-4.3":0.00862,"4.4":0,"4.4.3-4.4.4":0.14023},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.34773,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0.01097},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.11516},Q:{"10.4":0.02742},O:{"0":0.64163},H:{"0":5.8928},L:{"0":47.76499},S:{"2.5":0.02194}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js
new file mode 100644
index 0000000000..880ec4b76c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TH.js
@@ -0,0 +1 @@
+module.exports={C:{"33":0.0042,"50":0.02518,"51":0.01679,"52":0.06296,"53":0.02099,"54":0.02518,"55":0.02938,"56":0.1469,"57":0.02099,"58":0.02099,"59":0.02518,"60":0.02518,"61":0.02099,"62":0.01679,"63":0.02518,"64":0.00839,"65":0.01259,"66":0.00839,"67":0.00839,"68":0.01679,"69":0.0042,"70":0.0042,"71":0.0042,"72":0.00839,"73":0.00839,"74":0.0042,"76":0.00839,"77":0.00839,"78":0.03358,"79":0.00839,"80":0.00839,"81":0.00839,"82":0.00839,"83":0.02099,"84":0.0042,"87":0.0042,"88":0.01679,"89":0.01259,"90":0.01679,"91":0.02099,"92":0.37353,"93":1.06184,"94":0.01259,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 75 85 86 95 3.5 3.6"},D:{"25":0.00839,"31":0.0042,"34":0.0042,"36":0.00839,"37":0.0042,"38":0.01259,"40":0.0042,"41":0.00839,"42":0.00839,"43":0.02099,"45":0.00839,"46":0.01259,"47":0.02099,"48":0.01259,"49":0.13011,"50":0.00839,"51":0.00839,"52":0.0042,"53":0.02099,"54":0.00839,"55":0.01259,"56":0.03777,"57":0.01679,"58":0.01679,"59":0.00839,"60":0.01679,"61":0.02099,"62":0.00839,"63":0.02099,"64":0.01259,"65":0.01259,"66":0.01679,"67":0.01679,"68":0.01679,"69":0.02099,"70":0.03358,"71":0.01259,"72":0.01679,"73":0.01259,"74":0.03358,"75":0.02938,"76":0.03358,"77":0.02099,"78":0.02938,"79":0.09653,"80":0.06296,"81":0.02938,"83":0.05456,"84":0.05456,"85":0.05876,"86":0.07974,"87":0.16788,"88":0.04617,"89":0.04197,"90":0.04617,"91":0.10493,"92":0.23923,"93":0.52463,"94":21.23682,"95":5.70792,"96":0.02518,"97":0.0042,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 32 33 35 39 44 98"},F:{"28":0.0042,"34":0.0042,"36":0.0042,"43":0.00839,"44":0.0042,"46":0.0042,"48":0.0042,"49":0.0042,"52":0.0042,"53":0.01259,"54":0.01679,"55":0.01259,"56":0.00839,"65":0.0042,"67":0.0042,"68":0.0042,"78":0.01259,"79":0.27281,"80":0.1343,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 37 38 39 40 41 42 45 47 50 51 57 58 60 62 63 64 66 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01679},G:{"8":0.00275,"15":4.64607,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00275,"5.0-5.1":0.00688,"6.0-6.1":0.00826,"7.0-7.1":0.01514,"8.1-8.4":0.01239,"9.0-9.2":0.01239,"9.3":0.08808,"10.0-10.2":0.01927,"10.3":0.08257,"11.0-11.2":0.03578,"11.3-11.4":0.04129,"12.0-12.1":0.04404,"12.2-12.5":0.74177,"13.0-13.1":0.03853,"13.2":0.01651,"13.3":0.09358,"13.4-13.7":0.25873,"14.0-14.4":1.0005,"14.5-14.8":6.58927},B:{"12":0.02518,"13":0.01679,"14":0.02099,"15":0.02518,"16":0.03777,"17":0.02518,"18":0.07135,"79":0.00839,"80":0.01259,"81":0.02099,"83":0.02099,"84":0.02938,"85":0.01679,"86":0.02518,"87":0.01679,"89":0.01679,"90":0.0042,"91":0.00839,"92":0.03358,"93":0.04617,"94":2.14047,"95":0.75126,_:"88"},E:{"4":0,"10":0.01259,"11":0.02099,"12":0.02518,"13":0.07555,"14":0.23084,"15":1.5403,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01259,"11.1":0.02518,"12.1":0.04197,"13.1":0.16788,"14.1":1.68719},P:{"4":0.11568,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.11568,"8.2":0.01079,"9.2":0.04206,"10.1":0.03155,"11.1-11.2":0.16826,"12.0":0.04206,"13.0":0.14723,"14.0":0.24187,"15.0":1.956},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00158,"4.2-4.3":0.00475,"4.4":0,"4.4.3-4.4.4":0.02848},A:{"8":0.02358,"9":0.01415,"10":0.00943,"11":0.33478,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.11604},Q:{"10.4":0},O:{"0":0.31911},H:{"0":0.24718},L:{"0":42.28218},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js
new file mode 100644
index 0000000000..e90ef892ec
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TJ.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.0031,"30":0.00619,"35":0.0031,"39":0.01239,"44":0.00619,"47":0.0031,"52":0.12388,"56":0.0031,"57":0.0031,"58":0.0031,"60":0.02168,"67":0.0031,"68":0.0031,"70":0.36854,"77":0.00929,"78":0.03097,"79":0.15795,"80":0.01858,"81":0.01239,"82":0.01549,"83":0.00619,"88":0.23537,"89":0.00929,"90":0.02168,"91":0.04646,"92":0.415,"93":1.12111,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 36 37 38 40 41 42 43 45 46 48 49 50 51 53 54 55 59 61 62 63 64 65 66 69 71 72 73 74 75 76 84 85 86 87 94 95 3.5 3.6"},D:{"28":0.00929,"34":0.00929,"35":0.00929,"43":0.00619,"44":0.13317,"45":0.00619,"46":0.00619,"47":0.00929,"49":0.17653,"56":0.0031,"60":0.00929,"61":0.01549,"62":0.00929,"63":0.00619,"64":0.02478,"67":0.00619,"68":0.02168,"69":0.02168,"70":0.00929,"71":0.02478,"72":0.00619,"73":0.01549,"74":0.03407,"75":0.01858,"76":0.00619,"77":0.0031,"78":0.02478,"79":0.42429,"80":0.02168,"81":0.03097,"83":0.1084,"84":0.3097,"85":0.2044,"86":0.2075,"87":0.35306,"88":0.03716,"89":0.04336,"90":0.06813,"91":0.13317,"92":0.25395,"93":0.60082,"94":13.17154,"95":3.62659,"96":0.01239,"97":0.01239,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 36 37 38 39 40 41 42 48 50 51 52 53 54 55 57 58 59 65 66 98"},F:{"36":0.00929,"51":0.00619,"56":0.0031,"68":0.08672,"71":0.25705,"77":0.19511,"78":0.01858,"79":1.22641,"80":0.36235,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 52 53 54 55 57 58 60 62 63 64 65 66 67 69 70 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.02168},G:{"8":0,"15":1.32427,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.01179,"5.0-5.1":0.00393,"6.0-6.1":0.0073,"7.0-7.1":0.01292,"8.1-8.4":0.00337,"9.0-9.2":0.00842,"9.3":0.0775,"10.0-10.2":0.01179,"10.3":0.05279,"11.0-11.2":0.09772,"11.3-11.4":0.06402,"12.0-12.1":0.13366,"12.2-12.5":1.04796,"13.0-13.1":0.03033,"13.2":0.02752,"13.3":0.07245,"13.4-13.7":0.23082,"14.0-14.4":0.79187,"14.5-14.8":1.6017},B:{"12":0.00929,"13":0.0031,"14":0.0031,"15":0.0031,"16":0.0031,"17":0.01549,"18":0.16414,"80":0.01239,"83":0.00929,"84":0.01549,"85":0.00619,"86":0.0031,"87":0.00619,"88":0.0031,"89":0.01858,"90":0.00619,"91":0.01239,"92":0.00619,"93":0.02787,"94":0.60392,"95":0.14556,_:"79 81"},E:{"4":0,"11":0.0031,"12":0.00619,"13":0.01549,"14":0.12078,"15":0.20131,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 9.1 10.1","5.1":0.26015,"7.1":0.0031,"11.1":0.00929,"12.1":0.00929,"13.1":0.02787,"14.1":0.26015},P:{"4":2.52266,"5.0-5.4":0.19096,"6.2-6.4":0.19096,"7.2-7.4":0.50252,"8.2":0.0402,"9.2":0.31156,"10.1":0.07035,"11.1-11.2":0.54272,"12.0":0.16081,"13.0":0.48242,"14.0":0.42212,"15.0":1.06535},I:{"0":0,"3":0,"4":0.00049,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00079,"4.2-4.3":0.00217,"4.4":0,"4.4.3-4.4.4":0.03797},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.02036,"9":0.03054,"10":0.01018,"11":0.25791,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.01381},Q:{"10.4":0},O:{"0":4.29367},H:{"0":2.35271},L:{"0":51.07637},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js
new file mode 100644
index 0000000000..ca9cbd11ac
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TK.js
@@ -0,0 +1 @@
+module.exports={C:{"93":0.13926,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 94 95 3.5 3.6"},D:{"81":0.84949,"88":0.28548,"94":5.50773,"95":3.1055,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 86 87 89 90 91 92 93 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":20.15277,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.93334,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0.40031,"14.5-14.8":0.2676},B:{"89":0.98875,"91":0.42474,"93":0.42474,"94":3.81572,"95":0.70326,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 90 92"},E:{"4":0,"11":0.13926,_:"0 5 6 7 8 9 10 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.16687,"5.0-5.4":0.01017,"6.2-6.4":0.02034,"7.2-7.4":0.02225,"8.2":0.02034,"9.2":0.10172,"10.1":0.02034,"11.1-11.2":0.56488,"12.0":0.0712,"13.0":0.28244,"14.0":0.05562,"15.0":0.51174},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":7.76865},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js
new file mode 100644
index 0000000000..387bf8942c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TL.js
@@ -0,0 +1 @@
+module.exports={C:{"18":0.00339,"20":0.00339,"21":0.04062,"24":0.00339,"29":0.01016,"30":0.01016,"31":0.01016,"32":0.00677,"33":0.02031,"34":0.00677,"35":0.02031,"36":0.00677,"37":0.01693,"39":0.00339,"40":0.02031,"41":0.11848,"43":0.03047,"44":0.01693,"45":0.00677,"47":0.06432,"48":0.05755,"52":0.00339,"55":0.00339,"56":0.02031,"57":0.14556,"58":0.01016,"61":0.00339,"63":0.01693,"66":0.00339,"67":0.01016,"68":0.01693,"69":0.01693,"70":0.00339,"72":0.0677,"76":0.05078,"78":0.11171,"79":0.40282,"81":0.01016,"83":0.00677,"84":0.01354,"85":0.02708,"86":0.01016,"87":0.01693,"88":0.15571,"89":0.08124,"90":0.04739,"91":0.07447,"92":1.59434,"93":3.4764,"94":0.4062,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 22 23 25 26 27 28 38 42 46 49 50 51 53 54 59 60 62 64 65 71 73 74 75 77 80 82 95 3.5 3.6"},D:{"11":0.00677,"27":0.00677,"28":0.00339,"29":0.00339,"31":0.0237,"32":0.00677,"40":0.0237,"42":0.12863,"43":0.05078,"45":0.00339,"49":0.04062,"55":0.00677,"56":0.00339,"58":0.04062,"61":0.01354,"62":0.02031,"63":0.01016,"64":0.01016,"65":0.05755,"66":0.00677,"67":0.01016,"68":0.07109,"69":0.00339,"70":0.01016,"72":0.01693,"73":0.00677,"74":0.02031,"75":0.00339,"76":0.00677,"77":0.00677,"78":0.01016,"79":0.03385,"80":0.01693,"81":0.00339,"83":0.01354,"84":0.05755,"85":0.0237,"86":0.05416,"87":0.46713,"88":0.08463,"89":0.03385,"90":0.0677,"91":0.19295,"92":0.38251,"93":0.8801,"94":12.78176,"95":2.48798,"96":0.01354,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 30 33 34 35 36 37 38 39 41 44 46 47 48 50 51 52 53 54 57 59 60 71 97 98"},F:{"37":0.00677,"66":0.00339,"75":0.01016,"76":0.01016,"77":0.00677,"78":0.01354,"79":0.66685,"80":0.23695,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 67 68 69 70 71 72 73 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.19647,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00077,"6.0-6.1":0,"7.0-7.1":0.00731,"8.1-8.4":0.00038,"9.0-9.2":0.00731,"9.3":0.04422,"10.0-10.2":0.01615,"10.3":0.05344,"11.0-11.2":0.01461,"11.3-11.4":0.05767,"12.0-12.1":0.0719,"12.2-12.5":0.54482,"13.0-13.1":0.06459,"13.2":0.01884,"13.3":0.12842,"13.4-13.7":0.24569,"14.0-14.4":1.38607,"14.5-14.8":0.98467},B:{"12":0.10832,"13":0.01693,"14":0.01354,"15":0.02031,"16":0.0237,"17":0.15571,"18":0.13879,"80":0.00339,"84":0.03047,"85":0.00339,"87":0.00677,"89":0.01016,"90":0.04062,"91":0.01693,"92":0.09817,"93":0.08801,"94":1.48602,"95":0.27419,_:"79 81 83 86 88"},E:{"4":0,"8":0.01016,"10":0.00677,"11":0.00339,"12":0.01693,"13":0.00677,"14":0.05755,"15":0.03047,_:"0 5 6 7 9 3.1 3.2 5.1 7.1","6.1":0.12186,"9.1":0.00339,"10.1":0.03385,"11.1":0.02031,"12.1":0.04739,"13.1":0.22003,"14.1":0.18618},P:{"4":0.51876,"5.0-5.4":0.01017,"6.2-6.4":0.02034,"7.2-7.4":0.24412,"8.2":0.02034,"9.2":0.10172,"10.1":0.02034,"11.1-11.2":0.36619,"12.0":0.0712,"13.0":0.08137,"14.0":0.19326,"15.0":0.35601},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00444,"4.2-4.3":0.00711,"4.4":0,"4.4.3-4.4.4":0.04798},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.38785,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.03969},Q:{"10.4":0.00662},O:{"0":0.77396},H:{"0":1.86001},L:{"0":59.78755},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js
new file mode 100644
index 0000000000..7b1a1a482d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TM.js
@@ -0,0 +1 @@
+module.exports={C:{"32":0.00863,"41":0.01295,"43":0.05179,"46":0.00863,"48":0.01295,"51":0.02158,"52":0.00863,"53":0.00432,"54":0.03453,"60":0.01726,"64":0.00432,"65":0.03453,"66":0.00863,"70":0.01726,"72":0.07337,"78":0.01295,"81":0.03021,"84":0.03453,"88":0.67761,"89":0.00863,"90":0.01726,"91":0.22443,"92":0.03021,"93":0.06906,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 33 34 35 36 37 38 39 40 42 44 45 47 49 50 55 56 57 58 59 61 62 63 67 68 69 71 73 74 75 76 77 79 80 82 83 85 86 87 94 95 3.5 3.6"},D:{"20":0.01726,"22":0.02158,"30":0.00432,"31":0.18559,"32":0.00863,"33":0.0259,"39":0.03021,"40":0.00863,"42":0.01295,"43":0.00863,"45":0.00432,"46":0.00432,"47":0.00863,"49":0.09495,"52":0.1338,"53":0.00863,"54":0.01726,"55":0.00863,"57":0.00432,"58":0.01726,"64":0.08632,"65":0.01295,"67":0.2978,"68":0.01295,"69":0.01726,"70":0.00432,"71":0.07769,"72":0.04316,"73":0.03021,"74":0.0259,"75":0.01726,"76":0.02158,"78":0.00432,"79":0.07769,"80":0.02158,"81":0.03021,"83":0.1079,"84":0.02158,"85":0.05611,"86":0.09064,"87":0.21148,"88":0.03021,"89":0.04748,"90":0.32802,"91":0.12948,"92":4.49296,"93":0.7553,"94":14.28596,"95":7.49689,"96":0.01295,"97":0.01295,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 23 24 25 26 27 28 29 34 35 36 37 38 41 44 48 50 51 56 59 60 61 62 63 66 77 98"},F:{"36":0.03021,"42":0.00432,"46":0.01726,"51":0.03453,"53":0.01726,"64":0.00863,"66":0.00432,"67":0.00432,"68":0.00432,"72":0.01295,"73":0.02158,"76":0.01295,"77":0.01295,"78":0.03021,"79":0.06474,"80":0.06474,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 47 48 49 50 52 54 55 56 57 58 60 62 63 65 69 70 71 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00863},G:{"8":0.00038,"15":0.35561,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00153,"5.0-5.1":0.00153,"6.0-6.1":0.00038,"7.0-7.1":0.04813,"8.1-8.4":0.0149,"9.0-9.2":0.0275,"9.3":0.13292,"10.0-10.2":0.03667,"10.3":0.17991,"11.0-11.2":0.03552,"11.3-11.4":0.12949,"12.0-12.1":0.08289,"12.2-12.5":0.99349,"13.0-13.1":0.08021,"13.2":0.1864,"13.3":0.05233,"13.4-13.7":0.18869,"14.0-14.4":0.69059,"14.5-14.8":0.58059},B:{"13":0.01726,"14":0.01295,"18":0.02158,"84":0.00432,"89":0.01295,"91":0.00432,"92":0.02158,"93":0.04316,"94":0.37118,"95":0.07769,_:"12 15 16 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.02158,"14":0.0259,"15":0.03021,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.05611,"10.1":0.01295,"11.1":0.27191,"12.1":0.00432,"13.1":0.00432,"14.1":0.06906},P:{"4":3.68755,"5.0-5.4":0.08172,"6.2-6.4":0.01021,"7.2-7.4":0.78654,"8.2":0.02034,"9.2":0.06129,"10.1":0.06129,"11.1-11.2":0.21451,"12.0":0.08172,"13.0":0.33709,"14.0":0.94998,"15.0":1.53222},I:{"0":0,"3":0,"4":0.00094,"2.1":0,"2.2":0,"2.3":0,"4.1":0.005,"4.2-4.3":0.01415,"4.4":0,"4.4.3-4.4.4":0.10496},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01798,"9":0.01348,"11":2.24738,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.0341},Q:{"10.4":0.00568},O:{"0":1.87572},H:{"0":0.26906},L:{"0":45.13596},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js
new file mode 100644
index 0000000000..f29c2ea73e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TN.js
@@ -0,0 +1 @@
+module.exports={C:{"47":0.00424,"48":0.00849,"52":0.12308,"64":0.00849,"68":0.00424,"71":0.00849,"72":0.00849,"78":0.05942,"79":0.00849,"81":0.00849,"82":0.00849,"84":0.00849,"88":0.01698,"89":0.01698,"90":0.02546,"91":0.01698,"92":0.42864,"93":1.12042,"94":0.02122,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 49 50 51 53 54 55 56 57 58 59 60 61 62 63 65 66 67 69 70 73 74 75 76 77 80 83 85 86 87 95 3.5 3.6"},D:{"38":0.00849,"39":0.00849,"43":0.00424,"47":0.00849,"48":0.00424,"49":0.43289,"53":0.00424,"56":0.01698,"58":0.01273,"60":0.00424,"61":0.0382,"62":0.00849,"63":0.02546,"64":0.00849,"65":0.01698,"66":0.00849,"67":0.01698,"68":0.01273,"69":0.01273,"70":0.02122,"71":0.01698,"72":0.00424,"73":0.01273,"74":0.01698,"75":0.01698,"76":0.00849,"77":0.01698,"78":0.02971,"79":0.05517,"80":0.06366,"81":0.0382,"83":0.05942,"84":0.08488,"85":0.07215,"86":0.10186,"87":0.42864,"88":0.05942,"89":0.08488,"90":0.09761,"91":0.24615,"92":0.4244,"93":1.02705,"94":21.8184,"95":6.51454,"96":0.04244,"97":0.01698,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 40 41 42 44 45 46 50 51 52 54 55 57 59 98"},F:{"69":0.00424,"71":0.00424,"77":0.00849,"78":0.09761,"79":1.90556,"80":0.87002,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 70 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.59362,"3.2":0.00059,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01128,"6.0-6.1":0.00297,"7.0-7.1":0.01841,"8.1-8.4":0.00089,"9.0-9.2":0.00119,"9.3":0.04484,"10.0-10.2":0.00921,"10.3":0.05078,"11.0-11.2":0.01455,"11.3-11.4":0.01663,"12.0-12.1":0.01663,"12.2-12.5":0.32487,"13.0-13.1":0.00653,"13.2":0.00742,"13.3":0.03653,"13.4-13.7":0.14343,"14.0-14.4":0.3222,"14.5-14.8":1.347},B:{"12":0.00424,"13":0.00424,"14":0.00424,"15":0.00424,"16":0.00424,"17":0.00849,"18":0.02546,"84":0.00849,"89":0.02122,"90":0.00424,"91":0.02122,"92":0.03395,"93":0.05517,"94":1.59999,"95":0.53474,_:"79 80 81 83 85 86 87 88"},E:{"4":0,"13":0.01273,"14":0.0679,"15":0.09761,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00849,"11.1":0.00849,"12.1":0.01273,"13.1":0.02971,"14.1":0.17825},P:{"4":0.25921,"5.0-5.4":0.01017,"6.2-6.4":0.02034,"7.2-7.4":0.1659,"8.2":0.02034,"9.2":0.03111,"10.1":0.02074,"11.1-11.2":0.1659,"12.0":0.05184,"13.0":0.18663,"14.0":0.29032,"15.0":1.29606},I:{"0":0,"3":0,"4":0.00269,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00673,"4.2-4.3":0.01009,"4.4":0,"4.4.3-4.4.4":0.08408},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.02448,"9":0.00979,"11":0.14201,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.09208},Q:{"10.4":0},O:{"0":0.14963},H:{"0":0.30511},L:{"0":53.56694},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js
new file mode 100644
index 0000000000..467b85b76d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TO.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.40833,"65":0.00524,"70":0.01047,"72":0.02094,"78":0.02094,"79":0.02618,"82":0.00524,"84":0.01047,"88":0.01571,"89":0.00524,"90":0.02094,"91":0.01571,"92":0.26699,"93":1.68044,"94":0.11517,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 66 67 68 69 71 73 74 75 76 77 80 81 83 85 86 87 95 3.5 3.6"},D:{"38":0.01047,"49":0.00524,"56":0.15182,"60":0.23558,"61":0.01047,"69":0.00524,"72":0.01571,"79":0.01571,"80":0.05235,"81":0.06806,"83":0.00524,"84":0.01047,"86":0.03141,"87":0.18323,"88":0.05759,"89":0.03141,"90":0.33504,"91":0.06282,"92":1.37681,"93":2.53898,"94":16.65777,"95":5.00466,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 59 62 63 64 65 66 67 68 70 71 73 74 75 76 77 78 85 96 97 98"},F:{"78":0.01047,"79":0.14658,"80":0.04188,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.51772,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00296,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.1494,"10.0-10.2":0,"10.3":0.03476,"11.0-11.2":0.02367,"11.3-11.4":0.00814,"12.0-12.1":0.05843,"12.2-12.5":1.11531,"13.0-13.1":0.17307,"13.2":0.05843,"13.3":0.32024,"13.4-13.7":0.37867,"14.0-14.4":1.37786,"14.5-14.8":3.17508},B:{"13":0.01571,"16":0.01571,"17":0.02618,"18":0.21464,"80":0.00524,"84":0.23034,"87":0.01571,"88":0.02094,"89":0.03141,"90":0.23558,"91":0.02094,"92":0.38739,"93":0.80619,"94":3.98907,"95":0.65438,_:"12 14 15 79 81 83 85 86"},E:{"4":0,"12":0.01047,"13":0.05759,"14":0.76955,"15":0.05759,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.04712,"12.1":0.02094,"13.1":0.06806,"14.1":0.18323},P:{"4":0.04137,"5.0-5.4":0.01017,"6.2-6.4":0.02034,"7.2-7.4":0.41373,"8.2":0.02034,"9.2":0.13446,"10.1":0.02069,"11.1-11.2":0.15515,"12.0":0.03103,"13.0":0.64127,"14.0":0.21721,"15.0":1.06534},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":1.71708,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.1191},Q:{"10.4":0.03335},O:{"0":0.17627},H:{"0":0.09923},L:{"0":49.77926},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js
new file mode 100644
index 0000000000..1d258c91ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TR.js
@@ -0,0 +1 @@
+module.exports={C:{"51":0.00301,"52":0.01807,"68":0.00301,"78":0.02108,"79":0.00602,"80":0.00904,"81":0.00602,"82":0.00602,"83":0.00301,"84":0.00301,"88":0.00602,"89":0.02108,"91":0.01807,"92":0.18072,"93":0.45481,"94":0.00301,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 85 86 87 90 95 3.5 3.6"},D:{"22":0.08434,"26":0.05422,"34":0.08735,"38":0.11446,"39":0.00602,"42":0.00301,"43":0.00904,"47":0.10843,"49":0.30722,"51":0.00904,"53":0.03313,"56":0.00904,"57":0.00301,"58":0.00602,"59":0.00602,"60":0.00301,"61":0.03614,"62":0.00301,"63":0.01205,"64":0.00301,"65":0.00904,"66":0.00602,"67":0.00904,"68":0.02108,"69":0.00904,"70":0.01205,"71":0.04518,"72":0.00904,"73":0.01506,"74":0.01205,"75":0.01807,"76":0.01807,"77":0.01807,"78":0.01807,"79":0.14759,"80":0.03313,"81":0.0241,"83":0.05723,"84":0.0753,"85":0.08434,"86":0.09036,"87":0.18976,"88":0.06024,"89":0.06325,"90":0.0512,"91":0.12349,"92":0.38252,"93":0.53312,"94":15.42445,"95":4.58125,"96":0.00602,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 35 36 37 40 41 44 45 46 48 50 52 54 55 97 98"},F:{"28":0.00301,"31":0.01205,"32":0.01807,"36":0.02108,"40":0.06325,"46":0.03313,"65":0.00301,"68":0.00301,"70":0.00301,"77":0.00301,"78":0.04518,"79":0.76204,"80":0.40963,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 69 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.85524,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00201,"6.0-6.1":0.00302,"7.0-7.1":0.07143,"8.1-8.4":0.00201,"9.0-9.2":0.00604,"9.3":0.09155,"10.0-10.2":0.01509,"10.3":0.15091,"11.0-11.2":0.0503,"11.3-11.4":0.05634,"12.0-12.1":0.03722,"12.2-12.5":1.56244,"13.0-13.1":0.02314,"13.2":0.01207,"13.3":0.08149,"13.4-13.7":0.26359,"14.0-14.4":0.6952,"14.5-14.8":4.07662},B:{"12":0.00602,"13":0.00602,"14":0.00904,"15":0.00602,"16":0.00301,"17":0.00602,"18":0.03012,"84":0.00904,"85":0.00602,"86":0.00301,"87":0.00301,"89":0.00904,"90":0.00301,"91":0.00904,"92":0.01506,"93":0.03313,"94":0.94577,"95":0.32228,_:"79 80 81 83 88"},E:{"4":0,"13":0.01205,"14":0.08434,"15":0.18072,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1","5.1":0.02711,"10.1":0.00602,"11.1":0.00904,"12.1":0.01506,"13.1":0.06325,"14.1":0.31024},P:{"4":0.82024,"5.0-5.4":0.02051,"6.2-6.4":0.01049,"7.2-7.4":0.24607,"8.2":0.01079,"9.2":0.04101,"10.1":0.03076,"11.1-11.2":0.1743,"12.0":0.09228,"13.0":0.3486,"14.0":0.31784,"15.0":2.73755},I:{"0":0,"3":0,"4":0.00014,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00277,"4.2-4.3":0.00982,"4.4":0,"4.4.3-4.4.4":0.0292},A:{"8":0.00619,"9":0.01238,"11":0.53865,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.18169},Q:{"10.4":0},O:{"0":0.12578},H:{"0":0.56234},L:{"0":54.85938},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js
new file mode 100644
index 0000000000..5fe625e541
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TT.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.03285,"68":0.00939,"78":0.03754,"87":0.00939,"89":0.05162,"90":0.00939,"91":0.07978,"92":0.54908,"93":1.29996,"94":0.01877,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 88 95 3.5 3.6"},D:{"38":0.01877,"41":0.00939,"47":0.00469,"49":0.22526,"50":0.01877,"53":0.00469,"55":0.05162,"56":0.01408,"63":0.00939,"65":0.01877,"67":0.02347,"68":0.00469,"70":0.00939,"72":0.00469,"73":0.00469,"74":0.09855,"75":0.05632,"76":0.06101,"77":0.01408,"78":0.01408,"79":0.1314,"80":0.02347,"81":0.04224,"83":0.01408,"84":0.02347,"85":0.05632,"86":0.02347,"87":0.22996,"88":0.02816,"89":0.06101,"90":0.08917,"91":0.1314,"92":0.3379,"93":1.71295,"94":21.921,"95":5.62221,"96":0.04224,"97":0.01408,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 42 43 44 45 46 48 51 52 54 57 58 59 60 61 62 64 66 69 71 98"},F:{"28":0.00939,"77":0.00469,"78":0.03285,"79":0.70864,"80":0.45053,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.26559,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.04055,"6.0-6.1":0.00094,"7.0-7.1":0.05847,"8.1-8.4":0.00283,"9.0-9.2":0,"9.3":0.14051,"10.0-10.2":0.00471,"10.3":0.11222,"11.0-11.2":0.02263,"11.3-11.4":0.0132,"12.0-12.1":0.0198,"12.2-12.5":0.56391,"13.0-13.1":0.00566,"13.2":0.00754,"13.3":0.04149,"13.4-13.7":0.12448,"14.0-14.4":0.48564,"14.5-14.8":4.51506},B:{"12":0.01408,"13":0.00469,"14":0.00469,"15":0.00939,"16":0.00939,"17":0.00939,"18":0.05162,"84":0.02347,"85":0.00939,"87":0.00939,"89":0.01877,"90":0.01408,"91":0.00469,"92":0.03285,"93":0.18303,"94":4.65076,"95":1.46891,_:"79 80 81 83 86 88"},E:{"4":0,"11":0.00939,"13":0.02816,"14":0.30974,"15":0.82128,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.02347,"11.1":0.12671,"12.1":0.03285,"13.1":0.44584,"14.1":1.17794},P:{"4":0.44496,"5.0-5.4":0.01017,"6.2-6.4":0.02034,"7.2-7.4":0.19535,"8.2":0.02034,"9.2":0.04341,"10.1":0.02069,"11.1-11.2":0.23876,"12.0":0.03256,"13.0":0.19535,"14.0":0.3907,"15.0":4.69923},I:{"0":0,"3":0,"4":0.00145,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00109,"4.2-4.3":0.00072,"4.4":0,"4.4.3-4.4.4":0.04451},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.0053,"11":0.15896,_:"6 7 8 9 5.5"},J:{"7":0,"10":0.00531},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.16452},Q:{"10.4":0.01061},O:{"0":0.09022},H:{"0":0.28639},L:{"0":38.71528},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js
new file mode 100644
index 0000000000..71d5a55e94
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TV.js
@@ -0,0 +1 @@
+module.exports={C:{"92":0.05861,"93":0.29837,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 94 95 3.5 3.6"},D:{"52":0.35698,"56":0.35698,"81":0.8365,"83":1.25208,"85":0.05861,"86":0.05861,"89":0.05861,"90":0.59674,"91":0.23976,"93":1.90742,"94":25.50514,"95":4.70995,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 84 87 88 92 96 97 98"},F:{"79":0.18115,"80":0.11722,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.16874,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.37985,"10.0-10.2":0,"10.3":0,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.12662,"13.0-13.1":0.0845,"13.2":0,"13.3":0.04212,"13.4-13.7":0.25323,"14.0-14.4":0.63282,"14.5-14.8":0.92844},B:{"91":0.05861,"93":0.59674,"94":8.10389,"95":5.96203,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 92"},E:{"4":0,_:"0 5 6 7 8 9 10 11 12 13 14 15 3.1 3.2 5.1 6.1 7.1 9.1 10.1 12.1","11.1":0.18115,"13.1":0.05861,"14.1":0.11722},P:{"4":0.24294,"5.0-5.4":0.08172,"6.2-6.4":0.03169,"7.2-7.4":0.18221,"8.2":0.12147,"9.2":0.02113,"10.1":0.06129,"11.1-11.2":0.18221,"12.0":0.06074,"13.0":0.10563,"14.0":0.0845,"15.0":0.06074},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.11722,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.12147},Q:{"10.4":0},O:{"0":0.36442},H:{"0":0},L:{"0":44.25933},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js
new file mode 100644
index 0000000000..89b164fab1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TW.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.02661,"45":0.00444,"46":0.00887,"47":0.00887,"48":0.00444,"49":0.00887,"50":0.01331,"51":0.00887,"52":0.03105,"55":0.00887,"72":0.00887,"78":0.01774,"84":0.00444,"86":0.00444,"88":0.01331,"89":0.01774,"90":0.01331,"91":0.01774,"92":0.39472,"93":0.89587,"94":0.00444,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 73 74 75 76 77 79 80 81 82 83 85 87 95 3.5 3.6"},D:{"11":0.01774,"22":0.00444,"26":0.00444,"30":0.01331,"34":0.02218,"38":0.10201,"48":0.00444,"49":0.2661,"50":0.00887,"51":0.00887,"52":0.00887,"53":0.11975,"54":0.00444,"55":0.01774,"56":0.03105,"57":0.00444,"58":0.00887,"61":0.18184,"62":0.00444,"63":0.00887,"64":0.00887,"65":0.01331,"66":0.01774,"67":0.02661,"68":0.01774,"69":0.01774,"70":0.01774,"71":0.02218,"72":0.01331,"73":0.01331,"74":0.02218,"75":0.03105,"76":0.01331,"77":0.01331,"78":0.01331,"79":0.39915,"80":0.02661,"81":0.06209,"83":0.02661,"84":0.01331,"85":0.02218,"86":0.05322,"87":0.20845,"88":0.02661,"89":0.07096,"90":0.05766,"91":0.13749,"92":0.51003,"93":1.15754,"94":24.05544,"95":4.44831,"96":0.01331,"97":0.00444,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 59 60 98"},F:{"28":0.01774,"36":0.01774,"46":0.05766,"78":0.00444,"79":0.10201,"80":0.03992,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00229,"15":3.14925,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0275,"6.0-6.1":0.01375,"7.0-7.1":0.12835,"8.1-8.4":0.04584,"9.0-9.2":0.01834,"9.3":0.24295,"10.0-10.2":0.03438,"10.3":0.28421,"11.0-11.2":0.08022,"11.3-11.4":0.08481,"12.0-12.1":0.18565,"12.2-12.5":1.07496,"13.0-13.1":0.16044,"13.2":0.06647,"13.3":0.30026,"13.4-13.7":0.67844,"14.0-14.4":3.422,"14.5-14.8":12.91099},B:{"14":0.00444,"16":0.00444,"17":0.00887,"18":0.02661,"84":0.00887,"89":0.00444,"91":0.01331,"92":0.02218,"93":0.07983,"94":2.35499,"95":0.58099,_:"12 13 15 79 80 81 83 85 86 87 88 90"},E:{"4":0,"8":0.00444,"12":0.00887,"13":0.14636,"14":0.5189,"15":0.59429,_:"0 5 6 7 9 10 11 3.1 3.2 5.1 6.1 7.1","9.1":0.00887,"10.1":0.02218,"11.1":0.03992,"12.1":0.07096,"13.1":0.33263,"14.1":3.36617},P:{"4":0.53943,"5.0-5.4":0.02098,"6.2-6.4":0.01049,"7.2-7.4":0.01079,"8.2":0.01079,"9.2":0.08631,"10.1":0.04315,"11.1-11.2":0.15104,"12.0":0.10789,"13.0":0.29129,"14.0":0.42076,"15.0":2.3843},I:{"0":0,"3":0,"4":0.00106,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00159,"4.2-4.3":0.00424,"4.4":0,"4.4.3-4.4.4":0.0265},A:{"8":0.01116,"11":0.33477,_:"6 7 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.10574},Q:{"10.4":0.0167},O:{"0":0.11687},H:{"0":0.35826},L:{"0":29.24358},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js
new file mode 100644
index 0000000000..f75583e653
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/TZ.js
@@ -0,0 +1 @@
+module.exports={C:{"23":0.00176,"30":0.00528,"34":0.00528,"38":0.00176,"41":0.00352,"42":0.00176,"43":0.00881,"44":0.00352,"45":0.00352,"47":0.00528,"48":0.00704,"49":0.00528,"52":0.04755,"56":0.00352,"58":0.00352,"65":0.00352,"66":0.00176,"68":0.00176,"72":0.00528,"78":0.03346,"79":0.00352,"84":0.00176,"86":0.00528,"87":0.01409,"88":0.01409,"89":0.02465,"90":0.00881,"91":0.02289,"92":0.43497,"93":1.00553,"94":0.08453,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 24 25 26 27 28 29 31 32 33 35 36 37 39 40 46 50 51 53 54 55 57 59 60 61 62 63 64 67 69 70 71 73 74 75 76 77 80 81 82 83 85 95 3.5 3.6"},D:{"11":0.00704,"21":0.00176,"31":0.00352,"33":0.00352,"37":0.00352,"38":0.00352,"39":0.02289,"43":0.00352,"49":0.02289,"50":0.00352,"55":0.00352,"56":0.00352,"57":0.03346,"58":0.00352,"60":0.00704,"63":0.00881,"64":0.00528,"65":0.00528,"66":0.00352,"67":0.00352,"68":0.00528,"69":0.00528,"70":0.00881,"71":0.00352,"72":0.00352,"73":0.00352,"74":0.00704,"75":0.00352,"76":0.00352,"77":0.00352,"78":0.00352,"79":0.02465,"80":0.01937,"81":0.01233,"83":0.00704,"84":0.02289,"85":0.01057,"86":0.01761,"87":0.04579,"88":0.0317,"89":0.01585,"90":0.0317,"91":0.07044,"92":0.18138,"93":0.31698,"94":5.38338,"95":1.48276,"96":0.01409,"97":0.00352,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 22 23 24 25 26 27 28 29 30 32 34 35 36 40 41 42 44 45 46 47 48 51 52 53 54 59 61 62 98"},F:{"36":0.00176,"64":0.00176,"65":0.02113,"72":0.00528,"73":0.00176,"76":0.00352,"77":0.00528,"78":0.01585,"79":0.46314,"80":0.25006,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 68 69 70 71 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.67067,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00275,"6.0-6.1":0.00157,"7.0-7.1":0.03934,"8.1-8.4":0,"9.0-9.2":0.00079,"9.3":0.02675,"10.0-10.2":0.00511,"10.3":0.04996,"11.0-11.2":0.03265,"11.3-11.4":0.05546,"12.0-12.1":0.0358,"12.2-12.5":0.70882,"13.0-13.1":0.0531,"13.2":0.01062,"13.3":0.09637,"13.4-13.7":0.18645,"14.0-14.4":0.68562,"14.5-14.8":1.26817},B:{"12":0.01937,"13":0.00881,"14":0.00704,"15":0.00704,"16":0.02465,"17":0.00704,"18":0.05283,"84":0.00881,"85":0.00528,"86":0.00352,"87":0.00176,"89":0.01585,"90":0.00704,"91":0.01057,"92":0.02818,"93":0.0634,"94":0.68151,"95":0.22189,_:"79 80 81 83 88"},E:{"4":0,"8":0.00176,"10":0.00352,"11":0.00176,"12":0.00176,"13":0.00528,"14":0.06692,"15":0.0722,_:"0 5 6 7 9 3.1 3.2 5.1 6.1","7.1":0.00176,"9.1":0.00176,"10.1":0.00352,"11.1":0.00528,"12.1":0.00881,"13.1":0.08453,"14.1":0.11447},P:{"4":0.34381,"5.0-5.4":0.03126,"6.2-6.4":0.01042,"7.2-7.4":0.12502,"8.2":0.0402,"9.2":0.14586,"10.1":0.07035,"11.1-11.2":0.12502,"12.0":0.05209,"13.0":0.12502,"14.0":0.25005,"15.0":0.76056},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00438,"4.2-4.3":0.00974,"4.4":0,"4.4.3-4.4.4":0.08474},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00714,"11":0.24996,_:"6 7 9 10 5.5"},J:{"7":0,"10":0.01648},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.13182},Q:{"10.4":0.00824},O:{"0":1.21113},H:{"0":29.67958},L:{"0":48.16442},S:{"2.5":0.31308}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js
new file mode 100644
index 0000000000..43f072cae3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UA.js
@@ -0,0 +1 @@
+module.exports={C:{"17":0.00634,"20":0.1015,"21":0.00634,"48":0.00634,"52":0.22838,"55":0.06978,"56":0.01269,"57":0.01269,"58":0.02538,"60":0.22838,"66":0.01903,"68":0.23473,"72":0.01903,"74":0.00634,"76":0.00634,"77":0.01269,"78":0.22204,"79":0.01269,"80":0.01903,"81":0.0571,"82":0.01903,"83":0.03172,"84":0.07613,"85":0.00634,"86":0.01903,"87":0.01903,"88":0.13322,"89":0.03806,"90":0.02538,"91":0.13322,"92":0.81838,"93":1.97298,"94":0.01269,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 59 61 62 63 64 65 67 69 70 71 73 75 95 3.5","3.6":0.01903},D:{"24":0.00634,"25":0.00634,"41":0.01903,"42":0.00634,"43":0.00634,"44":0.00634,"45":0.01269,"47":0.01269,"48":0.01903,"49":0.39333,"50":0.01269,"51":0.01269,"56":0.01269,"57":0.02538,"58":0.01269,"59":0.12054,"61":0.36795,"62":0.00634,"63":0.03172,"64":0.01269,"65":0.00634,"66":0.01269,"67":0.01903,"68":0.01269,"69":0.01903,"70":0.02538,"71":0.03172,"72":0.03806,"73":0.1015,"74":0.06344,"75":0.01903,"76":0.02538,"77":0.01903,"78":0.02538,"79":0.1015,"80":0.06344,"81":0.03806,"83":0.17129,"84":0.15226,"85":0.16494,"86":0.36161,"87":1.37665,"88":0.38698,"89":0.13957,"90":0.24742,"91":0.2601,"92":0.80569,"93":1.44643,"94":26.8605,"95":5.96336,"96":0.01903,"97":0.01903,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 46 52 53 54 55 60 98"},F:{"34":0.01269,"35":0.01269,"36":0.08882,"58":0.01903,"63":0.00634,"65":0.01903,"67":0.00634,"68":0.01269,"69":0.01269,"70":0.00634,"71":0.01269,"72":0.01903,"73":0.01903,"74":0.01903,"75":0.01903,"76":0.02538,"77":0.05075,"78":0.25376,"79":6.80077,"80":3.05781,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 60 62 64 66 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.0571},G:{"8":0.00061,"15":1.6375,"3.2":0,"4.0-4.1":0.00061,"4.2-4.3":0.00061,"5.0-5.1":0.00486,"6.0-6.1":0.00729,"7.0-7.1":0.02855,"8.1-8.4":0.00425,"9.0-9.2":0.00607,"9.3":0.04434,"10.0-10.2":0.00729,"10.3":0.05284,"11.0-11.2":0.02004,"11.3-11.4":0.02369,"12.0-12.1":0.0243,"12.2-12.5":0.25449,"13.0-13.1":0.02612,"13.2":0.01093,"13.3":0.04859,"13.4-13.7":0.20104,"14.0-14.4":0.5017,"14.5-14.8":3.1669},B:{"14":0.00634,"18":0.02538,"83":0.00634,"84":0.02538,"85":0.01903,"86":0.01903,"87":0.00634,"89":0.01269,"90":0.01269,"91":0.00634,"92":0.01269,"93":0.03806,"94":0.82472,"95":0.22838,_:"12 13 15 16 17 79 80 81 88"},E:{"4":0,"11":0.00634,"12":0.01903,"13":0.08882,"14":0.27279,"15":0.56462,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.17129,"11.1":0.01903,"12.1":0.03172,"13.1":0.16494,"14.1":0.72322},P:{"4":0.02133,"5.0-5.4":0.02051,"6.2-6.4":0.01049,"7.2-7.4":0.15997,"8.2":0.01079,"9.2":0.08532,"10.1":0.04266,"11.1-11.2":0.20263,"12.0":0.04266,"13.0":0.1813,"14.0":0.34126,"15.0":1.74898},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00236,"4.2-4.3":0.00946,"4.4":0,"4.4.3-4.4.4":0.04302},A:{"8":0.03399,"9":0.02039,"10":0.01359,"11":0.31267,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.13893},Q:{"10.4":0},O:{"0":0.29614},H:{"0":3.00784},L:{"0":24.64656},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js
new file mode 100644
index 0000000000..790141aa7b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UG.js
@@ -0,0 +1 @@
+module.exports={C:{"15":0.00331,"17":0.00992,"39":0.00331,"40":0.00331,"41":0.00331,"42":0.00661,"43":0.00992,"44":0.00661,"45":0.00331,"46":0.00331,"47":0.01984,"48":0.00661,"49":0.00331,"50":0.00661,"52":0.04299,"55":0.00661,"56":0.00992,"57":0.00331,"58":0.00661,"60":0.00661,"64":0.02976,"66":0.00331,"67":0.00331,"68":0.00992,"69":0.01654,"71":0.00661,"72":0.02646,"73":0.00331,"78":0.07606,"84":0.02976,"85":0.00992,"86":0.00992,"87":0.00661,"88":0.0463,"89":0.06945,"90":0.01323,"91":0.04299,"92":1.18391,"93":2.74812,"94":0.32078,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 51 53 54 59 61 62 63 65 70 74 75 76 77 79 80 81 82 83 95 3.5 3.6"},D:{"11":0.00661,"19":0.01323,"23":0.00661,"24":0.00661,"25":0.00331,"33":0.00331,"37":0.00331,"38":0.00661,"39":0.00992,"40":0.00331,"47":0.01323,"49":0.03968,"50":0.00661,"56":0.00661,"57":0.01323,"58":0.00661,"62":0.00331,"63":0.01323,"64":0.03307,"65":0.00992,"66":0.00661,"68":0.00331,"69":0.00661,"70":0.01323,"71":0.00661,"72":0.01654,"73":0.00331,"74":0.00992,"75":0.01654,"76":0.02976,"77":0.00661,"78":0.02646,"79":0.04961,"80":0.04299,"81":0.03307,"83":0.01654,"84":0.02646,"85":0.00992,"86":0.04961,"87":0.06614,"88":0.03307,"89":0.07275,"90":0.07606,"91":0.12236,"92":0.48613,"93":0.60518,"94":10.60886,"95":3.3996,"96":0.01654,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 26 27 28 29 30 31 32 34 35 36 41 42 43 44 45 46 48 51 52 53 54 55 59 60 61 67 97 98"},F:{"46":0.00331,"63":0.00661,"65":0.00661,"77":0.00992,"78":0.02315,"79":0.58534,"80":0.28771,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 64 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00188,"15":0.68747,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00113,"5.0-5.1":0.018,"6.0-6.1":0.00338,"7.0-7.1":0.01313,"8.1-8.4":0.00038,"9.0-9.2":0.00113,"9.3":0.06263,"10.0-10.2":0.0045,"10.3":0.04838,"11.0-11.2":0.02138,"11.3-11.4":0.11477,"12.0-12.1":0.02963,"12.2-12.5":0.69647,"13.0-13.1":0.02325,"13.2":0.00563,"13.3":0.10764,"13.4-13.7":0.09226,"14.0-14.4":0.7186,"14.5-14.8":1.09703},B:{"12":0.02315,"13":0.01984,"14":0.00992,"15":0.01984,"16":0.02646,"17":0.01654,"18":0.07606,"84":0.00661,"85":0.00661,"88":0.00331,"89":0.02315,"90":0.00661,"91":0.01654,"92":0.04961,"93":0.07937,"94":1.2765,"95":0.39023,_:"79 80 81 83 86 87"},E:{"4":0,"10":0.00992,"11":0.00331,"12":0.00331,"13":0.00992,"14":0.07606,"15":0.08929,_:"0 5 6 7 8 9 3.1 3.2 6.1 7.1 9.1","5.1":0.00992,"10.1":0.00661,"11.1":0.00661,"12.1":0.00992,"13.1":0.03638,"14.1":0.09921},P:{"4":0.16971,"5.0-5.4":0.03182,"6.2-6.4":0.03169,"7.2-7.4":0.05303,"8.2":0.12147,"9.2":0.11667,"10.1":0.06129,"11.1-11.2":0.08485,"12.0":0.01061,"13.0":0.11667,"14.0":0.27577,"15.0":0.64701},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00262,"4.2-4.3":0.00466,"4.4":0,"4.4.3-4.4.4":0.08644},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00551,"10":0.01102,"11":0.13228,_:"6 7 9 5.5"},J:{"7":0,"10":0.02008},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.12719},Q:{"10.4":0.00669},O:{"0":1.07104},H:{"0":16.81958},L:{"0":50.56035},S:{"2.5":0.20082}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js
new file mode 100644
index 0000000000..2ca3530fa4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/US.js
@@ -0,0 +1 @@
+module.exports={C:{"2":0.00504,"4":0.03525,"11":0.01511,"17":0.00504,"44":0.01511,"45":0.00504,"48":0.01007,"50":0.00504,"52":0.04028,"54":0.00504,"56":0.00504,"58":0.01511,"59":0.00504,"60":0.00504,"63":0.01007,"66":0.01007,"67":0.00504,"68":0.01007,"72":0.00504,"76":0.01007,"77":0.00504,"78":0.16616,"79":0.01007,"80":0.01007,"81":0.01007,"82":0.01511,"83":0.00504,"84":0.01007,"85":0.01007,"86":0.01511,"87":0.00504,"88":0.02518,"89":0.02518,"90":0.02518,"91":0.06042,"92":0.73511,"93":1.57596,"94":0.00504,_:"3 5 6 7 8 9 10 12 13 14 15 16 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 46 47 49 51 53 55 57 61 62 64 65 69 70 71 73 74 75 95 3.5 3.6"},D:{"35":0.00504,"38":0.01007,"40":0.02014,"43":0.00504,"46":0.00504,"47":0.00504,"48":0.04532,"49":0.19133,"52":0.01007,"56":0.10574,"58":0.00504,"59":0.01511,"60":0.01511,"61":0.03525,"62":0.01007,"63":0.01007,"64":0.05539,"65":0.02014,"66":0.04532,"67":0.02518,"68":0.01007,"69":0.02518,"70":0.06042,"71":0.00504,"72":0.06546,"73":0.01511,"74":0.13091,"75":0.07049,"76":0.15609,"77":0.03525,"78":0.07553,"79":0.19637,"80":0.13091,"81":0.0856,"83":0.11077,"84":0.24168,"85":0.22154,"86":0.1863,"87":0.38266,"88":0.17623,"89":0.55889,"90":0.24168,"91":0.62434,"92":1.17316,"93":3.96758,"94":16.84208,"95":3.36338,"96":0.03021,"97":0.04532,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 50 51 53 54 55 57 98"},F:{"78":0.04028,"79":0.31721,"80":0.13091,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.42252,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00265,"6.0-6.1":0.01062,"7.0-7.1":0.01593,"8.1-8.4":0.01327,"9.0-9.2":0.01327,"9.3":0.11148,"10.0-10.2":0.02389,"10.3":0.13536,"11.0-11.2":0.05839,"11.3-11.4":0.07166,"12.0-12.1":0.06901,"12.2-12.5":0.71132,"13.0-13.1":0.05839,"13.2":0.0345,"13.3":0.16987,"13.4-13.7":0.54146,"14.0-14.4":1.78097,"14.5-14.8":17.2735},B:{"12":0.00504,"15":0.01007,"16":0.01007,"17":0.01007,"18":0.03525,"84":0.01007,"85":0.01511,"86":0.01007,"87":0.04028,"88":0.00504,"89":0.01511,"90":0.01007,"91":0.02014,"92":0.05035,"93":0.43301,"94":4.36535,"95":1.1077,_:"13 14 79 80 81 83"},E:{"4":0,"8":0.00504,"9":0.00504,"11":0.01007,"12":0.01511,"13":0.11077,"14":0.63945,"15":1.72197,_:"0 5 6 7 10 3.1 3.2 5.1 6.1 7.1","9.1":0.1007,"10.1":0.02518,"11.1":0.08056,"12.1":0.16112,"13.1":1.70183,"14.1":3.91723},P:{"4":0.03266,_:"5.0-5.4 6.2-6.4 7.2-7.4 8.2 10.1","9.2":0.02177,"11.1-11.2":0.04355,"12.0":0.02177,"13.0":0.07621,"14.0":0.14153,"15.0":1.75277},I:{"0":0,"3":0,"4":0.01195,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00276,"4.2-4.3":0.02483,"4.4":0,"4.4.3-4.4.4":0.03494},A:{"8":0.02283,"9":0.21122,"11":0.57658,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.41706},Q:{"10.4":0.01986},O:{"0":0.20357},H:{"0":0.21152},L:{"0":20.7305},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js
new file mode 100644
index 0000000000..5b9d94bdeb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UY.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.00522,"50":0.01044,"52":0.10964,"55":0.00522,"57":0.01044,"61":0.01566,"62":0.00522,"63":0.00522,"66":0.02611,"68":0.01566,"69":0.01044,"73":0.04699,"78":0.10964,"81":0.00522,"83":0.01044,"84":0.01044,"85":0.00522,"88":0.05221,"89":0.01566,"90":0.03133,"91":0.03133,"92":0.63174,"93":1.70727,"94":0.00522,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 49 51 53 54 56 58 59 60 64 65 67 70 71 72 74 75 76 77 79 80 82 86 87 95 3.5 3.6"},D:{"38":0.05221,"43":0.00522,"47":0.01044,"48":0.00522,"49":0.21928,"56":0.01566,"57":0.00522,"60":0.01044,"62":0.02611,"63":0.01044,"65":0.01566,"66":0.01044,"67":0.00522,"69":0.00522,"70":0.01044,"71":0.10964,"72":0.01044,"73":0.02088,"74":0.02611,"75":0.01566,"76":0.02611,"77":0.01566,"78":0.02088,"79":0.04699,"80":0.20362,"81":0.03655,"83":0.02611,"84":0.01566,"85":0.03133,"86":1.27915,"87":0.17229,"88":0.05221,"89":0.08354,"90":0.09398,"91":0.22972,"92":0.54821,"93":1.5402,"94":27.80705,"95":7.62788,"96":0.00522,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 44 45 46 50 51 52 53 54 55 58 59 61 64 68 97 98"},F:{"77":0.00522,"78":0.16707,"79":1.89522,"80":0.80403,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":1.42913,"3.2":0.00064,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01473,"6.0-6.1":0,"7.0-7.1":0.01153,"8.1-8.4":0,"9.0-9.2":0.00064,"9.3":0.02498,"10.0-10.2":0.00192,"10.3":0.03139,"11.0-11.2":0.00577,"11.3-11.4":0.01473,"12.0-12.1":0.03075,"12.2-12.5":0.48684,"13.0-13.1":0.01281,"13.2":0.00769,"13.3":0.05125,"13.4-13.7":0.15566,"14.0-14.4":0.52784,"14.5-14.8":3.59557},B:{"17":0.00522,"18":0.02088,"80":0.00522,"89":0.01044,"90":0.01566,"91":0.00522,"92":0.02611,"93":0.06265,"94":2.03097,"95":0.70484,_:"12 13 14 15 16 79 81 83 84 85 86 87 88"},E:{"4":0,"13":0.01044,"14":0.1253,"15":0.29238,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01566,"11.1":0.02611,"12.1":0.07309,"13.1":0.14619,"14.1":0.57431},P:{"4":0.06255,"5.0-5.4":0.02051,"6.2-6.4":0.01049,"7.2-7.4":0.15637,"8.2":0.01079,"9.2":0.03127,"10.1":0.01042,"11.1-11.2":0.11467,"12.0":0.10424,"13.0":0.09382,"14.0":0.12509,"15.0":1.08413},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00343,"4.2-4.3":0.00572,"4.4":0,"4.4.3-4.4.4":0.07209},A:{"11":0.16707,_:"6 7 8 9 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.17682},Q:{"10.4":0},O:{"0":0.01434},H:{"0":0.09954},L:{"0":40.41092},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js
new file mode 100644
index 0000000000..18124d605b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/UZ.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.16583,"55":0.00721,"57":0.01442,"68":0.02163,"72":0.56238,"73":0.04326,"77":0.00721,"78":0.09734,"79":0.24514,"80":0.00721,"81":0.01803,"83":0.01442,"87":0.00361,"88":0.02524,"89":0.00721,"91":0.00721,"92":0.2884,"93":0.68135,"94":0.01442,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 56 58 59 60 61 62 63 64 65 66 67 69 70 71 74 75 76 82 84 85 86 90 95 3.5 3.6"},D:{"11":0.00361,"24":0.00721,"34":0.00361,"38":0.00361,"39":0.00721,"43":0.00721,"47":0.00721,"49":0.16583,"56":0.02163,"57":0.00361,"59":0.00361,"61":0.00361,"63":0.01082,"64":0.00721,"66":0.04326,"67":0.01082,"68":0.01803,"69":0.00361,"70":0.00721,"71":0.09373,"72":0.01442,"73":0.00721,"74":0.01082,"75":0.01082,"76":0.01082,"77":0.00721,"78":0.01082,"79":0.10455,"80":0.03245,"81":0.05768,"83":0.03966,"84":0.0721,"85":0.08652,"86":0.15141,"87":0.16583,"88":0.08292,"89":0.08292,"90":0.06489,"91":0.10094,"92":0.43981,"93":0.5768,"94":16.3667,"95":5.21283,"96":0.02884,"97":0.00721,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 25 26 27 28 29 30 31 32 33 35 36 37 40 41 42 44 45 46 48 50 51 52 53 54 55 58 60 62 65 98"},F:{"36":0.00721,"40":0.00361,"42":0.00361,"47":0.00361,"48":0.00721,"50":0.00361,"51":0.00721,"52":0.00361,"53":0.06129,"54":0.01082,"55":0.01442,"56":0.01082,"57":0.03245,"58":0.01082,"60":0.01803,"62":0.03245,"63":0.01442,"64":0.02524,"65":0.02163,"66":0.01442,"67":0.01442,"68":0.01803,"69":0.00361,"70":0.01803,"71":0.03605,"72":0.06129,"73":0.02884,"74":0.01442,"75":0.02524,"76":0.02524,"77":0.05408,"78":0.04326,"79":0.05047,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 41 43 44 45 46 49 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00046,"15":1.09835,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00092,"5.0-5.1":0.00323,"6.0-6.1":0.00046,"7.0-7.1":0.03556,"8.1-8.4":0.00416,"9.0-9.2":0.00693,"9.3":0.05404,"10.0-10.2":0.00508,"10.3":0.08221,"11.0-11.2":0.02817,"11.3-11.4":0.02448,"12.0-12.1":0.01709,"12.2-12.5":0.54502,"13.0-13.1":0.03095,"13.2":0.00785,"13.3":0.03279,"13.4-13.7":0.12563,"14.0-14.4":0.55656,"14.5-14.8":1.95651},B:{"12":0.00721,"14":0.00361,"15":0.00721,"16":0.00721,"17":0.05408,"18":0.05047,"80":0.00361,"81":0.00361,"83":0.00721,"84":0.01442,"85":0.00721,"86":0.00721,"87":0.00721,"88":0.00361,"89":0.02524,"90":0.00721,"91":0.00721,"92":0.01082,"93":0.02884,"94":0.82194,_:"13 79 95"},E:{"4":0,"11":0.01082,"12":0.00721,"13":0.01082,"14":0.08652,"15":0.19467,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 11.1","5.1":1.49247,"9.1":0.00361,"10.1":0.00361,"12.1":0.01803,"13.1":0.03966,"14.1":0.21991},P:{"4":1.10715,"5.0-5.4":0.09059,"6.2-6.4":0.19124,"7.2-7.4":0.58377,"8.2":0.04026,"9.2":0.2013,"10.1":0.06039,"11.1-11.2":0.42273,"12.0":0.24156,"13.0":0.58377,"14.0":0.66429,"15.0":2.18411},I:{"0":0,"3":0,"4":0.00047,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00234,"4.2-4.3":0.00538,"4.4":0,"4.4.3-4.4.4":0.03018},A:{"8":0.00544,"9":0.01087,"11":0.31529,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0},Q:{"10.4":0.00639},O:{"0":3.81082},H:{"0":0.36321},L:{"0":49.73417},S:{"2.5":0},R:{_:"0"},M:{"0":0.07673}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js
new file mode 100644
index 0000000000..6fb244448b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VA.js
@@ -0,0 +1 @@
+module.exports={C:{"39":0.00944,"45":0.01888,"55":0.01888,"78":0.0944,"90":0.64192,"92":3.99312,"93":7.95792,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 46 47 48 49 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 89 91 94 95 3.5 3.6"},D:{"67":0.3776,"81":0.03776,"86":0.00944,"87":0.05664,"92":0.13216,"93":1.652,"94":41.41328,"95":11.96048,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 79 80 83 84 85 88 89 90 91 96 97 98"},F:{_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.1291,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.01283,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.02165,"10.0-10.2":0,"10.3":0.09061,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.91813,"13.0-13.1":0.00428,"13.2":0,"13.3":0.00855,"13.4-13.7":0.00428,"14.0-14.4":0.55194,"14.5-14.8":0.93096},B:{"17":0.27376,"18":1.58592,"89":0.00944,"93":0.01888,"94":12.86672,"95":4.04032,_:"12 13 14 15 16 79 80 81 83 84 85 86 87 88 90 91 92"},E:{"4":0,"13":0.00944,"14":0.49088,"15":1.15168,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.0472,"11.1":0.12272,"12.1":1.15168,"13.1":1.0384,"14.1":2.0768},P:{"4":0.30518,"5.0-5.4":0.1119,"6.2-6.4":0.09156,"7.2-7.4":0.35605,"8.2":0.09156,"9.2":0.19328,"10.1":0.19403,"11.1-11.2":0.40691,"12.0":0.12207,"13.0":0.21363,"14.0":0.28484,"15.0":1.71976},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.77408,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.00728},Q:{"10.4":0},O:{"0":0},H:{"0":0.22214},L:{"0":1.08928},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js
new file mode 100644
index 0000000000..ece560bde7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VC.js
@@ -0,0 +1 @@
+module.exports={C:{"43":0.0043,"50":0.01289,"52":0.02149,"53":0.0043,"54":0.0086,"55":0.0043,"56":0.0043,"57":0.0086,"58":0.01289,"61":0.01719,"63":0.0043,"68":0.0043,"73":0.0043,"91":0.02149,"92":0.55444,"93":1.27221,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 51 59 60 62 64 65 66 67 69 70 71 72 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 94 95 3.5 3.6"},D:{"39":0.07736,"47":0.01289,"49":0.04298,"51":0.02149,"55":0.0043,"56":0.0086,"59":0.0043,"61":0.09456,"63":0.01289,"64":0.0043,"65":0.01719,"66":0.0086,"67":0.01719,"70":0.01289,"71":0.0086,"73":0.0086,"74":0.18052,"75":0.0086,"76":0.01289,"77":0.0086,"78":0.0086,"79":0.05587,"80":0.01289,"81":0.03438,"83":0.0086,"84":0.0043,"85":0.01289,"86":0.06017,"87":0.09456,"88":0.05158,"89":0.01719,"90":0.03438,"91":0.07307,"92":0.67908,"93":2.11891,"94":16.04014,"95":3.96705,"96":0.01289,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 40 41 42 43 44 45 46 48 50 52 53 54 57 58 60 62 68 69 72 97 98"},F:{"28":0.01719,"32":0.0043,"44":0.0043,"49":0.0043,"55":0.0086,"56":0.0043,"65":0.01719,"77":0.06447,"79":0.30086,"80":0.16332,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 33 34 35 36 37 38 39 40 41 42 43 45 46 47 48 50 51 52 53 54 57 58 60 62 63 64 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.0043},G:{"8":0.0023,"15":1.84348,"3.2":0,"4.0-4.1":0.0023,"4.2-4.3":0.0023,"5.0-5.1":0.01228,"6.0-6.1":0.00307,"7.0-7.1":0.26566,"8.1-8.4":0.00461,"9.0-9.2":0.00154,"9.3":0.15509,"10.0-10.2":0.01612,"10.3":0.02457,"11.0-11.2":0.02994,"11.3-11.4":0.03302,"12.0-12.1":0.01305,"12.2-12.5":0.30482,"13.0-13.1":0.00845,"13.2":0.00307,"13.3":0.01536,"13.4-13.7":0.14127,"14.0-14.4":0.31096,"14.5-14.8":4.48163},B:{"12":0.02579,"13":0.01719,"15":0.01289,"16":0.06017,"17":0.02579,"18":0.04298,"79":0.0086,"81":0.0043,"83":0.0043,"84":0.03868,"85":0.0086,"86":0.0086,"89":0.06017,"91":0.0043,"92":0.04298,"93":0.14183,"94":5.57021,"95":1.53439,_:"14 80 87 88 90"},E:{"4":0,"12":0.0086,"13":0.03009,"14":0.32665,"15":0.70487,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1","12.1":0.60172,"13.1":0.19771,"14.1":1.46992},P:{"4":0.39372,"5.0-5.4":0.01193,"6.2-6.4":0.03038,"7.2-7.4":0.21476,"8.2":0.08219,"9.2":0.26248,"10.1":0.01193,"11.1-11.2":0.16703,"12.0":0.02386,"13.0":0.1551,"14.0":0.45338,"15.0":4.76046},I:{"0":0,"3":0,"4":0.00326,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00489,"4.2-4.3":0.00977,"4.4":0,"4.4.3-4.4.4":0.09612},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.01289,"11":0.6404,_:"6 7 8 9 5.5"},J:{"7":0,"10":0.02281},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.17676},Q:{"10.4":0},O:{"0":0.09693},H:{"0":0.03779},L:{"0":46.70332},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js
new file mode 100644
index 0000000000..20a519c153
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VE.js
@@ -0,0 +1 @@
+module.exports={C:{"8":0.00598,"26":0.00598,"27":0.11366,"28":0.01196,"40":0.00598,"43":0.01196,"45":0.01196,"47":0.01196,"48":0.01196,"52":0.47856,"56":0.01196,"58":0.00598,"60":0.01795,"62":0.00598,"63":0.00598,"64":0.00598,"65":0.02393,"66":0.01795,"67":0.00598,"68":0.02991,"69":0.01795,"70":0.01196,"71":0.01795,"72":0.03589,"78":0.1316,"79":0.01196,"80":0.00598,"81":0.01795,"82":0.00598,"83":0.01795,"84":0.01795,"85":0.01795,"86":0.01196,"87":0.01196,"88":0.0658,"89":0.05384,"90":0.02393,"91":0.07777,"92":0.86739,"93":2.44066,"94":0.02393,_:"2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 29 30 31 32 33 34 35 36 37 38 39 41 42 44 46 49 50 51 53 54 55 57 59 61 73 74 75 76 77 95 3.5 3.6"},D:{"42":0.01196,"43":0.01196,"47":0.01196,"48":0.00598,"49":0.67597,"51":0.00598,"53":0.01196,"55":0.00598,"56":0.00598,"57":0.00598,"58":0.02991,"60":0.00598,"63":0.02991,"64":0.02393,"65":0.04786,"66":0.01795,"67":0.03589,"68":0.01196,"69":0.05384,"70":0.02991,"71":0.04786,"72":0.02393,"73":0.02393,"74":0.01795,"75":0.0658,"76":0.04786,"77":0.02991,"78":0.02991,"79":0.11366,"80":0.05982,"81":0.04786,"83":0.10169,"84":0.08375,"85":0.09571,"86":0.12562,"87":0.66998,"88":0.15553,"89":0.16151,"90":0.19142,"91":0.35294,"92":1.38782,"93":1.36988,"94":27.55907,"95":8.82943,"96":0.01196,"97":0.00598,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 44 45 46 50 52 54 59 61 62 98"},F:{"36":0.00598,"57":0.01196,"68":0.01196,"77":0.02393,"78":0.10768,"79":1.48952,"80":0.78364,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00026,"15":0.52557,"3.2":0.00128,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0059,"6.0-6.1":0.00333,"7.0-7.1":0.02205,"8.1-8.4":0.00154,"9.0-9.2":0.00154,"9.3":0.10947,"10.0-10.2":0.00256,"10.3":0.07127,"11.0-11.2":0.00667,"11.3-11.4":0.00667,"12.0-12.1":0.01179,"12.2-12.5":0.30021,"13.0-13.1":0.01025,"13.2":0.00641,"13.3":0.03589,"13.4-13.7":0.06384,"14.0-14.4":0.19869,"14.5-14.8":1.1783},B:{"12":0.01196,"18":0.01795,"84":0.00598,"89":0.01196,"91":0.01196,"92":0.01196,"93":0.02991,"94":1.41175,"95":0.45463,_:"13 14 15 16 17 79 80 81 83 85 86 87 88 90"},E:{"4":0,"13":0.01196,"14":0.05982,"15":0.10169,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.03589,"11.1":0.01795,"12.1":0.01196,"13.1":0.0658,"14.1":0.19741},P:{"4":0.13242,"5.0-5.4":0.03182,"6.2-6.4":0.03169,"7.2-7.4":0.11035,"8.2":0.12147,"9.2":0.01103,"10.1":0.02061,"11.1-11.2":0.05517,"12.0":0.02207,"13.0":0.08828,"14.0":0.13242,"15.0":0.97107},I:{"0":0,"3":0,"4":0.0002,"2.1":0,"2.2":0,"2.3":0,"4.1":0.0034,"4.2-4.3":0.00515,"4.4":0,"4.4.3-4.4.4":0.02741},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00701,"9":0.01401,"11":0.22424,_:"6 7 10 5.5"},J:{"7":0,"10":0.02813},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.15268},Q:{"10.4":0},O:{"0":0.0442},H:{"0":0.51354},L:{"0":41.96734},S:{"2.5":0.00804}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js
new file mode 100644
index 0000000000..6e832b3943
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VG.js
@@ -0,0 +1 @@
+module.exports={C:{"56":0.00475,"57":0.01425,"68":0.00475,"76":0.019,"78":0.01425,"91":0.0285,"92":0.7505,"93":1.0735,"94":0.00475,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 58 59 60 61 62 63 64 65 66 67 69 70 71 72 73 74 75 77 79 80 81 82 83 84 85 86 87 88 89 90 95 3.5 3.6"},D:{"36":0.00475,"43":0.00475,"48":0.00475,"49":0.019,"51":0.00475,"70":0.00475,"72":0.00475,"73":0.01425,"74":0.16625,"79":0.019,"80":0.00475,"81":0.03325,"83":0.0095,"84":0.019,"86":0.00475,"87":0.01425,"88":0.05225,"89":0.019,"90":0.02375,"91":0.43225,"92":0.40375,"93":4.02325,"94":17.28525,"95":4.3795,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 44 45 46 47 50 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 71 75 76 77 78 85 96 97 98"},F:{"78":0.1045,"79":0.399,"80":0.14725,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.29217,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.00593,"9.0-9.2":0,"9.3":0.26835,"10.0-10.2":0.00593,"10.3":0.05041,"11.0-11.2":0,"11.3-11.4":0.06672,"12.0-12.1":0.00148,"12.2-12.5":0.34545,"13.0-13.1":0.00593,"13.2":0,"13.3":0.10082,"13.4-13.7":0.10378,"14.0-14.4":0.74279,"14.5-14.8":8.83341},B:{"15":0.038,"16":0.09975,"18":0.09975,"86":0.00475,"91":0.057,"92":0.038,"93":0.22325,"94":6.05625,"95":1.9095,_:"12 13 14 17 79 80 81 83 84 85 87 88 89 90"},E:{"4":0,"13":0.0475,"14":0.35625,"15":1.57225,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01425,"11.1":0.0475,"12.1":0.11875,"13.1":0.85975,"14.1":4.9875},P:{"4":0.26906,"5.0-5.4":0.09425,"6.2-6.4":0.01035,"7.2-7.4":0.13453,"8.2":0.01029,"9.2":0.0207,"10.1":0.02054,"11.1-11.2":0.17593,"12.0":0.05174,"13.0":0.35185,"14.0":0.24837,"15.0":3.829},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.2375,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},R:{_:"0"},M:{"0":0.32544},Q:{"10.4":0},O:{"0":0},H:{"0":0.05466},L:{"0":32.78387},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js
new file mode 100644
index 0000000000..c1d9f8304c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VI.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01051,"60":0.01051,"78":0.04204,"89":0.01051,"91":0.06306,"92":0.70417,"93":1.51344,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 94 95 3.5 3.6"},D:{"47":0.00526,"53":0.01051,"65":0.01051,"68":0.00526,"72":0.02102,"73":0.01051,"74":0.33107,"75":0.02102,"76":0.06306,"77":0.01051,"78":0.01051,"79":0.1051,"80":0.01577,"83":0.05781,"84":0.02628,"85":0.02628,"86":0.01577,"87":0.04204,"88":0.04204,"89":0.17342,"90":0.1051,"91":0.18918,"92":0.64637,"93":5.21296,"94":15.37613,"95":4.03059,"96":0.00526,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 48 49 50 51 52 54 55 56 57 58 59 60 61 62 63 64 66 67 69 70 71 81 97 98"},F:{"78":0.03679,"79":0.23122,"80":0.07883,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00498,"15":6.07354,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.10712,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.00249,"9.3":0.04982,"10.0-10.2":0.00498,"10.3":0.24165,"11.0-11.2":0.01246,"11.3-11.4":0.05979,"12.0-12.1":0.01495,"12.2-12.5":0.29645,"13.0-13.1":0.0274,"13.2":0.00747,"13.3":0.12456,"13.4-13.7":0.34379,"14.0-14.4":1.63672,"14.5-14.8":15.88885},B:{"12":0.00526,"13":0.01051,"16":0.02102,"18":0.04204,"81":0.00526,"84":0.01577,"85":0.01577,"86":0.01051,"87":0.01051,"89":0.01577,"90":0.01051,"91":0.03679,"92":0.06306,"93":0.35734,"94":9.459,"95":2.70633,_:"14 15 17 79 80 83 88"},E:{"4":0,"11":0.00526,"12":0.02102,"13":0.02628,"14":0.6779,"15":1.36105,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1 9.1 10.1","11.1":0.0473,"12.1":0.07357,"13.1":0.38887,"14.1":5.77525},P:{"4":0.15915,"5.0-5.4":0.01061,"6.2-6.4":0.03169,"7.2-7.4":0.13793,"8.2":0.12147,"9.2":0.01103,"10.1":0.02061,"11.1-11.2":0.13793,"12.0":0.02207,"13.0":0.05305,"14.0":0.35014,"15.0":3.91516},I:{"0":0,"3":0,"4":0.01241,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.01241,"4.4":0,"4.4.3-4.4.4":0.05585},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.00526,"11":0.52025,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.63109},Q:{"10.4":0},O:{"0":0},H:{"0":0.08985},L:{"0":17.79724},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js
new file mode 100644
index 0000000000..a554467dcb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VN.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00512,"50":0.02558,"51":0.01535,"52":0.11765,"53":0.01535,"54":0.02046,"55":0.02558,"56":0.03069,"57":0.02046,"58":0.01535,"59":0.02558,"60":0.02046,"61":0.02046,"62":0.01023,"63":0.02046,"64":0.00512,"65":0.01023,"66":0.01023,"67":0.01023,"68":0.02046,"70":0.00512,"72":0.00512,"73":0.00512,"74":0.01023,"75":0.00512,"76":0.00512,"77":0.01023,"78":0.04092,"79":0.03581,"80":0.03069,"81":0.03069,"82":0.02558,"83":0.02558,"84":0.01535,"88":0.01535,"89":0.01023,"90":0.01023,"91":0.02046,"92":0.29156,"93":0.62915,"94":0.01023,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 69 71 85 86 87 95 3.5 3.6"},D:{"33":0.01535,"34":0.00512,"35":0.00512,"36":0.01023,"37":0.01023,"38":0.02558,"41":0.01535,"42":0.00512,"43":0.00512,"44":0.00512,"45":0.00512,"46":0.01023,"47":0.01535,"48":0.02046,"49":0.53196,"50":0.00512,"51":0.00512,"53":0.01535,"54":0.01023,"55":0.01023,"56":0.02558,"57":0.02046,"58":0.01535,"59":0.00512,"60":0.01535,"61":0.54219,"62":0.01023,"63":0.02046,"64":0.01535,"65":0.02558,"66":0.01535,"67":0.01535,"68":0.01535,"69":0.01535,"70":0.03069,"71":0.01023,"72":0.01535,"73":0.01535,"74":0.02558,"75":0.03069,"76":0.08696,"77":0.03069,"78":0.03069,"79":0.09719,"80":0.09207,"81":0.0665,"83":0.13811,"84":0.24041,"85":0.21483,"86":0.28133,"87":0.98208,"88":0.08184,"89":0.0665,"90":0.1023,"91":0.11765,"92":1.15599,"93":1.20203,"94":21.10449,"95":5.89248,"96":0.02558,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 39 40 52 97 98"},F:{"36":0.01023,"40":0.00512,"43":0.01023,"46":0.02046,"48":0.00512,"49":0.00512,"52":0.00512,"53":0.01023,"54":0.01535,"55":0.01535,"56":0.01023,"68":0.02046,"69":0.01023,"70":0.01535,"71":0.01535,"72":0.01023,"78":0.03069,"79":0.47058,"80":0.25064,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 41 42 44 45 47 50 51 57 58 60 62 63 64 65 66 67 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.01535},G:{"8":0.00268,"15":1.801,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00268,"5.0-5.1":0.00937,"6.0-6.1":0.01338,"7.0-7.1":0.03077,"8.1-8.4":0.03345,"9.0-9.2":0.02676,"9.3":0.15789,"10.0-10.2":0.05218,"10.3":0.2074,"11.0-11.2":0.10035,"11.3-11.4":0.15387,"12.0-12.1":0.12979,"12.2-12.5":1.64847,"13.0-13.1":0.10169,"13.2":0.04148,"13.3":0.24219,"13.4-13.7":0.79212,"14.0-14.4":1.74614,"14.5-14.8":6.07872},B:{"12":0.02558,"13":0.01535,"14":0.02046,"15":0.02046,"16":0.03581,"17":0.02558,"18":0.09207,"79":0.01023,"80":0.01535,"81":0.02046,"83":0.02046,"84":0.05115,"85":0.02558,"86":0.03069,"87":0.02046,"89":0.01535,"90":0.01023,"91":0.01023,"92":0.02558,"93":0.05115,"94":1.77491,"95":0.60357,_:"88"},E:{"4":0,"10":0.01023,"11":0.01535,"12":0.02558,"13":0.08696,"14":0.18926,"15":0.35805,_:"0 5 6 7 8 9 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01023,"11.1":0.03069,"12.1":0.04092,"13.1":0.17903,"14.1":0.65984},P:{"4":0.34661,"5.0-5.4":0.0105,"6.2-6.4":0.01049,"7.2-7.4":0.08403,"8.2":0.01079,"9.2":0.04201,"10.1":0.04201,"11.1-11.2":0.16805,"12.0":0.06302,"13.0":0.18906,"14.0":0.17856,"15.0":1.59652},I:{"0":0,"3":0,"4":0.00067,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00135,"4.2-4.3":0.00404,"4.4":0,"4.4.3-4.4.4":0.03301},A:{"8":0.03494,"9":0.02912,"10":0.01165,"11":0.30281,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00977},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.08791},Q:{"10.4":0.00977},O:{"0":1.06471},H:{"0":0.28206},L:{"0":33.4651},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js
new file mode 100644
index 0000000000..88cf58f5e2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/VU.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00844,"38":0.08022,"45":0.01267,"52":0.01689,"57":0.00422,"68":0.02533,"72":0.00844,"78":0.00422,"82":0.06333,"84":0.00422,"88":0.01267,"89":0.01267,"90":0.00422,"91":0.01267,"92":0.69663,"93":1.6888,"94":0.00844,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 46 47 48 49 50 51 53 54 55 56 58 59 60 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 80 81 83 85 86 87 95 3.5 3.6"},D:{"49":0.01689,"56":0.00844,"59":0.00844,"61":0.02533,"63":0.00422,"68":0.00844,"69":0.13088,"72":0.02533,"73":0.00844,"74":0.00422,"76":0.02111,"77":0.05911,"79":0.038,"81":0.1351,"83":0.03378,"84":0.14355,"86":0.01689,"87":0.10555,"88":0.16888,"90":0.05489,"91":0.10133,"92":0.16466,"93":0.82329,"94":16.23781,"95":3.89268,"96":0.05489,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 57 58 60 62 64 65 66 67 70 71 75 78 80 85 89 97 98"},F:{"78":0.00844,"79":0.20266,"80":0.08866,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.20296,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0.03601,"9.0-9.2":0,"9.3":0.28047,"10.0-10.2":0.00284,"10.3":0.018,"11.0-11.2":0.018,"11.3-11.4":0.0235,"12.0-12.1":0.01099,"12.2-12.5":0.11181,"13.0-13.1":0.0055,"13.2":0.00133,"13.3":0.01099,"13.4-13.7":0.04397,"14.0-14.4":0.21281,"14.5-14.8":0.91569},B:{"12":0.00844,"13":0.038,"15":0.02955,"16":0.02111,"17":0.17732,"18":0.27865,"84":0.01267,"85":0.02533,"90":0.00844,"91":0.01689,"92":0.10133,"93":0.15199,"94":5.71659,"95":2.17011,_:"14 79 80 81 83 86 87 88 89"},E:{"4":0,"10":0.00844,"13":0.038,"14":0.02111,"15":0.04644,_:"0 5 6 7 8 9 11 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.01267,"11.1":0.00422,"12.1":0.01689,"13.1":1.16105,"14.1":0.63752},P:{"4":0.1546,"5.0-5.4":0.03182,"6.2-6.4":0.03169,"7.2-7.4":0.73179,"8.2":0.12147,"9.2":0.2989,"10.1":0.02061,"11.1-11.2":0.93793,"12.0":0.01061,"13.0":0.1546,"14.0":0.2989,"15.0":0.64933},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0.10976},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"10":0.01833,"11":0.21388,_:"6 7 8 9 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.10976},Q:{"10.4":0.05777},O:{"0":0.90121},H:{"0":0.09845},L:{"0":57.21212},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js
new file mode 100644
index 0000000000..7739b23b1e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WF.js
@@ -0,0 +1 @@
+module.exports={C:{"60":0.24897,"68":0.12159,"78":0.2895,"89":0.04053,"92":5.34417,"93":8.76027,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 72 73 74 75 76 77 79 80 81 82 83 84 85 86 87 88 90 91 94 95 3.5 3.6"},D:{"49":0.04053,"78":0.2895,"85":0.04053,"90":0.04053,"91":0.41109,"93":1.2738,"94":25.04175,"95":5.22258,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 84 86 87 88 89 92 96 97 98"},F:{"79":4.23828,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":4.80981,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.30586,"10.0-10.2":0,"10.3":0,"11.0-11.2":0.07672,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0.11457,"13.0-13.1":0,"13.2":0,"13.3":0.03785,"13.4-13.7":0.22811,"14.0-14.4":0.72526,"14.5-14.8":3.93213},B:{"91":0.2895,"93":0.08106,"94":1.35486,"95":0.53268,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 92"},E:{"4":0,"14":0.49215,"15":0.08106,_:"0 5 6 7 8 9 10 11 12 13 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1","13.1":0.12159,"14.1":1.52277},P:{"4":0.15915,"5.0-5.4":0.01061,"6.2-6.4":0.03169,"7.2-7.4":0.13793,"8.2":0.12147,"9.2":0.01103,"10.1":0.02061,"11.1-11.2":0.13793,"12.0":0.02207,"13.0":0.1243,"14.0":0.21752,"15.0":3.05565},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.34943},Q:{"10.4":0},O:{"0":0},H:{"0":0},L:{"0":28.74233},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js
new file mode 100644
index 0000000000..4069190fc6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/WS.js
@@ -0,0 +1 @@
+module.exports={C:{"43":0.00421,"86":0.0337,"88":0.10954,"92":0.3876,"93":1.0364,"94":0.02528,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 87 89 90 91 95 3.5 3.6"},D:{"11":0.00843,"43":0.07162,"49":0.01685,"63":0.00843,"64":0.30334,"65":0.00843,"66":0.00843,"68":0.01264,"70":0.00843,"79":0.02949,"80":0.01685,"81":0.04634,"84":0.02528,"85":0.00843,"86":0.00421,"87":0.01264,"90":0.08005,"91":0.05477,"92":0.18537,"93":3.25665,"94":14.58541,"95":3.22295,"96":0.18959,"97":0.01685,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 44 45 46 47 48 50 51 52 53 54 55 56 57 58 59 60 61 62 67 69 71 72 73 74 75 76 77 78 83 88 89 98"},F:{"77":0.05477,"79":0.10954,"80":0.03792,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 78 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.72176,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0015,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0.003,"9.3":0.02252,"10.0-10.2":0.0015,"10.3":0.00551,"11.0-11.2":0.14115,"11.3-11.4":0.01301,"12.0-12.1":0.0986,"12.2-12.5":0.69673,"13.0-13.1":0.11162,"13.2":0.17769,"13.3":0.20321,"13.4-13.7":0.37539,"14.0-14.4":1.0491,"14.5-14.8":1.38345},B:{"12":0.01264,"13":0.02528,"15":0.03792,"16":0.0337,"17":0.17695,"18":0.4213,"84":0.01685,"85":0.00843,"86":0.0337,"87":0.01264,"88":0.00421,"89":0.0969,"90":0.00421,"91":0.04634,"92":0.07162,"93":0.12639,"94":2.3972,"95":0.73306,_:"14 79 80 81 83"},E:{"4":0,"11":0.20222,"13":0.02107,"14":0.17273,"15":0.1938,_:"0 5 6 7 8 9 10 12 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00843,"11.1":0.00421,"12.1":0.00421,"13.1":0.11375,"14.1":0.83417},P:{"4":0.53294,"5.0-5.4":0.01025,"6.2-6.4":0.05124,"7.2-7.4":0.77892,"8.2":0.05124,"9.2":1.39385,"10.1":0.041,"11.1-11.2":0.4202,"12.0":0.10249,"13.0":0.25622,"14.0":0.76867,"15.0":1.32211},I:{"0":0,"3":0,"4":0.00208,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00521,"4.4":0,"4.4.3-4.4.4":0.04479},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.11375,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.06944},Q:{"10.4":0.06366},O:{"0":1.96179},H:{"0":0.52048},L:{"0":56.55709},S:{"2.5":0.01157}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js
new file mode 100644
index 0000000000..afd5af9a6a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YE.js
@@ -0,0 +1 @@
+module.exports={C:{"3":0.013,"30":0.00217,"43":0.00217,"44":0.00217,"47":0.0065,"49":0.0065,"50":0.00433,"52":0.04551,"56":0.00433,"57":0.00867,"59":0.02817,"60":0.00217,"61":0.00433,"62":0.00433,"63":0.00433,"64":0.00217,"66":0.00217,"67":0.00433,"68":0.17986,"69":0.00433,"72":0.026,"78":0.04117,"80":0.00433,"81":0.0065,"83":0.0065,"84":0.0065,"85":0.00433,"86":0.00217,"87":0.00217,"88":0.01517,"89":0.01734,"90":0.00867,"91":0.026,"92":0.4269,"93":0.77145,"94":0.01084,_:"2 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 31 32 33 34 35 36 37 38 39 40 41 42 45 46 48 51 53 54 55 58 65 70 71 73 74 75 76 77 79 82 95 3.5 3.6"},D:{"33":0.00433,"35":0.00433,"37":0.02167,"40":0.00867,"43":0.00433,"44":0.00217,"48":0.00217,"49":0.03034,"50":0.00433,"51":0.00867,"52":0.00217,"53":0.00433,"55":0.00433,"56":0.0065,"57":0.0065,"58":0.00433,"60":0.00217,"62":0.01084,"63":0.01734,"64":0.00867,"65":0.04117,"66":0.013,"67":0.00867,"68":0.01084,"69":0.0065,"70":0.02817,"71":0.013,"72":0.00867,"73":0.01517,"74":0.03034,"75":0.01084,"76":0.01734,"77":0.0065,"78":0.03901,"79":0.06284,"80":0.03684,"81":0.02167,"83":0.03684,"84":0.02384,"85":0.02167,"86":0.07151,"87":0.07151,"88":0.04334,"89":0.07801,"90":0.04767,"91":0.16253,"92":0.33155,"93":0.47891,"94":6.6982,"95":1.50823,"97":0.00217,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 34 36 38 39 41 42 45 46 47 54 59 61 96 98"},F:{"38":0.00217,"65":0.03467,"68":0.0065,"78":0.00217,"79":0.24921,"80":0.03467,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 67 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.11131,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.02069,"5.0-5.1":0.00013,"6.0-6.1":0.00181,"7.0-7.1":0.0181,"8.1-8.4":0.00181,"9.0-9.2":0.00155,"9.3":0.01164,"10.0-10.2":0.00685,"10.3":0.01965,"11.0-11.2":0.00995,"11.3-11.4":0.0181,"12.0-12.1":0.02974,"12.2-12.5":0.20233,"13.0-13.1":0.0137,"13.2":0.00504,"13.3":0.0331,"13.4-13.7":0.06244,"14.0-14.4":0.29076,"14.5-14.8":0.43375},B:{"12":0.00433,"13":0.00433,"16":0.00433,"17":0.00433,"18":0.01517,"84":0.013,"85":0.00433,"89":0.01734,"90":0.00433,"91":0.0065,"92":0.05418,"93":0.03684,"94":0.6241,"95":0.18636,_:"14 15 79 80 81 83 86 87 88"},E:{"4":0,"13":0.00217,"14":0.00867,"15":0.01517,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1 11.1 12.1","5.1":0.04551,"13.1":0.01084,"14.1":0.03467},P:{"4":0.43749,"5.0-5.4":0.07122,"6.2-6.4":0.02035,"7.2-7.4":0.14244,"8.2":0.12147,"9.2":0.17296,"10.1":0.0407,"11.1-11.2":0.22383,"12.0":0.06104,"13.0":0.36627,"14.0":0.34592,"15.0":1.76013},I:{"0":0,"3":0,"4":0.00271,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01829,"4.2-4.3":0.021,"4.4":0,"4.4.3-4.4.4":0.33398},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.04984,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.25849},Q:{"10.4":0},O:{"0":4.44131},H:{"0":7.35645},L:{"0":68.44333},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js
new file mode 100644
index 0000000000..08e16ac6c5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/YT.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.01081,"60":0.07566,"68":0.01081,"72":0.02162,"78":1.0862,"80":0.0054,"81":0.01081,"83":0.01621,"84":0.0054,"85":0.0054,"86":0.0054,"87":0.01081,"88":0.03783,"89":0.19995,"90":0.10808,"91":0.14591,"92":2.59932,"93":5.8093,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 69 70 71 73 74 75 76 77 79 82 94 95 3.5 3.6"},D:{"50":0.01081,"62":0.01621,"63":0.04323,"67":0.02702,"69":0.02702,"70":0.04323,"75":0.0054,"76":0.05404,"77":0.02162,"79":0.0054,"81":0.03242,"84":0.02702,"85":0.02702,"86":0.01081,"87":0.04323,"88":0.03242,"89":0.1297,"90":0.05944,"91":0.8106,"92":0.38909,"93":2.10756,"94":17.72512,"95":5.9498,"96":0.01621,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 51 52 53 54 55 56 57 58 59 60 61 64 65 66 68 71 72 73 74 78 80 83 97 98"},F:{"77":0.01621,"78":0.01621,"79":0.15672,"80":0.1405,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.9885,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0.06351,"8.1-8.4":0,"9.0-9.2":0,"9.3":0.0056,"10.0-10.2":0,"10.3":0.0056,"11.0-11.2":0.0551,"11.3-11.4":0.04109,"12.0-12.1":0.0028,"12.2-12.5":0.18211,"13.0-13.1":0.00841,"13.2":0.01401,"13.3":0.0467,"13.4-13.7":0.14289,"14.0-14.4":0.86667,"14.5-14.8":4.91609},B:{"14":0.0054,"15":0.02702,"16":0.01081,"17":0.1351,"18":0.03783,"83":0.0054,"84":0.01621,"87":0.01081,"88":0.01081,"89":0.0054,"90":0.01081,"91":0.03242,"92":0.1351,"93":0.22697,"94":6.17677,"95":1.31317,_:"12 13 79 80 81 85 86"},E:{"4":0,"8":0.0054,"10":0.0054,"12":0.01621,"13":0.01621,"14":0.42151,"15":1.13484,_:"0 5 6 7 9 11 3.1 3.2 5.1 6.1 7.1","9.1":0.01081,"10.1":0.02702,"11.1":0.01621,"12.1":0.31343,"13.1":0.22697,"14.1":2.33993},P:{"4":0.10327,"5.0-5.4":0.02065,"6.2-6.4":0.02065,"7.2-7.4":0.1549,"8.2":0.0103,"9.2":0.05148,"10.1":0.02059,"11.1-11.2":0.07229,"12.0":0.10296,"13.0":0.2368,"14.0":0.07229,"15.0":4.55413},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0.00018,"4.4":0,"4.4.3-4.4.4":0.00441},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.28101,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"11":0.24045,_:"10"},R:{_:"0"},M:{"0":0.18384},Q:{"10.4":0},O:{"0":0.05515},H:{"0":1.06604},L:{"0":32.6561},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js
new file mode 100644
index 0000000000..66b5955926
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZA.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.01111,"52":0.03333,"60":0.00889,"78":0.02,"82":0.01778,"84":0.12665,"87":0.00222,"88":0.00667,"89":0.00889,"90":0.00889,"91":0.01111,"92":0.25775,"93":0.62883,"94":0.01333,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 85 86 95 3.5 3.6"},D:{"11":0.00667,"28":0.01778,"34":0.00222,"38":0.00444,"40":0.00444,"42":0.00222,"43":0.00222,"44":0.00222,"49":0.05999,"50":0.00444,"53":0.00222,"55":0.00222,"56":0.00444,"57":0.00222,"58":0.01111,"63":0.00444,"64":0.00889,"65":0.00667,"66":0.00444,"67":0.01111,"68":0.00222,"69":0.00889,"70":0.02222,"71":0.00667,"72":0.01111,"73":0.00667,"74":0.01111,"75":0.00667,"76":0.01111,"77":0.00444,"78":0.00889,"79":0.07999,"80":0.02,"81":0.02222,"83":0.01555,"84":0.01333,"85":0.00667,"86":0.02,"87":0.41107,"88":0.02889,"89":0.02444,"90":0.03333,"91":0.10221,"92":0.13999,"93":0.40885,"94":8.57248,"95":2.31088,"96":0.00889,"97":0.00222,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 35 36 37 39 41 45 46 47 48 51 52 54 59 60 61 62 98"},F:{"28":0.00889,"36":0.00222,"62":0.00222,"65":0.00444,"77":0.00222,"78":0.01555,"79":0.25997,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 63 64 66 67 68 69 70 71 72 73 74 75 76 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":2.34012,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00415,"6.0-6.1":0.00104,"7.0-7.1":0.01246,"8.1-8.4":0.00415,"9.0-9.2":0.00727,"9.3":0.11628,"10.0-10.2":0.00831,"10.3":0.08202,"11.0-11.2":0.02803,"11.3-11.4":0.03322,"12.0-12.1":0.0218,"12.2-12.5":0.70598,"13.0-13.1":0.04672,"13.2":0.01246,"13.3":0.07683,"13.4-13.7":0.326,"14.0-14.4":0.81084,"14.5-14.8":5.73818},B:{"12":0.01111,"13":0.00889,"14":0.00667,"15":0.01111,"16":0.01333,"17":0.02,"18":0.04888,"84":0.01111,"85":0.00444,"88":0.00222,"89":0.01333,"90":0.00444,"91":0.01333,"92":0.03555,"93":0.08221,"94":1.57984,_:"79 80 81 83 86 87 95"},E:{"4":0,"12":0.00222,"13":0.05777,"14":0.12443,"15":0.35774,_:"0 5 6 7 8 9 10 11 3.1 3.2 5.1 6.1 7.1 9.1","10.1":0.00444,"11.1":0.01778,"12.1":0.03111,"13.1":0.12888,"14.1":0.60661},P:{"4":0.37357,_:"5.0-5.4","6.2-6.4":0.02019,"7.2-7.4":0.5654,"8.2":0.0101,"9.2":0.08077,"10.1":0.05048,"11.1-11.2":0.31299,"12.0":0.20193,"13.0":0.44424,"14.0":0.68655,"15.0":6.0982},I:{"0":0,"3":0,"4":0.00032,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00159,"4.2-4.3":0.00351,"4.4":0,"4.4.3-4.4.4":0.03347},A:{"8":0.00233,"9":0.00233,"11":0.42641,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},N:{_:"10 11"},J:{"7":0,"10":0.00778},Q:{"10.4":0.01556},O:{"0":0.59891},H:{"0":3.76285},L:{"0":57.06115},S:{"2.5":0},R:{_:"0"},M:{"0":0.46668}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js
new file mode 100644
index 0000000000..2a6b68628f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZM.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00562,"37":0.01124,"41":0.00281,"43":0.00562,"45":0.00281,"47":0.01685,"48":0.00281,"50":0.00562,"52":0.01966,"71":0.00281,"72":0.00562,"78":0.02247,"79":0.00843,"83":0.00281,"85":0.00562,"86":0.00281,"88":0.01405,"89":0.01124,"90":0.01124,"91":0.01405,"92":0.39326,"93":0.9045,"94":0.07303,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 38 39 40 42 44 46 49 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 73 74 75 76 77 80 81 82 84 87 95 3.5 3.6"},D:{"37":0.00281,"39":0.00843,"40":0.00281,"42":0.00562,"43":0.00843,"49":0.01405,"50":0.00843,"51":0.00562,"55":0.00281,"57":0.02809,"58":0.00562,"60":0.00562,"63":0.01124,"64":0.00562,"65":0.00281,"67":0.00562,"68":0.02247,"69":0.00562,"70":0.00562,"71":0.01405,"73":0.01685,"74":0.01405,"75":0.01685,"76":0.00843,"77":0.01405,"78":0.01405,"79":0.03652,"80":0.02247,"81":0.06742,"83":0.01405,"84":0.01124,"85":0.01124,"86":0.07584,"87":0.10393,"88":0.04775,"89":0.04214,"90":0.04494,"91":0.11798,"92":0.36517,"93":0.7809,"94":6.66576,"95":1.88203,"96":0.02247,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 41 44 45 46 47 48 52 53 54 56 59 61 62 66 72 97 98"},F:{"36":0.00281,"42":0.00562,"60":0.00281,"62":0.00562,"63":0.00562,"64":0.00562,"65":0.03652,"73":0.00562,"74":0.00281,"75":0.00843,"76":0.01124,"77":0.02247,"78":0.04775,"79":0.94102,"80":0.56461,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 66 67 68 69 70 71 72 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":0.68363,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00239,"6.0-6.1":0,"7.0-7.1":0.0295,"8.1-8.4":0.00319,"9.0-9.2":0.0012,"9.3":0.11719,"10.0-10.2":0.00598,"10.3":0.11122,"11.0-11.2":0.07414,"11.3-11.4":0.0586,"12.0-12.1":0.02113,"12.2-12.5":0.96665,"13.0-13.1":0.01834,"13.2":0.00518,"13.3":0.04544,"13.4-13.7":0.10962,"14.0-14.4":0.57561,"14.5-14.8":1.1548},B:{"12":0.05337,"13":0.02528,"14":0.02528,"15":0.02528,"16":0.0309,"17":0.03933,"18":0.12079,"80":0.00562,"83":0.00281,"84":0.01966,"85":0.01685,"86":0.00562,"89":0.03933,"90":0.01685,"91":0.02809,"92":0.05618,"93":0.07865,"94":1.55619,"95":0.46629,_:"79 81 87 88"},E:{"4":0,"13":0.00843,"14":0.03652,"15":0.05899,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.02247,"11.1":0.02247,"12.1":0.00843,"13.1":0.06461,"14.1":0.17135},P:{"4":0.4733,"5.0-5.4":0.07122,"6.2-6.4":0.01029,"7.2-7.4":0.11318,"8.2":0.01029,"9.2":0.07202,"10.1":0.01029,"11.1-11.2":0.15434,"12.0":0.02058,"13.0":0.1852,"14.0":0.63792,"15.0":0.91573},I:{"0":0,"3":0,"4":0.00098,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00196,"4.2-4.3":0.01092,"4.4":0,"4.4.3-4.4.4":0.09402},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00306,"9":0.00611,"10":0.00611,"11":0.15888,_:"6 7 5.5"},J:{"7":0,"10":0.02157},N:{"11":0.01381,_:"10"},R:{_:"0"},M:{"0":0.12225},Q:{"10.4":0.07191},O:{"0":2.26517},H:{"0":19.25295},L:{"0":52.07379},S:{"2.5":0.02157}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js
new file mode 100644
index 0000000000..3e656a498d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/ZW.js
@@ -0,0 +1 @@
+module.exports={C:{"39":0.00406,"40":0.02029,"41":0.00406,"43":0.00406,"45":0.00812,"47":0.01217,"48":0.00812,"50":0.00406,"52":0.03652,"56":0.01217,"57":0.00812,"58":0.00406,"59":0.00406,"60":0.00812,"64":0.00812,"65":0.00406,"68":0.00406,"70":0.00406,"72":0.01623,"78":0.04058,"82":0.00406,"83":0.00406,"84":0.01217,"85":0.00406,"87":0.01623,"88":0.06087,"89":0.0771,"90":0.03652,"91":0.03652,"92":0.87247,"93":1.70842,"94":0.12986,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 42 44 46 49 51 53 54 55 61 62 63 66 67 69 71 73 74 75 76 77 79 80 81 86 95 3.5 3.6"},D:{"37":0.01217,"40":0.00812,"49":0.02435,"53":0.00812,"56":0.00406,"57":0.01217,"58":0.02029,"60":0.00812,"62":0.00812,"63":0.04464,"64":0.00406,"65":0.00406,"66":0.01623,"67":0.01623,"68":0.00812,"69":0.03246,"70":0.02435,"71":0.01217,"72":0.00812,"73":0.01217,"74":0.04058,"75":0.03246,"76":0.02029,"77":0.01623,"78":0.02435,"79":0.06899,"80":0.04058,"81":0.03246,"83":0.03652,"84":0.02841,"85":0.04058,"86":0.06899,"87":0.07304,"88":0.04058,"89":0.06493,"90":0.13391,"91":0.21507,"92":0.45044,"93":0.78725,"94":14.36126,"95":4.01336,"96":0.02841,"97":0.00812,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 41 42 43 44 45 46 47 48 50 51 52 54 55 59 61 98"},F:{"34":0.00406,"36":0.00812,"37":0.00812,"42":0.00812,"65":0.02029,"67":0.00812,"74":0.00406,"76":0.00406,"77":0.02841,"78":0.05681,"79":1.08754,"80":0.52754,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 38 39 40 41 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 66 68 69 70 71 72 73 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00112,"15":1.31562,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00112,"5.0-5.1":0.00223,"6.0-6.1":0.00223,"7.0-7.1":0.01116,"8.1-8.4":0.00112,"9.0-9.2":0.00167,"9.3":0.10494,"10.0-10.2":0.00167,"10.3":0.05079,"11.0-11.2":0.2015,"11.3-11.4":0.02233,"12.0-12.1":0.02958,"12.2-12.5":0.63911,"13.0-13.1":0.01507,"13.2":0.0067,"13.3":0.07089,"13.4-13.7":0.15796,"14.0-14.4":0.64525,"14.5-14.8":2.29746},B:{"12":0.0771,"13":0.03652,"14":0.05275,"15":0.05681,"16":0.05275,"17":0.04464,"18":0.23536,"80":0.01623,"83":0.00812,"84":0.02841,"85":0.02435,"86":0.00812,"87":0.00812,"88":0.00406,"89":0.06493,"90":0.02029,"91":0.08116,"92":0.10145,"93":0.18667,"94":2.73915,"95":0.71827,_:"79 81"},E:{"4":0,"11":0.00812,"12":0.00812,"13":0.03652,"14":0.18261,"15":0.25971,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.01217,"11.1":0.00812,"12.1":0.02435,"13.1":0.10957,"14.1":0.57218},P:{"4":0.34186,"5.0-5.4":0.07122,"6.2-6.4":0.01029,"7.2-7.4":0.21754,"8.2":0.01029,"9.2":0.03108,"10.1":0.01029,"11.1-11.2":0.09323,"12.0":0.08287,"13.0":0.14503,"14.0":0.31078,"15.0":1.52281},I:{"0":0,"3":0,"4":0.00174,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00261,"4.2-4.3":0.01438,"4.4":0,"4.4.3-4.4.4":0.17735},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.00465,"9":0.00465,"10":0.00929,"11":0.33446,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"10":0.05942,"11":0.01381},R:{_:"0"},M:{"0":0.26145},Q:{"10.4":0.05348},O:{"0":1.76477},H:{"0":10.06402},L:{"0":45.83175},S:{"2.5":0.00594}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js
new file mode 100644
index 0000000000..fbe0d23f3b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-af.js
@@ -0,0 +1 @@
+module.exports={C:{"2":0.06951,"15":0.07253,"18":0.06951,"21":0.06951,"23":0.06951,"25":0.13599,"30":0.06951,"34":0.00604,"43":0.00907,"47":0.00604,"48":0.00302,"51":0.07253,"52":0.06346,"55":0.00302,"56":0.00302,"57":0.00302,"60":0.00604,"65":0.00302,"68":0.00907,"72":0.00907,"77":0.00302,"78":0.04231,"80":0.00302,"81":0.00302,"82":0.00604,"83":0.00302,"84":0.04835,"85":0.00302,"86":0.00302,"87":0.00604,"88":0.01813,"89":0.0272,"90":0.00907,"91":0.02418,"92":1.1816,"93":3.83492,"94":0.04231,_:"3 4 5 6 7 8 9 10 11 12 13 14 16 17 19 20 22 24 26 27 28 29 31 32 33 35 36 37 38 39 40 41 42 44 45 46 49 50 53 54 58 59 61 62 63 64 66 67 69 70 71 73 74 75 76 79 95 3.5 3.6"},D:{"11":0.00302,"19":0.06951,"24":0.2055,"28":0.00604,"30":0.06951,"33":0.07555,"34":0.00302,"35":0.13901,"38":0.00604,"39":0.00604,"40":0.01209,"43":0.0544,"47":0.00604,"49":0.08764,"50":0.00907,"53":0.00604,"54":0.07253,"55":0.07555,"56":0.3566,"57":0.00604,"58":0.00907,"60":0.00604,"61":0.01511,"62":0.00604,"63":0.01813,"64":0.00907,"65":0.00907,"66":0.00604,"67":0.01209,"68":0.00604,"69":0.01511,"70":0.01813,"71":0.00907,"72":0.01209,"73":0.00907,"74":0.01511,"75":0.01511,"76":0.01209,"77":0.01209,"78":0.01209,"79":0.07555,"80":0.0272,"81":0.03022,"83":0.0272,"84":0.0272,"85":0.02418,"86":0.0544,"87":0.30522,"88":0.04231,"89":0.04231,"90":0.05137,"91":0.13297,"92":0.26594,"93":0.51676,"94":9.96656,"95":2.58985,"96":0.01511,"97":0.00604,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 20 21 22 23 25 26 27 29 31 32 36 37 41 42 44 45 46 48 51 52 59 98"},F:{"28":0.00604,"36":0.00302,"43":0.06648,"64":0.00604,"65":0.00604,"70":0.00302,"71":0.00604,"72":0.00604,"73":0.00604,"75":0.00302,"76":0.00302,"77":0.01209,"78":0.03022,"79":0.46841,"80":0.21758,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 40 41 42 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 66 67 68 69 74 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0.06951},G:{"8":0.0009,"15":1.34652,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00633,"6.0-6.1":1.42796,"7.0-7.1":0.02715,"8.1-8.4":0.00452,"9.0-9.2":0.00814,"9.3":0.09864,"10.0-10.2":0.21808,"10.3":0.13755,"11.0-11.2":0.10316,"11.3-11.4":0.05701,"12.0-12.1":0.0552,"12.2-12.5":1.10671,"13.0-13.1":0.03891,"13.2":0.01629,"13.3":0.10135,"13.4-13.7":0.30134,"14.0-14.4":1.1601,"14.5-14.8":2.83329},B:{"12":0.01511,"13":0.00907,"14":0.00907,"15":0.00907,"16":0.01209,"17":0.01511,"18":0.05137,"84":0.00907,"85":0.00604,"88":0.00604,"89":0.01511,"90":0.00604,"91":0.01209,"92":0.03022,"93":0.06346,"94":1.20578,"95":0.34753,_:"79 80 81 83 86 87"},E:{"4":0,"5":0.06648,"12":0.00302,"13":0.03324,"14":0.08462,"15":0.17528,_:"0 6 7 8 9 10 11 3.1 3.2 6.1 7.1 9.1","5.1":0.00907,"10.1":0.00604,"11.1":0.01209,"12.1":0.0272,"13.1":0.07253,"14.1":0.27802},P:{"4":0.30804,"5.0-5.4":0.0105,"6.2-6.4":0.01027,"7.2-7.4":0.2567,"8.2":0.01079,"9.2":0.06161,"10.1":0.02054,"11.1-11.2":0.17456,"12.0":0.09241,"13.0":0.2259,"14.0":0.33885,"15.0":2.31031},I:{"0":0,"3":0,"4":0.00217,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00652,"4.2-4.3":0.05794,"4.4":0,"4.4.3-4.4.4":0.27524},A:{"8":0.15714,"9":0.1506,"10":0.15387,"11":0.20625,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0.00698},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.23722},Q:{"10.4":0.01395},O:{"0":0.66979},H:{"0":9.20128},L:{"0":49.50271},S:{"2.5":0.02093}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js
new file mode 100644
index 0000000000..8ebcf5d63d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-an.js
@@ -0,0 +1 @@
+module.exports={C:{"88":0.08757,"93":0.04464,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 89 90 91 92 94 95 3.5 3.6"},D:{"37":0.04464,"67":0.04464,"79":0.04464,"86":0.04464,"90":0.04464,"93":0.04464,"94":1.01303,"95":0.04464,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 68 69 70 71 72 73 74 75 76 77 78 80 81 83 84 85 87 88 89 91 92 96 97 98"},F:{"79":0.08757,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.69182,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0,"6.0-6.1":0,"7.0-7.1":0,"8.1-8.4":0,"9.0-9.2":0,"9.3":0,"10.0-10.2":0,"10.3":0.79658,"11.0-11.2":0,"11.3-11.4":0,"12.0-12.1":0,"12.2-12.5":0,"13.0-13.1":0,"13.2":0,"13.3":0,"13.4-13.7":0,"14.0-14.4":0.02635,"14.5-14.8":7.46391},B:{"95":0.04464,_:"12 13 14 15 16 17 18 79 80 81 83 84 85 86 87 88 89 90 91 92 93 94"},E:{"4":0,"15":0.66105,_:"0 5 6 7 8 9 10 11 12 13 14 3.1 3.2 5.1 6.1 7.1 9.1 10.1 11.1 12.1 13.1 14.1"},P:{"4":0.04901,"5.0-5.4":0.07122,"6.2-6.4":0.01029,"7.2-7.4":0.07398,"8.2":0.01029,"9.2":0.04901,"10.1":0.01029,"11.1-11.2":0.18623,"12.0":0.04227,"13.0":0.04901,"14.0":0.09802,"15.0":0.85275},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0,"4.2-4.3":0,"4.4":0,"4.4.3-4.4.4":0},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{_:"6 7 8 9 10 11 5.5"},J:{"7":0,"10":0},N:{"10":0.05942,"11":0.01381},R:{_:"0"},M:{"0":0.8284},Q:{"10.4":0},O:{"0":9.50175},H:{"0":0.82349},L:{"0":64.36775},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js
new file mode 100644
index 0000000000..6f56cf253b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-as.js
@@ -0,0 +1 @@
+module.exports={C:{"4":0.00339,"34":0.00678,"36":0.00678,"43":0.08478,"47":0.00678,"48":0.00339,"50":0.00339,"52":0.05765,"54":0.00339,"56":0.01696,"60":0.00678,"66":0.00339,"68":0.00339,"72":0.00678,"75":0.01017,"78":0.03391,"79":0.00678,"80":0.00678,"81":0.00678,"82":0.00339,"83":0.00339,"84":0.00678,"85":0.00339,"86":0.00339,"87":0.00339,"88":0.01356,"89":0.01696,"90":0.01356,"91":0.02374,"92":0.41031,"93":1.04443,"94":0.04069,_:"2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 37 38 39 40 41 42 44 45 46 49 51 53 55 57 58 59 61 62 63 64 65 67 69 70 71 73 74 76 77 95 3.5 3.6"},D:{"11":0.00339,"22":0.01017,"26":0.00678,"34":0.01696,"35":0.00678,"38":0.0373,"42":0.00678,"43":0.00339,"47":0.01696,"48":0.01017,"49":0.11869,"50":0.00339,"51":0.00339,"53":0.02374,"54":0.00339,"55":0.01356,"56":0.01356,"57":0.01356,"58":0.00678,"59":0.00339,"60":0.00339,"61":0.04747,"62":0.01356,"63":0.01696,"64":0.00678,"65":0.01356,"66":0.01017,"67":0.01017,"68":0.01356,"69":0.09495,"70":0.05426,"71":0.02713,"72":0.05426,"73":0.01696,"74":0.05765,"75":0.04069,"76":0.01696,"77":0.01696,"78":0.04747,"79":0.13903,"80":0.04747,"81":0.0373,"83":0.05765,"84":0.05087,"85":0.04747,"86":0.07799,"87":0.21024,"88":0.05426,"89":0.07121,"90":0.06782,"91":0.13225,"92":0.43066,"93":0.72567,"94":15.9377,"95":4.22858,"96":0.02035,"97":0.00678,_:"4 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 23 24 25 27 28 29 30 31 32 33 36 37 39 40 41 44 45 46 52 98"},F:{"28":0.00339,"36":0.01017,"40":0.00678,"46":0.01356,"78":0.01696,"79":0.29163,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 29 30 31 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 80 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00091,"15":2.0584,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00457,"5.0-5.1":0.00732,"6.0-6.1":0.00732,"7.0-7.1":0.03018,"8.1-8.4":0.0128,"9.0-9.2":0.0256,"9.3":0.08138,"10.0-10.2":0.04389,"10.3":0.11339,"11.0-11.2":0.1079,"11.3-11.4":0.03932,"12.0-12.1":0.05212,"12.2-12.5":0.57061,"13.0-13.1":0.04206,"13.2":0.01829,"13.3":0.09419,"13.4-13.7":0.29994,"14.0-14.4":0.98851,"14.5-14.8":4.54292},B:{"12":0.00678,"13":0.00339,"14":0.00678,"15":0.00339,"16":0.00678,"17":0.01017,"18":0.03391,"84":0.01017,"85":0.00339,"86":0.00678,"87":0.00339,"89":0.01017,"90":0.00339,"91":0.01017,"92":0.02035,"93":0.05087,"94":1.68194,_:"79 80 81 83 88 95"},E:{"4":0,"11":0.00339,"12":0.00678,"13":0.04069,"14":0.18311,"15":0.38997,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1","5.1":0.02035,"10.1":0.00678,"11.1":0.01696,"12.1":0.02713,"13.1":0.12547,"14.1":0.91896},P:{"4":0.37007,_:"5.0-5.4 8.2","6.2-6.4":0.01028,"7.2-7.4":0.11308,"9.2":0.0514,"10.1":0.02056,"11.1-11.2":0.12336,"12.0":0.06168,"13.0":0.18503,"14.0":0.25699,"15.0":1.78867},I:{"0":0,"3":0.0403,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.02303,"4.2-4.3":0.0806,"4.4":0,"4.4.3-4.4.4":0.39148},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.03695,"9":0.03695,"10":0.00924,"11":1.15458,_:"6 7 5.5"},J:{"7":0,"10":0},N:{_:"10 11"},S:{"2.5":0.13881},R:{_:"0"},M:{"0":0.16525},Q:{"10.4":0.38338},O:{"0":2.08215},H:{"0":1.23281},L:{"0":50.95538}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js
new file mode 100644
index 0000000000..bc256d8774
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-eu.js
@@ -0,0 +1 @@
+module.exports={C:{"45":0.00518,"48":0.01036,"52":0.11394,"55":0.00518,"56":0.01036,"59":0.01036,"60":0.01036,"66":0.00518,"68":0.02072,"72":0.01036,"77":0.01554,"78":0.21752,"79":0.02072,"80":0.01036,"81":0.04661,"82":0.01554,"83":0.01036,"84":0.03107,"85":0.01036,"86":0.01554,"87":0.01554,"88":0.04661,"89":0.04661,"90":0.05179,"91":0.09322,"92":1.36726,"93":3.37153,"94":0.01554,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 49 50 51 53 54 57 58 61 62 63 64 65 67 69 70 71 73 74 75 76 95 3.5 3.6"},D:{"22":0.01554,"35":0.00518,"38":0.02072,"40":0.03625,"43":0.01036,"47":0.01554,"48":0.01036,"49":0.26413,"51":0.01036,"52":0.01554,"53":0.00518,"54":0.01036,"56":0.01554,"57":0.00518,"58":0.00518,"59":0.01036,"60":0.02072,"61":0.10876,"62":0.01036,"63":0.01036,"64":0.02072,"65":0.03625,"66":0.03625,"67":0.01554,"68":0.01036,"69":0.05179,"70":0.03107,"71":0.02072,"72":0.03107,"73":0.01554,"74":0.01554,"75":0.18127,"76":0.04661,"77":0.02072,"78":0.03107,"79":0.14501,"80":0.09322,"81":0.03625,"83":0.06215,"84":0.08286,"85":0.16573,"86":0.11394,"87":0.44539,"88":0.11394,"89":0.09322,"90":0.11394,"91":0.31592,"92":0.52308,"93":1.66246,"94":20.35865,"95":5.66583,"96":0.01036,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 46 50 55 97 98"},F:{"31":0.02072,"36":0.01036,"40":0.01554,"68":0.01036,"71":0.00518,"76":0.00518,"77":0.01036,"78":0.15019,"79":1.5537,"80":0.78203,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 38 39 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 72 73 74 75 9.5-9.6 10.5 10.6 11.1 11.5 11.6","10.0-10.1":0,"12.1":0.00518},G:{"8":0.00164,"15":3.55746,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00492,"6.0-6.1":0.00492,"7.0-7.1":0.01476,"8.1-8.4":0.0082,"9.0-9.2":0.01312,"9.3":0.12793,"10.0-10.2":0.01148,"10.3":0.13941,"11.0-11.2":0.03608,"11.3-11.4":0.04592,"12.0-12.1":0.03116,"12.2-12.5":0.65605,"13.0-13.1":0.03116,"13.2":0.0164,"13.3":0.08857,"13.4-13.7":0.28538,"14.0-14.4":1.61389,"14.5-14.8":9.70633},B:{"12":0.01036,"15":0.01036,"16":0.00518,"17":0.01554,"18":0.04143,"84":0.01036,"85":0.01554,"86":0.01036,"87":0.00518,"88":0.00518,"89":0.02072,"90":0.01036,"91":0.03107,"92":0.04661,"93":0.17091,"94":3.52172,"95":1.13938,_:"13 14 79 80 81 83"},E:{"4":0,"11":0.00518,"12":0.01036,"13":0.08804,"14":0.54897,"15":1.22224,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1 9.1","5.1":0.01036,"10.1":0.01554,"11.1":0.05697,"12.1":0.09322,"13.1":0.38325,"14.1":2.40306},P:{"4":0.10664,"5.0-5.4":0.0105,"6.2-6.4":0.01027,"7.2-7.4":0.01066,"8.2":0.01079,"9.2":0.01066,"10.1":0.02054,"11.1-11.2":0.10664,"12.0":0.03199,"13.0":0.13863,"14.0":0.20261,"15.0":2.92187},I:{"0":0,"3":0,"4":0.005,"2.1":0,"2.2":0,"2.3":0,"4.1":0.005,"4.2-4.3":0.00875,"4.4":0,"4.4.3-4.4.4":0.04876},A:{"8":0.01733,"9":0.01733,"10":0.01155,"11":0.40436,_:"6 7 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.34718},Q:{"10.4":0.00964},O:{"0":0.14948},H:{"0":0.40173},L:{"0":27.98882},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js
new file mode 100644
index 0000000000..c5f2245a0c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-na.js
@@ -0,0 +1 @@
+module.exports={C:{"2":0.00504,"4":0.07055,"11":0.01008,"38":0.00504,"43":0.00504,"44":0.02016,"45":0.00504,"48":0.01008,"50":0.00504,"52":0.04031,"54":0.00504,"55":0.01008,"56":0.00504,"58":0.01512,"59":0.00504,"60":0.00504,"63":0.01512,"66":0.01008,"68":0.01008,"72":0.00504,"76":0.00504,"77":0.00504,"78":0.15117,"79":0.01008,"80":0.01008,"81":0.01008,"82":0.01512,"83":0.00504,"84":0.01008,"85":0.01008,"86":0.01008,"87":0.00504,"88":0.0252,"89":0.0252,"90":0.0252,"91":0.06047,"92":0.70546,"93":1.63768,"94":0.01008,_:"3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 39 40 41 42 46 47 49 51 53 57 61 62 64 65 67 69 70 71 73 74 75 95 3.5 3.6"},D:{"35":0.00504,"38":0.01008,"40":0.01512,"43":0.00504,"47":0.00504,"48":0.05039,"49":0.20156,"52":0.00504,"56":0.0907,"58":0.00504,"59":0.01512,"60":0.01512,"61":0.04535,"62":0.01008,"63":0.01008,"64":0.04535,"65":0.02016,"66":0.04031,"67":0.02016,"68":0.01008,"69":0.0252,"70":0.06047,"71":0.00504,"72":0.06047,"73":0.01008,"74":0.11086,"75":0.06047,"76":0.15117,"77":0.03023,"78":0.07055,"79":0.22676,"80":0.11086,"81":0.07559,"83":0.15117,"84":0.22172,"85":0.20156,"86":0.17133,"87":0.37289,"88":0.16125,"89":0.47367,"90":0.21164,"91":0.54925,"92":1.05819,"93":3.48195,"94":17.14772,"95":4.4192,"96":0.0252,"97":0.04031,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 36 37 39 41 42 44 45 46 50 51 53 54 55 57 98"},F:{"78":0.04031,"79":0.35777,"80":0.1814,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":5.13511,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00492,"6.0-6.1":0.00983,"7.0-7.1":0.01721,"8.1-8.4":0.01721,"9.0-9.2":0.01721,"9.3":0.12782,"10.0-10.2":0.02212,"10.3":0.14503,"11.0-11.2":0.059,"11.3-11.4":0.07129,"12.0-12.1":0.06391,"12.2-12.5":0.74728,"13.0-13.1":0.05408,"13.2":0.03196,"13.3":0.15732,"13.4-13.7":0.50392,"14.0-14.4":1.62485,"14.5-14.8":15.76176},B:{"12":0.00504,"15":0.01008,"16":0.01008,"17":0.01512,"18":0.03527,"84":0.01008,"85":0.01512,"86":0.01008,"87":0.03527,"88":0.00504,"89":0.01512,"90":0.01008,"91":0.02016,"92":0.05039,"93":0.37289,"94":4.13198,"95":1.34541,_:"13 14 79 80 81 83"},E:{"4":0,"8":0.00504,"9":0.01008,"11":0.01008,"12":0.01512,"13":0.10078,"14":0.60972,"15":1.64271,_:"0 5 6 7 10 3.1 3.2 6.1 7.1","5.1":0.00504,"9.1":0.08566,"10.1":0.0252,"11.1":0.07559,"12.1":0.15117,"13.1":1.47643,"14.1":3.69359},P:{"4":0.05463,"5.0-5.4":0.0105,"6.2-6.4":0.01027,"7.2-7.4":0.01066,"8.2":0.01079,"9.2":0.01093,"10.1":0.02054,"11.1-11.2":0.05463,"12.0":0.02185,"13.0":0.08741,"14.0":0.13111,"15.0":1.85745},I:{"0":0,"3":0,"4":0.00827,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00331,"4.2-4.3":0.01819,"4.4":0,"4.4.3-4.4.4":0.0397},A:{"8":0.02308,"9":0.17887,"11":0.55391,_:"6 7 10 5.5"},K:{_:"0 10 11 12 11.1 11.5 12.1"},J:{"7":0,"10":0},N:{"10":0.02594,_:"11"},R:{_:"0"},M:{"0":0.40192},Q:{"10.4":0.01489},O:{"0":0.19352},H:{"0":0.2114},L:{"0":22.68097},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js
new file mode 100644
index 0000000000..664e5d80a3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-oc.js
@@ -0,0 +1 @@
+module.exports={C:{"34":0.00554,"48":0.00554,"52":0.03322,"78":0.1052,"82":0.01107,"84":0.01107,"85":0.01107,"86":0.01107,"87":0.00554,"88":0.02769,"89":0.02769,"90":0.02769,"91":0.0443,"92":0.76411,"93":1.83275,"94":0.01107,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 38 39 40 41 42 43 44 45 46 47 49 50 51 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 79 80 81 83 95 3.5 3.6"},D:{"20":0.00554,"25":0.00554,"26":0.00554,"34":0.01661,"38":0.06644,"49":0.28239,"53":0.02215,"55":0.00554,"56":0.01107,"57":0.00554,"58":0.00554,"59":0.01107,"60":0.01661,"61":0.05537,"63":0.01107,"64":0.02215,"65":0.03876,"66":0.01661,"67":0.02769,"68":0.01661,"69":0.02769,"70":0.03876,"71":0.01661,"72":0.03322,"73":0.02215,"74":0.02769,"75":0.02769,"76":0.02769,"77":0.01661,"78":0.02215,"79":0.27131,"80":0.07752,"81":0.03876,"83":0.03876,"84":0.03322,"85":0.02215,"86":0.06644,"87":0.30454,"88":0.08306,"89":0.11628,"90":0.15504,"91":0.33776,"92":1.29012,"93":2.70759,"94":22.91764,"95":5.76955,"96":0.01661,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 21 22 23 24 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 47 48 50 51 52 54 62 97 98"},F:{"46":0.04983,"78":0.0443,"79":0.35437,"80":0.15504,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0,"15":3.83494,"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.01539,"6.0-6.1":0.02639,"7.0-7.1":0.02639,"8.1-8.4":0.04838,"9.0-9.2":0.01979,"9.3":0.29246,"10.0-10.2":0.02859,"10.3":0.31885,"11.0-11.2":0.09895,"11.3-11.4":0.10115,"12.0-12.1":0.08796,"12.2-12.5":1.36554,"13.0-13.1":0.04838,"13.2":0.02639,"13.3":0.15393,"13.4-13.7":0.46837,"14.0-14.4":1.41831,"14.5-14.8":13.61799},B:{"17":0.01107,"18":0.03876,"84":0.01107,"85":0.00554,"86":0.01661,"87":0.00554,"88":0.00554,"89":0.01661,"90":0.01107,"91":0.02215,"92":0.04983,"93":0.23809,"94":3.78177,"95":1.20707,_:"12 13 14 15 16 79 80 81 83"},E:{"4":0,"11":0.01661,"12":0.02215,"13":0.15504,"14":0.84162,"15":1.82167,_:"0 5 6 7 8 9 10 3.1 3.2 5.1 6.1 7.1","9.1":0.01661,"10.1":0.02769,"11.1":0.09413,"12.1":0.18272,"13.1":0.71427,"14.1":5.09958},P:{"4":0.46898,"5.0-5.4":0.07122,"6.2-6.4":0.01029,"7.2-7.4":0.02181,"8.2":0.01029,"9.2":0.01091,"10.1":0.01029,"11.1-11.2":0.05453,"12.0":0.04363,"13.0":0.13088,"14.0":0.19632,"15.0":2.56302},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00162,"4.2-4.3":0.00431,"4.4":0,"4.4.3-4.4.4":0.02532},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"11":0.81394,_:"6 7 8 9 10 5.5"},J:{"7":0,"10":0},N:{"10":0.05942,"11":0.01381},R:{_:"0"},M:{"0":0.38828},Q:{"10.4":0.03124},O:{"0":0.15621},H:{"0":0.18591},L:{"0":18.88761},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js
new file mode 100644
index 0000000000..705926079f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-sa.js
@@ -0,0 +1 @@
+module.exports={C:{"52":0.05844,"60":0.00487,"66":0.00487,"68":0.00974,"72":0.00974,"73":0.00487,"78":0.05844,"79":0.00487,"80":0.00487,"81":0.00487,"83":0.00487,"84":0.01461,"87":0.00974,"88":0.02435,"89":0.01948,"90":0.02435,"91":0.02922,"92":0.50161,"93":1.30029,"94":0.01461,_:"2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 53 54 55 56 57 58 59 61 62 63 64 65 67 69 70 71 74 75 76 77 82 85 86 95 3.5 3.6"},D:{"34":0.00487,"38":0.01948,"47":0.00974,"49":0.17045,"53":0.00487,"55":0.00487,"58":0.00974,"61":0.07305,"63":0.01461,"64":0.00487,"65":0.00974,"66":0.01461,"67":0.00974,"68":0.00487,"69":0.01461,"70":0.00974,"71":0.00974,"72":0.01461,"73":0.01461,"74":0.01461,"75":0.02435,"76":0.01948,"77":0.01461,"78":0.01948,"79":0.11688,"80":0.03409,"81":0.0487,"83":0.03896,"84":0.05357,"85":0.05357,"86":0.08766,"87":0.34577,"88":0.0487,"89":0.08279,"90":0.07792,"91":1.0714,"92":0.46752,"93":0.99348,"94":26.22982,"95":7.86505,"96":0.02435,"97":0.00487,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 35 36 37 39 40 41 42 43 44 45 46 48 50 51 52 54 56 57 59 60 62 98"},F:{"36":0.00487,"77":0.00974,"78":0.1461,"79":1.78242,"80":0.90095,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00051,"15":1.248,"3.2":0.00102,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.00766,"6.0-6.1":0.00255,"7.0-7.1":0.00511,"8.1-8.4":0.00255,"9.0-9.2":0.00102,"9.3":0.03677,"10.0-10.2":0.00204,"10.3":0.03319,"11.0-11.2":0.00715,"11.3-11.4":0.01736,"12.0-12.1":0.01174,"12.2-12.5":0.27115,"13.0-13.1":0.01123,"13.2":0.0046,"13.3":0.0337,"13.4-13.7":0.11796,"14.0-14.4":0.33242,"14.5-14.8":2.95761},B:{"14":0.00487,"15":0.00487,"17":0.00487,"18":0.02435,"84":0.00974,"89":0.01461,"90":0.00487,"91":0.01461,"92":0.01948,"93":0.07305,"94":1.98209,"95":0.65258,_:"12 13 16 79 80 81 83 85 86 87 88"},E:{"4":0,"13":0.01948,"14":0.08766,"15":0.2922,_:"0 5 6 7 8 9 10 11 12 3.1 3.2 6.1 7.1 9.1 10.1","5.1":0.00974,"11.1":0.01461,"12.1":0.01948,"13.1":0.09253,"14.1":0.35064},P:{"4":0.17556,"5.0-5.4":0.07122,"6.2-6.4":0.01029,"7.2-7.4":0.17556,"8.2":0.01029,"9.2":0.02065,"10.1":0.01029,"11.1-11.2":0.12393,"12.0":0.03098,"13.0":0.14458,"14.0":0.17556,"15.0":1.59039},I:{"0":0,"3":0,"4":0,"2.1":0,"2.2":0,"2.3":0,"4.1":0.00288,"4.2-4.3":0.0054,"4.4":0,"4.4.3-4.4.4":0.03277},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.01055,"9":0.00528,"11":0.1741,_:"6 7 10 5.5"},J:{"7":0,"10":0},N:{"10":0.05942,"11":0.01381},R:{_:"0"},M:{"0":0.12828},Q:{"10.4":0},O:{"0":0.07697},H:{"0":0.18459},L:{"0":44.49461},S:{"2.5":0}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js
new file mode 100644
index 0000000000..3a1335acf2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/regions/alt-ww.js
@@ -0,0 +1 @@
+module.exports={C:{"2":0.00432,"4":0.01727,"11":0.00432,"25":0.00432,"43":0.03886,"44":0.00432,"45":0.00432,"48":0.00864,"51":0.00432,"52":0.06909,"55":0.00432,"56":0.00864,"58":0.00432,"59":0.00432,"60":0.00864,"61":0.00432,"63":0.00864,"66":0.00432,"68":0.00864,"72":0.00864,"75":0.00432,"77":0.00864,"78":0.14249,"79":0.00864,"80":0.00864,"81":0.01727,"82":0.00864,"83":0.00864,"84":0.01727,"85":0.00864,"86":0.00864,"87":0.00864,"88":0.02591,"89":0.02591,"90":0.02591,"91":0.05182,"92":0.75565,"93":1.90424,"94":0.02591,_:"3 5 6 7 8 9 10 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 46 47 49 50 53 54 57 62 64 65 67 69 70 71 73 74 76 95 3.5 3.6"},D:{"22":0.00864,"24":0.00864,"33":0.00432,"34":0.00864,"35":0.01295,"38":0.02159,"40":0.01295,"43":0.00864,"47":0.01295,"48":0.02159,"49":0.17704,"51":0.00432,"52":0.00432,"53":0.01295,"54":0.00864,"55":0.00864,"56":0.0475,"57":0.00864,"58":0.00864,"59":0.00864,"60":0.00864,"61":0.06045,"62":0.00864,"63":0.01295,"64":0.02159,"65":0.02159,"66":0.02159,"67":0.01727,"68":0.01295,"69":0.06477,"70":0.0475,"71":0.02159,"72":0.0475,"73":0.01295,"74":0.05613,"75":0.07772,"76":0.05613,"77":0.02159,"78":0.0475,"79":0.16408,"80":0.07341,"81":0.0475,"83":0.07772,"84":0.09931,"85":0.11227,"86":0.10795,"87":0.31953,"88":0.095,"89":0.17704,"90":0.11659,"91":0.32385,"92":0.61747,"93":1.66243,"94":17.5829,"95":4.74116,"96":0.02159,"97":0.01295,_:"4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 23 25 26 27 28 29 30 31 32 36 37 39 41 42 44 45 46 50 98"},F:{"31":0.00432,"36":0.00864,"40":0.00864,"46":0.00864,"68":0.00432,"77":0.00432,"78":0.06045,"79":0.6952,"80":0.35839,_:"9 11 12 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 32 33 34 35 37 38 39 41 42 43 44 45 47 48 49 50 51 52 53 54 55 56 57 58 60 62 63 64 65 66 67 69 70 71 72 73 74 75 76 9.5-9.6 10.5 10.6 11.1 11.5 11.6 12.1","10.0-10.1":0},G:{"8":0.00146,"15":3.10555,"3.2":0,"4.0-4.1":0,"4.2-4.3":0.00291,"5.0-5.1":0.00728,"6.0-6.1":0.07131,"7.0-7.1":0.02328,"8.1-8.4":0.01164,"9.0-9.2":0.02037,"9.3":0.10623,"10.0-10.2":0.03784,"10.3":0.12952,"11.0-11.2":0.07713,"11.3-11.4":0.04802,"12.0-12.1":0.05093,"12.2-12.5":0.66506,"13.0-13.1":0.0422,"13.2":0.02037,"13.3":0.10769,"13.4-13.7":0.34344,"14.0-14.4":1.27918,"14.5-14.8":8.40273},B:{"12":0.00864,"14":0.00432,"15":0.00864,"16":0.00864,"17":0.01295,"18":0.03886,"84":0.00864,"85":0.00864,"86":0.00864,"87":0.01295,"88":0.00432,"89":0.01727,"90":0.00864,"91":0.01727,"92":0.03454,"93":0.16408,"94":2.75057,"95":0.89814,_:"13 79 80 81 83"},E:{"4":0,"11":0.00432,"12":0.00864,"13":0.06909,"14":0.37567,"15":0.90678,_:"0 5 6 7 8 9 10 3.1 3.2 6.1 7.1","5.1":0.01295,"9.1":0.02591,"10.1":0.01295,"11.1":0.04318,"12.1":0.07772,"13.1":0.5268,"14.1":1.98196},P:{"4":0.23251,"5.0-5.4":0.07122,"6.2-6.4":0.01029,"7.2-7.4":0.07398,"8.2":0.01029,"9.2":0.03171,"10.1":0.01029,"11.1-11.2":0.09512,"12.0":0.04227,"13.0":0.14796,"14.0":0.21137,"15.0":2.10318},I:{"0":0,"3":0,"4":0.02029,"2.1":0,"2.2":0,"2.3":0,"4.1":0.01127,"4.2-4.3":0.04283,"4.4":0,"4.4.3-4.4.4":0.19839},K:{_:"0 10 11 12 11.1 11.5 12.1"},A:{"8":0.03764,"9":0.09033,"10":0.02258,"11":0.70009,_:"6 7 5.5"},J:{"7":0,"10":0},N:{"10":0.05942,"11":0.01381},R:{_:"0"},M:{"0":0.27847},Q:{"10.4":0.16481},O:{"0":0.97748},H:{"0":1.08682},L:{"0":37.65972},S:{"2.5":0.06251}};
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/statuses.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/statuses.js
new file mode 100644
index 0000000000..4d73ab303a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/statuses.js
@@ -0,0 +1,9 @@
+module.exports = {
+ 1: 'ls', // WHATWG Living Standard
+ 2: 'rec', // W3C Recommendation
+ 3: 'pr', // W3C Proposed Recommendation
+ 4: 'cr', // W3C Candidate Recommendation
+ 5: 'wd', // W3C Working Draft
+ 6: 'other', // Non-W3C, but reputable
+ 7: 'unoff' // Unofficial, Editor's Draft or W3C "Note"
+}
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/supported.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/supported.js
new file mode 100644
index 0000000000..3f81e4ee63
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/lib/supported.js
@@ -0,0 +1,9 @@
+module.exports = {
+ y: 1 << 0,
+ n: 1 << 1,
+ a: 1 << 2,
+ p: 1 << 3,
+ u: 1 << 4,
+ x: 1 << 5,
+ d: 1 << 6
+}
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/agents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/agents.js
new file mode 100644
index 0000000000..0c8a7905b4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/agents.js
@@ -0,0 +1,47 @@
+'use strict'
+
+const browsers = require('./browsers').browsers
+const versions = require('./browserVersions').browserVersions
+const agentsData = require('../../data/agents')
+
+function unpackBrowserVersions(versionsData) {
+ return Object.keys(versionsData).reduce((usage, version) => {
+ usage[versions[version]] = versionsData[version]
+ return usage
+ }, {})
+}
+
+module.exports.agents = Object.keys(agentsData).reduce((map, key) => {
+ let versionsData = agentsData[key]
+ map[browsers[key]] = Object.keys(versionsData).reduce((data, entry) => {
+ if (entry === 'A') {
+ data.usage_global = unpackBrowserVersions(versionsData[entry])
+ } else if (entry === 'C') {
+ data.versions = versionsData[entry].reduce((list, version) => {
+ if (version === '') {
+ list.push(null)
+ } else {
+ list.push(versions[version])
+ }
+ return list
+ }, [])
+ } else if (entry === 'D') {
+ data.prefix_exceptions = unpackBrowserVersions(versionsData[entry])
+ } else if (entry === 'E') {
+ data.browser = versionsData[entry]
+ } else if (entry === 'F') {
+ data.release_date = Object.keys(versionsData[entry]).reduce(
+ (map2, key2) => {
+ map2[versions[key2]] = versionsData[entry][key2]
+ return map2
+ },
+ {}
+ )
+ } else {
+ // entry is B
+ data.prefix = versionsData[entry]
+ }
+ return data
+ }, {})
+ return map
+}, {})
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browserVersions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browserVersions.js
new file mode 100644
index 0000000000..553526e282
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browserVersions.js
@@ -0,0 +1 @@
+module.exports.browserVersions = require('../../data/browserVersions')
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browsers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browsers.js
new file mode 100644
index 0000000000..85e68b4f76
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/browsers.js
@@ -0,0 +1 @@
+module.exports.browsers = require('../../data/browsers')
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/feature.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/feature.js
new file mode 100644
index 0000000000..9440b8a425
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/feature.js
@@ -0,0 +1,48 @@
+'use strict'
+
+const statuses = require('../lib/statuses')
+const supported = require('../lib/supported')
+const browsers = require('./browsers').browsers
+const versions = require('./browserVersions').browserVersions
+
+const MATH2LOG = Math.log(2)
+
+function unpackSupport(cipher) {
+ // bit flags
+ let stats = Object.keys(supported).reduce((list, support) => {
+ if (cipher & supported[support]) list.push(support)
+ return list
+ }, [])
+
+ // notes
+ let notes = cipher >> 7
+ let notesArray = []
+ while (notes) {
+ let note = Math.floor(Math.log(notes) / MATH2LOG) + 1
+ notesArray.unshift(`#${note}`)
+ notes -= Math.pow(2, note - 1)
+ }
+
+ return stats.concat(notesArray).join(' ')
+}
+
+function unpackFeature(packed) {
+ let unpacked = { status: statuses[packed.B], title: packed.C }
+ unpacked.stats = Object.keys(packed.A).reduce((browserStats, key) => {
+ let browser = packed.A[key]
+ browserStats[browsers[key]] = Object.keys(browser).reduce(
+ (stats, support) => {
+ let packedVersions = browser[support].split(' ')
+ let unpacked2 = unpackSupport(support)
+ packedVersions.forEach(v => (stats[versions[v]] = unpacked2))
+ return stats
+ },
+ {}
+ )
+ return browserStats
+ }, {})
+ return unpacked
+}
+
+module.exports = unpackFeature
+module.exports.default = unpackFeature
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/features.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/features.js
new file mode 100644
index 0000000000..8362aec8d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/features.js
@@ -0,0 +1,6 @@
+/*
+ * Load this dynamically so that it
+ * doesn't appear in the rollup bundle.
+ */
+
+module.exports.features = require('../../data/features')
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/index.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/index.js
new file mode 100644
index 0000000000..12017e8030
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/index.js
@@ -0,0 +1,4 @@
+module.exports.agents = require('./agents').agents
+module.exports.feature = require('./feature')
+module.exports.features = require('./features').features
+module.exports.region = require('./region')
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/region.js b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/region.js
new file mode 100644
index 0000000000..d5cc2b6f1f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/dist/unpacker/region.js
@@ -0,0 +1,22 @@
+'use strict'
+
+const browsers = require('./browsers').browsers
+
+function unpackRegion(packed) {
+ return Object.keys(packed).reduce((list, browser) => {
+ let data = packed[browser]
+ list[browsers[browser]] = Object.keys(data).reduce((memo, key) => {
+ let stats = data[key]
+ if (key === '_') {
+ stats.split(' ').forEach(version => (memo[version] = null))
+ } else {
+ memo[key] = stats
+ }
+ return memo
+ }, {})
+ return list
+ }, {})
+}
+
+module.exports = unpackRegion
+module.exports.default = unpackRegion
diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/package.json b/tools/node_modules/eslint/node_modules/caniuse-lite/package.json
new file mode 100644
index 0000000000..0203847a0a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/caniuse-lite/package.json
@@ -0,0 +1,28 @@
+{
+ "name": "caniuse-lite",
+ "version": "1.0.30001283",
+ "description": "A smaller version of caniuse-db, with only the essentials!",
+ "main": "dist/unpacker/index.js",
+ "files": [
+ "data",
+ "dist"
+ ],
+ "keywords": [
+ "support",
+ "css",
+ "js",
+ "html5",
+ "svg"
+ ],
+ "author": {
+ "name": "Ben Briggs",
+ "email": "beneb.info@gmail.com",
+ "url": "http://beneb.info"
+ },
+ "repository": "browserslist/caniuse-lite",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ "license": "CC-BY-4.0"
+}
diff --git a/tools/node_modules/eslint/node_modules/character-entities-legacy/index.json b/tools/node_modules/eslint/node_modules/character-entities-legacy/index.json
new file mode 100644
index 0000000000..d83b75251b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities-legacy/index.json
@@ -0,0 +1,108 @@
+{
+ "AElig": "Æ",
+ "AMP": "&",
+ "Aacute": "Á",
+ "Acirc": "Â",
+ "Agrave": "À",
+ "Aring": "Å",
+ "Atilde": "Ã",
+ "Auml": "Ä",
+ "COPY": "©",
+ "Ccedil": "Ç",
+ "ETH": "Ð",
+ "Eacute": "É",
+ "Ecirc": "Ê",
+ "Egrave": "È",
+ "Euml": "Ë",
+ "GT": ">",
+ "Iacute": "Í",
+ "Icirc": "Î",
+ "Igrave": "Ì",
+ "Iuml": "Ï",
+ "LT": "<",
+ "Ntilde": "Ñ",
+ "Oacute": "Ó",
+ "Ocirc": "Ô",
+ "Ograve": "Ò",
+ "Oslash": "Ø",
+ "Otilde": "Õ",
+ "Ouml": "Ö",
+ "QUOT": "\"",
+ "REG": "®",
+ "THORN": "Þ",
+ "Uacute": "Ú",
+ "Ucirc": "Û",
+ "Ugrave": "Ù",
+ "Uuml": "Ü",
+ "Yacute": "Ý",
+ "aacute": "á",
+ "acirc": "â",
+ "acute": "´",
+ "aelig": "æ",
+ "agrave": "à",
+ "amp": "&",
+ "aring": "å",
+ "atilde": "ã",
+ "auml": "ä",
+ "brvbar": "¦",
+ "ccedil": "ç",
+ "cedil": "¸",
+ "cent": "¢",
+ "copy": "©",
+ "curren": "¤",
+ "deg": "°",
+ "divide": "÷",
+ "eacute": "é",
+ "ecirc": "ê",
+ "egrave": "è",
+ "eth": "ð",
+ "euml": "ë",
+ "frac12": "½",
+ "frac14": "¼",
+ "frac34": "¾",
+ "gt": ">",
+ "iacute": "í",
+ "icirc": "î",
+ "iexcl": "¡",
+ "igrave": "ì",
+ "iquest": "¿",
+ "iuml": "ï",
+ "laquo": "«",
+ "lt": "<",
+ "macr": "¯",
+ "micro": "µ",
+ "middot": "·",
+ "nbsp": " ",
+ "not": "¬",
+ "ntilde": "ñ",
+ "oacute": "ó",
+ "ocirc": "ô",
+ "ograve": "ò",
+ "ordf": "ª",
+ "ordm": "º",
+ "oslash": "ø",
+ "otilde": "õ",
+ "ouml": "ö",
+ "para": "¶",
+ "plusmn": "±",
+ "pound": "£",
+ "quot": "\"",
+ "raquo": "»",
+ "reg": "®",
+ "sect": "§",
+ "shy": "­",
+ "sup1": "¹",
+ "sup2": "²",
+ "sup3": "³",
+ "szlig": "ß",
+ "thorn": "þ",
+ "times": "×",
+ "uacute": "ú",
+ "ucirc": "û",
+ "ugrave": "ù",
+ "uml": "¨",
+ "uuml": "ü",
+ "yacute": "ý",
+ "yen": "¥",
+ "yuml": "ÿ"
+}
diff --git a/tools/node_modules/eslint/node_modules/character-entities-legacy/license b/tools/node_modules/eslint/node_modules/character-entities-legacy/license
new file mode 100644
index 0000000000..32e7a3d93c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities-legacy/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/character-entities-legacy/package.json b/tools/node_modules/eslint/node_modules/character-entities-legacy/package.json
new file mode 100644
index 0000000000..e532b8714d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities-legacy/package.json
@@ -0,0 +1,70 @@
+{
+ "name": "character-entities-legacy",
+ "version": "1.1.4",
+ "description": "HTML legacy character entity information",
+ "license": "MIT",
+ "keywords": [
+ "html",
+ "entity",
+ "entities",
+ "character",
+ "reference",
+ "name",
+ "replacement"
+ ],
+ "repository": "wooorm/character-entities-legacy",
+ "bugs": "https://github.com/wooorm/character-entities-legacy/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "main": "index.json",
+ "files": [
+ "index.json"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "bail": "^1.0.0",
+ "browserify": "^16.0.0",
+ "concat-stream": "^2.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "generate": "node build",
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.json -s characterEntitiesLegacy -o character-entities-legacy.js",
+ "build-mangle": "browserify index.json -s characterEntitiesLegacy -p tinyify -o character-entities-legacy.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test": "npm run generate && npm run format && npm run build && npm run test-api"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "character-entities-legacy.js"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/character-entities-legacy/readme.md b/tools/node_modules/eslint/node_modules/character-entities-legacy/readme.md
new file mode 100644
index 0000000000..711a090a7d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities-legacy/readme.md
@@ -0,0 +1,74 @@
+# character-entities-legacy
+
+[![Build][build-badge]][build]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+HTML legacy character entity information: for legacy reasons some character
+entities are not required to have a trailing semicolon: `&copy` is perfectly
+okay for `©`.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install character-entities-legacy
+```
+
+## Use
+
+```js
+var characterEntitiesLegacy = require('character-entities-legacy')
+
+console.log(characterEntitiesLegacy.copy) // => '©'
+console.log(characterEntitiesLegacy.frac34) // => '¾'
+console.log(characterEntitiesLegacy.sup1) // => '¹'
+```
+
+## API
+
+### `characterEntitiesLegacy`
+
+Mapping between (case-sensitive) legacy character entity names to replacements.
+
+## Support
+
+See [`whatwg/html`][html].
+
+## Related
+
+* [`character-entities`](https://github.com/wooorm/character-entities)
+ — HTML character entity info
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — HTML 4 character entity info
+* [`parse-entities`](https://github.com/wooorm/parse-entities)
+ — Parse HTML character references
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Serialize HTML character references
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/character-entities-legacy.svg
+
+[build]: https://travis-ci.org/wooorm/character-entities-legacy
+
+[downloads-badge]: https://img.shields.io/npm/dm/character-entities-legacy.svg
+
+[downloads]: https://www.npmjs.com/package/character-entities-legacy
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/character-entities-legacy.svg
+
+[size]: https://bundlephobia.com/result?p=character-entities-legacy
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[html]: https://raw.githubusercontent.com/whatwg/html/master/json-entities-legacy.inc
diff --git a/tools/node_modules/eslint/node_modules/character-entities/index.json b/tools/node_modules/eslint/node_modules/character-entities/index.json
new file mode 100644
index 0000000000..a63babe093
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities/index.json
@@ -0,0 +1,2224 @@
+{
+ "AEli": "Æ",
+ "AElig": "Æ",
+ "AM": "&",
+ "AMP": "&",
+ "Aacut": "Á",
+ "Aacute": "Á",
+ "Abreve": "Ă",
+ "Acir": "Â",
+ "Acirc": "Â",
+ "Acy": "А",
+ "Afr": "𝔄",
+ "Agrav": "À",
+ "Agrave": "À",
+ "Alpha": "Α",
+ "Amacr": "Ā",
+ "And": "⩓",
+ "Aogon": "Ą",
+ "Aopf": "𝔸",
+ "ApplyFunction": "⁡",
+ "Arin": "Å",
+ "Aring": "Å",
+ "Ascr": "𝒜",
+ "Assign": "≔",
+ "Atild": "Ã",
+ "Atilde": "Ã",
+ "Aum": "Ä",
+ "Auml": "Ä",
+ "Backslash": "∖",
+ "Barv": "⫧",
+ "Barwed": "⌆",
+ "Bcy": "Б",
+ "Because": "∵",
+ "Bernoullis": "ℬ",
+ "Beta": "Β",
+ "Bfr": "𝔅",
+ "Bopf": "𝔹",
+ "Breve": "˘",
+ "Bscr": "ℬ",
+ "Bumpeq": "≎",
+ "CHcy": "Ч",
+ "COP": "©",
+ "COPY": "©",
+ "Cacute": "Ć",
+ "Cap": "⋒",
+ "CapitalDifferentialD": "ⅅ",
+ "Cayleys": "ℭ",
+ "Ccaron": "Č",
+ "Ccedi": "Ç",
+ "Ccedil": "Ç",
+ "Ccirc": "Ĉ",
+ "Cconint": "∰",
+ "Cdot": "Ċ",
+ "Cedilla": "¸",
+ "CenterDot": "·",
+ "Cfr": "ℭ",
+ "Chi": "Χ",
+ "CircleDot": "⊙",
+ "CircleMinus": "⊖",
+ "CirclePlus": "⊕",
+ "CircleTimes": "⊗",
+ "ClockwiseContourIntegral": "∲",
+ "CloseCurlyDoubleQuote": "”",
+ "CloseCurlyQuote": "’",
+ "Colon": "∷",
+ "Colone": "⩴",
+ "Congruent": "≡",
+ "Conint": "∯",
+ "ContourIntegral": "∮",
+ "Copf": "ℂ",
+ "Coproduct": "∐",
+ "CounterClockwiseContourIntegral": "∳",
+ "Cross": "⨯",
+ "Cscr": "𝒞",
+ "Cup": "⋓",
+ "CupCap": "≍",
+ "DD": "ⅅ",
+ "DDotrahd": "⤑",
+ "DJcy": "Ђ",
+ "DScy": "Ѕ",
+ "DZcy": "Џ",
+ "Dagger": "‡",
+ "Darr": "↡",
+ "Dashv": "⫤",
+ "Dcaron": "Ď",
+ "Dcy": "Д",
+ "Del": "∇",
+ "Delta": "Δ",
+ "Dfr": "𝔇",
+ "DiacriticalAcute": "´",
+ "DiacriticalDot": "˙",
+ "DiacriticalDoubleAcute": "˝",
+ "DiacriticalGrave": "`",
+ "DiacriticalTilde": "˜",
+ "Diamond": "⋄",
+ "DifferentialD": "ⅆ",
+ "Dopf": "𝔻",
+ "Dot": "¨",
+ "DotDot": "⃜",
+ "DotEqual": "≐",
+ "DoubleContourIntegral": "∯",
+ "DoubleDot": "¨",
+ "DoubleDownArrow": "⇓",
+ "DoubleLeftArrow": "⇐",
+ "DoubleLeftRightArrow": "⇔",
+ "DoubleLeftTee": "⫤",
+ "DoubleLongLeftArrow": "⟸",
+ "DoubleLongLeftRightArrow": "⟺",
+ "DoubleLongRightArrow": "⟹",
+ "DoubleRightArrow": "⇒",
+ "DoubleRightTee": "⊨",
+ "DoubleUpArrow": "⇑",
+ "DoubleUpDownArrow": "⇕",
+ "DoubleVerticalBar": "∥",
+ "DownArrow": "↓",
+ "DownArrowBar": "⤓",
+ "DownArrowUpArrow": "⇵",
+ "DownBreve": "̑",
+ "DownLeftRightVector": "⥐",
+ "DownLeftTeeVector": "⥞",
+ "DownLeftVector": "↽",
+ "DownLeftVectorBar": "⥖",
+ "DownRightTeeVector": "⥟",
+ "DownRightVector": "⇁",
+ "DownRightVectorBar": "⥗",
+ "DownTee": "⊤",
+ "DownTeeArrow": "↧",
+ "Downarrow": "⇓",
+ "Dscr": "𝒟",
+ "Dstrok": "Đ",
+ "ENG": "Ŋ",
+ "ET": "Ð",
+ "ETH": "Ð",
+ "Eacut": "É",
+ "Eacute": "É",
+ "Ecaron": "Ě",
+ "Ecir": "Ê",
+ "Ecirc": "Ê",
+ "Ecy": "Э",
+ "Edot": "Ė",
+ "Efr": "𝔈",
+ "Egrav": "È",
+ "Egrave": "È",
+ "Element": "∈",
+ "Emacr": "Ē",
+ "EmptySmallSquare": "◻",
+ "EmptyVerySmallSquare": "▫",
+ "Eogon": "Ę",
+ "Eopf": "𝔼",
+ "Epsilon": "Ε",
+ "Equal": "⩵",
+ "EqualTilde": "≂",
+ "Equilibrium": "⇌",
+ "Escr": "ℰ",
+ "Esim": "⩳",
+ "Eta": "Η",
+ "Eum": "Ë",
+ "Euml": "Ë",
+ "Exists": "∃",
+ "ExponentialE": "ⅇ",
+ "Fcy": "Ф",
+ "Ffr": "𝔉",
+ "FilledSmallSquare": "◼",
+ "FilledVerySmallSquare": "▪",
+ "Fopf": "𝔽",
+ "ForAll": "∀",
+ "Fouriertrf": "ℱ",
+ "Fscr": "ℱ",
+ "GJcy": "Ѓ",
+ "G": ">",
+ "GT": ">",
+ "Gamma": "Γ",
+ "Gammad": "Ϝ",
+ "Gbreve": "Ğ",
+ "Gcedil": "Ģ",
+ "Gcirc": "Ĝ",
+ "Gcy": "Г",
+ "Gdot": "Ġ",
+ "Gfr": "𝔊",
+ "Gg": "⋙",
+ "Gopf": "𝔾",
+ "GreaterEqual": "≥",
+ "GreaterEqualLess": "⋛",
+ "GreaterFullEqual": "≧",
+ "GreaterGreater": "⪢",
+ "GreaterLess": "≷",
+ "GreaterSlantEqual": "⩾",
+ "GreaterTilde": "≳",
+ "Gscr": "𝒢",
+ "Gt": "≫",
+ "HARDcy": "Ъ",
+ "Hacek": "ˇ",
+ "Hat": "^",
+ "Hcirc": "Ĥ",
+ "Hfr": "ℌ",
+ "HilbertSpace": "ℋ",
+ "Hopf": "ℍ",
+ "HorizontalLine": "─",
+ "Hscr": "ℋ",
+ "Hstrok": "Ħ",
+ "HumpDownHump": "≎",
+ "HumpEqual": "≏",
+ "IEcy": "Е",
+ "IJlig": "IJ",
+ "IOcy": "Ё",
+ "Iacut": "Í",
+ "Iacute": "Í",
+ "Icir": "Î",
+ "Icirc": "Î",
+ "Icy": "И",
+ "Idot": "İ",
+ "Ifr": "ℑ",
+ "Igrav": "Ì",
+ "Igrave": "Ì",
+ "Im": "ℑ",
+ "Imacr": "Ī",
+ "ImaginaryI": "ⅈ",
+ "Implies": "⇒",
+ "Int": "∬",
+ "Integral": "∫",
+ "Intersection": "⋂",
+ "InvisibleComma": "⁣",
+ "InvisibleTimes": "⁢",
+ "Iogon": "Į",
+ "Iopf": "𝕀",
+ "Iota": "Ι",
+ "Iscr": "ℐ",
+ "Itilde": "Ĩ",
+ "Iukcy": "І",
+ "Ium": "Ï",
+ "Iuml": "Ï",
+ "Jcirc": "Ĵ",
+ "Jcy": "Й",
+ "Jfr": "𝔍",
+ "Jopf": "𝕁",
+ "Jscr": "𝒥",
+ "Jsercy": "Ј",
+ "Jukcy": "Є",
+ "KHcy": "Х",
+ "KJcy": "Ќ",
+ "Kappa": "Κ",
+ "Kcedil": "Ķ",
+ "Kcy": "К",
+ "Kfr": "𝔎",
+ "Kopf": "𝕂",
+ "Kscr": "𝒦",
+ "LJcy": "Љ",
+ "L": "<",
+ "LT": "<",
+ "Lacute": "Ĺ",
+ "Lambda": "Λ",
+ "Lang": "⟪",
+ "Laplacetrf": "ℒ",
+ "Larr": "↞",
+ "Lcaron": "Ľ",
+ "Lcedil": "Ļ",
+ "Lcy": "Л",
+ "LeftAngleBracket": "⟨",
+ "LeftArrow": "←",
+ "LeftArrowBar": "⇤",
+ "LeftArrowRightArrow": "⇆",
+ "LeftCeiling": "⌈",
+ "LeftDoubleBracket": "⟦",
+ "LeftDownTeeVector": "⥡",
+ "LeftDownVector": "⇃",
+ "LeftDownVectorBar": "⥙",
+ "LeftFloor": "⌊",
+ "LeftRightArrow": "↔",
+ "LeftRightVector": "⥎",
+ "LeftTee": "⊣",
+ "LeftTeeArrow": "↤",
+ "LeftTeeVector": "⥚",
+ "LeftTriangle": "⊲",
+ "LeftTriangleBar": "⧏",
+ "LeftTriangleEqual": "⊴",
+ "LeftUpDownVector": "⥑",
+ "LeftUpTeeVector": "⥠",
+ "LeftUpVector": "↿",
+ "LeftUpVectorBar": "⥘",
+ "LeftVector": "↼",
+ "LeftVectorBar": "⥒",
+ "Leftarrow": "⇐",
+ "Leftrightarrow": "⇔",
+ "LessEqualGreater": "⋚",
+ "LessFullEqual": "≦",
+ "LessGreater": "≶",
+ "LessLess": "⪡",
+ "LessSlantEqual": "⩽",
+ "LessTilde": "≲",
+ "Lfr": "𝔏",
+ "Ll": "⋘",
+ "Lleftarrow": "⇚",
+ "Lmidot": "Ŀ",
+ "LongLeftArrow": "⟵",
+ "LongLeftRightArrow": "⟷",
+ "LongRightArrow": "⟶",
+ "Longleftarrow": "⟸",
+ "Longleftrightarrow": "⟺",
+ "Longrightarrow": "⟹",
+ "Lopf": "𝕃",
+ "LowerLeftArrow": "↙",
+ "LowerRightArrow": "↘",
+ "Lscr": "ℒ",
+ "Lsh": "↰",
+ "Lstrok": "Ł",
+ "Lt": "≪",
+ "Map": "⤅",
+ "Mcy": "М",
+ "MediumSpace": " ",
+ "Mellintrf": "ℳ",
+ "Mfr": "𝔐",
+ "MinusPlus": "∓",
+ "Mopf": "𝕄",
+ "Mscr": "ℳ",
+ "Mu": "Μ",
+ "NJcy": "Њ",
+ "Nacute": "Ń",
+ "Ncaron": "Ň",
+ "Ncedil": "Ņ",
+ "Ncy": "Н",
+ "NegativeMediumSpace": "​",
+ "NegativeThickSpace": "​",
+ "NegativeThinSpace": "​",
+ "NegativeVeryThinSpace": "​",
+ "NestedGreaterGreater": "≫",
+ "NestedLessLess": "≪",
+ "NewLine": "\n",
+ "Nfr": "𝔑",
+ "NoBreak": "⁠",
+ "NonBreakingSpace": " ",
+ "Nopf": "ℕ",
+ "Not": "⫬",
+ "NotCongruent": "≢",
+ "NotCupCap": "≭",
+ "NotDoubleVerticalBar": "∦",
+ "NotElement": "∉",
+ "NotEqual": "≠",
+ "NotEqualTilde": "≂̸",
+ "NotExists": "∄",
+ "NotGreater": "≯",
+ "NotGreaterEqual": "≱",
+ "NotGreaterFullEqual": "≧̸",
+ "NotGreaterGreater": "≫̸",
+ "NotGreaterLess": "≹",
+ "NotGreaterSlantEqual": "⩾̸",
+ "NotGreaterTilde": "≵",
+ "NotHumpDownHump": "≎̸",
+ "NotHumpEqual": "≏̸",
+ "NotLeftTriangle": "⋪",
+ "NotLeftTriangleBar": "⧏̸",
+ "NotLeftTriangleEqual": "⋬",
+ "NotLess": "≮",
+ "NotLessEqual": "≰",
+ "NotLessGreater": "≸",
+ "NotLessLess": "≪̸",
+ "NotLessSlantEqual": "⩽̸",
+ "NotLessTilde": "≴",
+ "NotNestedGreaterGreater": "⪢̸",
+ "NotNestedLessLess": "⪡̸",
+ "NotPrecedes": "⊀",
+ "NotPrecedesEqual": "⪯̸",
+ "NotPrecedesSlantEqual": "⋠",
+ "NotReverseElement": "∌",
+ "NotRightTriangle": "⋫",
+ "NotRightTriangleBar": "⧐̸",
+ "NotRightTriangleEqual": "⋭",
+ "NotSquareSubset": "⊏̸",
+ "NotSquareSubsetEqual": "⋢",
+ "NotSquareSuperset": "⊐̸",
+ "NotSquareSupersetEqual": "⋣",
+ "NotSubset": "⊂⃒",
+ "NotSubsetEqual": "⊈",
+ "NotSucceeds": "⊁",
+ "NotSucceedsEqual": "⪰̸",
+ "NotSucceedsSlantEqual": "⋡",
+ "NotSucceedsTilde": "≿̸",
+ "NotSuperset": "⊃⃒",
+ "NotSupersetEqual": "⊉",
+ "NotTilde": "≁",
+ "NotTildeEqual": "≄",
+ "NotTildeFullEqual": "≇",
+ "NotTildeTilde": "≉",
+ "NotVerticalBar": "∤",
+ "Nscr": "𝒩",
+ "Ntild": "Ñ",
+ "Ntilde": "Ñ",
+ "Nu": "Ν",
+ "OElig": "Œ",
+ "Oacut": "Ó",
+ "Oacute": "Ó",
+ "Ocir": "Ô",
+ "Ocirc": "Ô",
+ "Ocy": "О",
+ "Odblac": "Ő",
+ "Ofr": "𝔒",
+ "Ograv": "Ò",
+ "Ograve": "Ò",
+ "Omacr": "Ō",
+ "Omega": "Ω",
+ "Omicron": "Ο",
+ "Oopf": "𝕆",
+ "OpenCurlyDoubleQuote": "“",
+ "OpenCurlyQuote": "‘",
+ "Or": "⩔",
+ "Oscr": "𝒪",
+ "Oslas": "Ø",
+ "Oslash": "Ø",
+ "Otild": "Õ",
+ "Otilde": "Õ",
+ "Otimes": "⨷",
+ "Oum": "Ö",
+ "Ouml": "Ö",
+ "OverBar": "‾",
+ "OverBrace": "⏞",
+ "OverBracket": "⎴",
+ "OverParenthesis": "⏜",
+ "PartialD": "∂",
+ "Pcy": "П",
+ "Pfr": "𝔓",
+ "Phi": "Φ",
+ "Pi": "Π",
+ "PlusMinus": "±",
+ "Poincareplane": "ℌ",
+ "Popf": "ℙ",
+ "Pr": "⪻",
+ "Precedes": "≺",
+ "PrecedesEqual": "⪯",
+ "PrecedesSlantEqual": "≼",
+ "PrecedesTilde": "≾",
+ "Prime": "″",
+ "Product": "∏",
+ "Proportion": "∷",
+ "Proportional": "∝",
+ "Pscr": "𝒫",
+ "Psi": "Ψ",
+ "QUO": "\"",
+ "QUOT": "\"",
+ "Qfr": "𝔔",
+ "Qopf": "ℚ",
+ "Qscr": "𝒬",
+ "RBarr": "⤐",
+ "RE": "®",
+ "REG": "®",
+ "Racute": "Ŕ",
+ "Rang": "⟫",
+ "Rarr": "↠",
+ "Rarrtl": "⤖",
+ "Rcaron": "Ř",
+ "Rcedil": "Ŗ",
+ "Rcy": "Р",
+ "Re": "ℜ",
+ "ReverseElement": "∋",
+ "ReverseEquilibrium": "⇋",
+ "ReverseUpEquilibrium": "⥯",
+ "Rfr": "ℜ",
+ "Rho": "Ρ",
+ "RightAngleBracket": "⟩",
+ "RightArrow": "→",
+ "RightArrowBar": "⇥",
+ "RightArrowLeftArrow": "⇄",
+ "RightCeiling": "⌉",
+ "RightDoubleBracket": "⟧",
+ "RightDownTeeVector": "⥝",
+ "RightDownVector": "⇂",
+ "RightDownVectorBar": "⥕",
+ "RightFloor": "⌋",
+ "RightTee": "⊢",
+ "RightTeeArrow": "↦",
+ "RightTeeVector": "⥛",
+ "RightTriangle": "⊳",
+ "RightTriangleBar": "⧐",
+ "RightTriangleEqual": "⊵",
+ "RightUpDownVector": "⥏",
+ "RightUpTeeVector": "⥜",
+ "RightUpVector": "↾",
+ "RightUpVectorBar": "⥔",
+ "RightVector": "⇀",
+ "RightVectorBar": "⥓",
+ "Rightarrow": "⇒",
+ "Ropf": "ℝ",
+ "RoundImplies": "⥰",
+ "Rrightarrow": "⇛",
+ "Rscr": "ℛ",
+ "Rsh": "↱",
+ "RuleDelayed": "⧴",
+ "SHCHcy": "Щ",
+ "SHcy": "Ш",
+ "SOFTcy": "Ь",
+ "Sacute": "Ś",
+ "Sc": "⪼",
+ "Scaron": "Š",
+ "Scedil": "Ş",
+ "Scirc": "Ŝ",
+ "Scy": "С",
+ "Sfr": "𝔖",
+ "ShortDownArrow": "↓",
+ "ShortLeftArrow": "←",
+ "ShortRightArrow": "→",
+ "ShortUpArrow": "↑",
+ "Sigma": "Σ",
+ "SmallCircle": "∘",
+ "Sopf": "𝕊",
+ "Sqrt": "√",
+ "Square": "□",
+ "SquareIntersection": "⊓",
+ "SquareSubset": "⊏",
+ "SquareSubsetEqual": "⊑",
+ "SquareSuperset": "⊐",
+ "SquareSupersetEqual": "⊒",
+ "SquareUnion": "⊔",
+ "Sscr": "𝒮",
+ "Star": "⋆",
+ "Sub": "⋐",
+ "Subset": "⋐",
+ "SubsetEqual": "⊆",
+ "Succeeds": "≻",
+ "SucceedsEqual": "⪰",
+ "SucceedsSlantEqual": "≽",
+ "SucceedsTilde": "≿",
+ "SuchThat": "∋",
+ "Sum": "∑",
+ "Sup": "⋑",
+ "Superset": "⊃",
+ "SupersetEqual": "⊇",
+ "Supset": "⋑",
+ "THOR": "Þ",
+ "THORN": "Þ",
+ "TRADE": "™",
+ "TSHcy": "Ћ",
+ "TScy": "Ц",
+ "Tab": "\t",
+ "Tau": "Τ",
+ "Tcaron": "Ť",
+ "Tcedil": "Ţ",
+ "Tcy": "Т",
+ "Tfr": "𝔗",
+ "Therefore": "∴",
+ "Theta": "Θ",
+ "ThickSpace": "  ",
+ "ThinSpace": " ",
+ "Tilde": "∼",
+ "TildeEqual": "≃",
+ "TildeFullEqual": "≅",
+ "TildeTilde": "≈",
+ "Topf": "𝕋",
+ "TripleDot": "⃛",
+ "Tscr": "𝒯",
+ "Tstrok": "Ŧ",
+ "Uacut": "Ú",
+ "Uacute": "Ú",
+ "Uarr": "↟",
+ "Uarrocir": "⥉",
+ "Ubrcy": "Ў",
+ "Ubreve": "Ŭ",
+ "Ucir": "Û",
+ "Ucirc": "Û",
+ "Ucy": "У",
+ "Udblac": "Ű",
+ "Ufr": "𝔘",
+ "Ugrav": "Ù",
+ "Ugrave": "Ù",
+ "Umacr": "Ū",
+ "UnderBar": "_",
+ "UnderBrace": "⏟",
+ "UnderBracket": "⎵",
+ "UnderParenthesis": "⏝",
+ "Union": "⋃",
+ "UnionPlus": "⊎",
+ "Uogon": "Ų",
+ "Uopf": "𝕌",
+ "UpArrow": "↑",
+ "UpArrowBar": "⤒",
+ "UpArrowDownArrow": "⇅",
+ "UpDownArrow": "↕",
+ "UpEquilibrium": "⥮",
+ "UpTee": "⊥",
+ "UpTeeArrow": "↥",
+ "Uparrow": "⇑",
+ "Updownarrow": "⇕",
+ "UpperLeftArrow": "↖",
+ "UpperRightArrow": "↗",
+ "Upsi": "ϒ",
+ "Upsilon": "Υ",
+ "Uring": "Ů",
+ "Uscr": "𝒰",
+ "Utilde": "Ũ",
+ "Uum": "Ü",
+ "Uuml": "Ü",
+ "VDash": "⊫",
+ "Vbar": "⫫",
+ "Vcy": "В",
+ "Vdash": "⊩",
+ "Vdashl": "⫦",
+ "Vee": "⋁",
+ "Verbar": "‖",
+ "Vert": "‖",
+ "VerticalBar": "∣",
+ "VerticalLine": "|",
+ "VerticalSeparator": "❘",
+ "VerticalTilde": "≀",
+ "VeryThinSpace": " ",
+ "Vfr": "𝔙",
+ "Vopf": "𝕍",
+ "Vscr": "𝒱",
+ "Vvdash": "⊪",
+ "Wcirc": "Ŵ",
+ "Wedge": "⋀",
+ "Wfr": "𝔚",
+ "Wopf": "𝕎",
+ "Wscr": "𝒲",
+ "Xfr": "𝔛",
+ "Xi": "Ξ",
+ "Xopf": "𝕏",
+ "Xscr": "𝒳",
+ "YAcy": "Я",
+ "YIcy": "Ї",
+ "YUcy": "Ю",
+ "Yacut": "Ý",
+ "Yacute": "Ý",
+ "Ycirc": "Ŷ",
+ "Ycy": "Ы",
+ "Yfr": "𝔜",
+ "Yopf": "𝕐",
+ "Yscr": "𝒴",
+ "Yuml": "Ÿ",
+ "ZHcy": "Ж",
+ "Zacute": "Ź",
+ "Zcaron": "Ž",
+ "Zcy": "З",
+ "Zdot": "Ż",
+ "ZeroWidthSpace": "​",
+ "Zeta": "Ζ",
+ "Zfr": "ℨ",
+ "Zopf": "ℤ",
+ "Zscr": "𝒵",
+ "aacut": "á",
+ "aacute": "á",
+ "abreve": "ă",
+ "ac": "∾",
+ "acE": "∾̳",
+ "acd": "∿",
+ "acir": "â",
+ "acirc": "â",
+ "acut": "´",
+ "acute": "´",
+ "acy": "а",
+ "aeli": "æ",
+ "aelig": "æ",
+ "af": "⁡",
+ "afr": "𝔞",
+ "agrav": "à",
+ "agrave": "à",
+ "alefsym": "ℵ",
+ "aleph": "ℵ",
+ "alpha": "α",
+ "amacr": "ā",
+ "amalg": "⨿",
+ "am": "&",
+ "amp": "&",
+ "and": "∧",
+ "andand": "⩕",
+ "andd": "⩜",
+ "andslope": "⩘",
+ "andv": "⩚",
+ "ang": "∠",
+ "ange": "⦤",
+ "angle": "∠",
+ "angmsd": "∡",
+ "angmsdaa": "⦨",
+ "angmsdab": "⦩",
+ "angmsdac": "⦪",
+ "angmsdad": "⦫",
+ "angmsdae": "⦬",
+ "angmsdaf": "⦭",
+ "angmsdag": "⦮",
+ "angmsdah": "⦯",
+ "angrt": "∟",
+ "angrtvb": "⊾",
+ "angrtvbd": "⦝",
+ "angsph": "∢",
+ "angst": "Å",
+ "angzarr": "⍼",
+ "aogon": "ą",
+ "aopf": "𝕒",
+ "ap": "≈",
+ "apE": "⩰",
+ "apacir": "⩯",
+ "ape": "≊",
+ "apid": "≋",
+ "apos": "'",
+ "approx": "≈",
+ "approxeq": "≊",
+ "arin": "å",
+ "aring": "å",
+ "ascr": "𝒶",
+ "ast": "*",
+ "asymp": "≈",
+ "asympeq": "≍",
+ "atild": "ã",
+ "atilde": "ã",
+ "aum": "ä",
+ "auml": "ä",
+ "awconint": "∳",
+ "awint": "⨑",
+ "bNot": "⫭",
+ "backcong": "≌",
+ "backepsilon": "϶",
+ "backprime": "‵",
+ "backsim": "∽",
+ "backsimeq": "⋍",
+ "barvee": "⊽",
+ "barwed": "⌅",
+ "barwedge": "⌅",
+ "bbrk": "⎵",
+ "bbrktbrk": "⎶",
+ "bcong": "≌",
+ "bcy": "б",
+ "bdquo": "„",
+ "becaus": "∵",
+ "because": "∵",
+ "bemptyv": "⦰",
+ "bepsi": "϶",
+ "bernou": "ℬ",
+ "beta": "β",
+ "beth": "ℶ",
+ "between": "≬",
+ "bfr": "𝔟",
+ "bigcap": "⋂",
+ "bigcirc": "◯",
+ "bigcup": "⋃",
+ "bigodot": "⨀",
+ "bigoplus": "⨁",
+ "bigotimes": "⨂",
+ "bigsqcup": "⨆",
+ "bigstar": "★",
+ "bigtriangledown": "▽",
+ "bigtriangleup": "△",
+ "biguplus": "⨄",
+ "bigvee": "⋁",
+ "bigwedge": "⋀",
+ "bkarow": "⤍",
+ "blacklozenge": "⧫",
+ "blacksquare": "▪",
+ "blacktriangle": "▴",
+ "blacktriangledown": "▾",
+ "blacktriangleleft": "◂",
+ "blacktriangleright": "▸",
+ "blank": "␣",
+ "blk12": "▒",
+ "blk14": "░",
+ "blk34": "▓",
+ "block": "█",
+ "bne": "=⃥",
+ "bnequiv": "≡⃥",
+ "bnot": "⌐",
+ "bopf": "𝕓",
+ "bot": "⊥",
+ "bottom": "⊥",
+ "bowtie": "⋈",
+ "boxDL": "╗",
+ "boxDR": "╔",
+ "boxDl": "╖",
+ "boxDr": "╓",
+ "boxH": "═",
+ "boxHD": "╦",
+ "boxHU": "╩",
+ "boxHd": "╤",
+ "boxHu": "╧",
+ "boxUL": "╝",
+ "boxUR": "╚",
+ "boxUl": "╜",
+ "boxUr": "╙",
+ "boxV": "║",
+ "boxVH": "╬",
+ "boxVL": "╣",
+ "boxVR": "╠",
+ "boxVh": "╫",
+ "boxVl": "╢",
+ "boxVr": "╟",
+ "boxbox": "⧉",
+ "boxdL": "╕",
+ "boxdR": "╒",
+ "boxdl": "┐",
+ "boxdr": "┌",
+ "boxh": "─",
+ "boxhD": "╥",
+ "boxhU": "╨",
+ "boxhd": "┬",
+ "boxhu": "┴",
+ "boxminus": "⊟",
+ "boxplus": "⊞",
+ "boxtimes": "⊠",
+ "boxuL": "╛",
+ "boxuR": "╘",
+ "boxul": "┘",
+ "boxur": "└",
+ "boxv": "│",
+ "boxvH": "╪",
+ "boxvL": "╡",
+ "boxvR": "╞",
+ "boxvh": "┼",
+ "boxvl": "┤",
+ "boxvr": "├",
+ "bprime": "‵",
+ "breve": "˘",
+ "brvba": "¦",
+ "brvbar": "¦",
+ "bscr": "𝒷",
+ "bsemi": "⁏",
+ "bsim": "∽",
+ "bsime": "⋍",
+ "bsol": "\\",
+ "bsolb": "⧅",
+ "bsolhsub": "⟈",
+ "bull": "•",
+ "bullet": "•",
+ "bump": "≎",
+ "bumpE": "⪮",
+ "bumpe": "≏",
+ "bumpeq": "≏",
+ "cacute": "ć",
+ "cap": "∩",
+ "capand": "⩄",
+ "capbrcup": "⩉",
+ "capcap": "⩋",
+ "capcup": "⩇",
+ "capdot": "⩀",
+ "caps": "∩︀",
+ "caret": "⁁",
+ "caron": "ˇ",
+ "ccaps": "⩍",
+ "ccaron": "č",
+ "ccedi": "ç",
+ "ccedil": "ç",
+ "ccirc": "ĉ",
+ "ccups": "⩌",
+ "ccupssm": "⩐",
+ "cdot": "ċ",
+ "cedi": "¸",
+ "cedil": "¸",
+ "cemptyv": "⦲",
+ "cen": "¢",
+ "cent": "¢",
+ "centerdot": "·",
+ "cfr": "𝔠",
+ "chcy": "ч",
+ "check": "✓",
+ "checkmark": "✓",
+ "chi": "χ",
+ "cir": "○",
+ "cirE": "⧃",
+ "circ": "ˆ",
+ "circeq": "≗",
+ "circlearrowleft": "↺",
+ "circlearrowright": "↻",
+ "circledR": "®",
+ "circledS": "Ⓢ",
+ "circledast": "⊛",
+ "circledcirc": "⊚",
+ "circleddash": "⊝",
+ "cire": "≗",
+ "cirfnint": "⨐",
+ "cirmid": "⫯",
+ "cirscir": "⧂",
+ "clubs": "♣",
+ "clubsuit": "♣",
+ "colon": ":",
+ "colone": "≔",
+ "coloneq": "≔",
+ "comma": ",",
+ "commat": "@",
+ "comp": "∁",
+ "compfn": "∘",
+ "complement": "∁",
+ "complexes": "ℂ",
+ "cong": "≅",
+ "congdot": "⩭",
+ "conint": "∮",
+ "copf": "𝕔",
+ "coprod": "∐",
+ "cop": "©",
+ "copy": "©",
+ "copysr": "℗",
+ "crarr": "↵",
+ "cross": "✗",
+ "cscr": "𝒸",
+ "csub": "⫏",
+ "csube": "⫑",
+ "csup": "⫐",
+ "csupe": "⫒",
+ "ctdot": "⋯",
+ "cudarrl": "⤸",
+ "cudarrr": "⤵",
+ "cuepr": "⋞",
+ "cuesc": "⋟",
+ "cularr": "↶",
+ "cularrp": "⤽",
+ "cup": "∪",
+ "cupbrcap": "⩈",
+ "cupcap": "⩆",
+ "cupcup": "⩊",
+ "cupdot": "⊍",
+ "cupor": "⩅",
+ "cups": "∪︀",
+ "curarr": "↷",
+ "curarrm": "⤼",
+ "curlyeqprec": "⋞",
+ "curlyeqsucc": "⋟",
+ "curlyvee": "⋎",
+ "curlywedge": "⋏",
+ "curre": "¤",
+ "curren": "¤",
+ "curvearrowleft": "↶",
+ "curvearrowright": "↷",
+ "cuvee": "⋎",
+ "cuwed": "⋏",
+ "cwconint": "∲",
+ "cwint": "∱",
+ "cylcty": "⌭",
+ "dArr": "⇓",
+ "dHar": "⥥",
+ "dagger": "†",
+ "daleth": "ℸ",
+ "darr": "↓",
+ "dash": "‐",
+ "dashv": "⊣",
+ "dbkarow": "⤏",
+ "dblac": "˝",
+ "dcaron": "ď",
+ "dcy": "д",
+ "dd": "ⅆ",
+ "ddagger": "‡",
+ "ddarr": "⇊",
+ "ddotseq": "⩷",
+ "de": "°",
+ "deg": "°",
+ "delta": "δ",
+ "demptyv": "⦱",
+ "dfisht": "⥿",
+ "dfr": "𝔡",
+ "dharl": "⇃",
+ "dharr": "⇂",
+ "diam": "⋄",
+ "diamond": "⋄",
+ "diamondsuit": "♦",
+ "diams": "♦",
+ "die": "¨",
+ "digamma": "ϝ",
+ "disin": "⋲",
+ "div": "÷",
+ "divid": "÷",
+ "divide": "÷",
+ "divideontimes": "⋇",
+ "divonx": "⋇",
+ "djcy": "ђ",
+ "dlcorn": "⌞",
+ "dlcrop": "⌍",
+ "dollar": "$",
+ "dopf": "𝕕",
+ "dot": "˙",
+ "doteq": "≐",
+ "doteqdot": "≑",
+ "dotminus": "∸",
+ "dotplus": "∔",
+ "dotsquare": "⊡",
+ "doublebarwedge": "⌆",
+ "downarrow": "↓",
+ "downdownarrows": "⇊",
+ "downharpoonleft": "⇃",
+ "downharpoonright": "⇂",
+ "drbkarow": "⤐",
+ "drcorn": "⌟",
+ "drcrop": "⌌",
+ "dscr": "𝒹",
+ "dscy": "ѕ",
+ "dsol": "⧶",
+ "dstrok": "đ",
+ "dtdot": "⋱",
+ "dtri": "▿",
+ "dtrif": "▾",
+ "duarr": "⇵",
+ "duhar": "⥯",
+ "dwangle": "⦦",
+ "dzcy": "џ",
+ "dzigrarr": "⟿",
+ "eDDot": "⩷",
+ "eDot": "≑",
+ "eacut": "é",
+ "eacute": "é",
+ "easter": "⩮",
+ "ecaron": "ě",
+ "ecir": "ê",
+ "ecirc": "ê",
+ "ecolon": "≕",
+ "ecy": "э",
+ "edot": "ė",
+ "ee": "ⅇ",
+ "efDot": "≒",
+ "efr": "𝔢",
+ "eg": "⪚",
+ "egrav": "è",
+ "egrave": "è",
+ "egs": "⪖",
+ "egsdot": "⪘",
+ "el": "⪙",
+ "elinters": "⏧",
+ "ell": "ℓ",
+ "els": "⪕",
+ "elsdot": "⪗",
+ "emacr": "ē",
+ "empty": "∅",
+ "emptyset": "∅",
+ "emptyv": "∅",
+ "emsp13": " ",
+ "emsp14": " ",
+ "emsp": " ",
+ "eng": "ŋ",
+ "ensp": " ",
+ "eogon": "ę",
+ "eopf": "𝕖",
+ "epar": "⋕",
+ "eparsl": "⧣",
+ "eplus": "⩱",
+ "epsi": "ε",
+ "epsilon": "ε",
+ "epsiv": "ϵ",
+ "eqcirc": "≖",
+ "eqcolon": "≕",
+ "eqsim": "≂",
+ "eqslantgtr": "⪖",
+ "eqslantless": "⪕",
+ "equals": "=",
+ "equest": "≟",
+ "equiv": "≡",
+ "equivDD": "⩸",
+ "eqvparsl": "⧥",
+ "erDot": "≓",
+ "erarr": "⥱",
+ "escr": "ℯ",
+ "esdot": "≐",
+ "esim": "≂",
+ "eta": "η",
+ "et": "ð",
+ "eth": "ð",
+ "eum": "ë",
+ "euml": "ë",
+ "euro": "€",
+ "excl": "!",
+ "exist": "∃",
+ "expectation": "ℰ",
+ "exponentiale": "ⅇ",
+ "fallingdotseq": "≒",
+ "fcy": "ф",
+ "female": "♀",
+ "ffilig": "ffi",
+ "fflig": "ff",
+ "ffllig": "ffl",
+ "ffr": "𝔣",
+ "filig": "fi",
+ "fjlig": "fj",
+ "flat": "♭",
+ "fllig": "fl",
+ "fltns": "▱",
+ "fnof": "ƒ",
+ "fopf": "𝕗",
+ "forall": "∀",
+ "fork": "⋔",
+ "forkv": "⫙",
+ "fpartint": "⨍",
+ "frac1": "¼",
+ "frac12": "½",
+ "frac13": "⅓",
+ "frac14": "¼",
+ "frac15": "⅕",
+ "frac16": "⅙",
+ "frac18": "⅛",
+ "frac23": "⅔",
+ "frac25": "⅖",
+ "frac3": "¾",
+ "frac34": "¾",
+ "frac35": "⅗",
+ "frac38": "⅜",
+ "frac45": "⅘",
+ "frac56": "⅚",
+ "frac58": "⅝",
+ "frac78": "⅞",
+ "frasl": "⁄",
+ "frown": "⌢",
+ "fscr": "𝒻",
+ "gE": "≧",
+ "gEl": "⪌",
+ "gacute": "ǵ",
+ "gamma": "γ",
+ "gammad": "ϝ",
+ "gap": "⪆",
+ "gbreve": "ğ",
+ "gcirc": "ĝ",
+ "gcy": "г",
+ "gdot": "ġ",
+ "ge": "≥",
+ "gel": "⋛",
+ "geq": "≥",
+ "geqq": "≧",
+ "geqslant": "⩾",
+ "ges": "⩾",
+ "gescc": "⪩",
+ "gesdot": "⪀",
+ "gesdoto": "⪂",
+ "gesdotol": "⪄",
+ "gesl": "⋛︀",
+ "gesles": "⪔",
+ "gfr": "𝔤",
+ "gg": "≫",
+ "ggg": "⋙",
+ "gimel": "ℷ",
+ "gjcy": "ѓ",
+ "gl": "≷",
+ "glE": "⪒",
+ "gla": "⪥",
+ "glj": "⪤",
+ "gnE": "≩",
+ "gnap": "⪊",
+ "gnapprox": "⪊",
+ "gne": "⪈",
+ "gneq": "⪈",
+ "gneqq": "≩",
+ "gnsim": "⋧",
+ "gopf": "𝕘",
+ "grave": "`",
+ "gscr": "ℊ",
+ "gsim": "≳",
+ "gsime": "⪎",
+ "gsiml": "⪐",
+ "g": ">",
+ "gt": ">",
+ "gtcc": "⪧",
+ "gtcir": "⩺",
+ "gtdot": "⋗",
+ "gtlPar": "⦕",
+ "gtquest": "⩼",
+ "gtrapprox": "⪆",
+ "gtrarr": "⥸",
+ "gtrdot": "⋗",
+ "gtreqless": "⋛",
+ "gtreqqless": "⪌",
+ "gtrless": "≷",
+ "gtrsim": "≳",
+ "gvertneqq": "≩︀",
+ "gvnE": "≩︀",
+ "hArr": "⇔",
+ "hairsp": " ",
+ "half": "½",
+ "hamilt": "ℋ",
+ "hardcy": "ъ",
+ "harr": "↔",
+ "harrcir": "⥈",
+ "harrw": "↭",
+ "hbar": "ℏ",
+ "hcirc": "ĥ",
+ "hearts": "♥",
+ "heartsuit": "♥",
+ "hellip": "…",
+ "hercon": "⊹",
+ "hfr": "𝔥",
+ "hksearow": "⤥",
+ "hkswarow": "⤦",
+ "hoarr": "⇿",
+ "homtht": "∻",
+ "hookleftarrow": "↩",
+ "hookrightarrow": "↪",
+ "hopf": "𝕙",
+ "horbar": "―",
+ "hscr": "𝒽",
+ "hslash": "ℏ",
+ "hstrok": "ħ",
+ "hybull": "⁃",
+ "hyphen": "‐",
+ "iacut": "í",
+ "iacute": "í",
+ "ic": "⁣",
+ "icir": "î",
+ "icirc": "î",
+ "icy": "и",
+ "iecy": "е",
+ "iexc": "¡",
+ "iexcl": "¡",
+ "iff": "⇔",
+ "ifr": "𝔦",
+ "igrav": "ì",
+ "igrave": "ì",
+ "ii": "ⅈ",
+ "iiiint": "⨌",
+ "iiint": "∭",
+ "iinfin": "⧜",
+ "iiota": "℩",
+ "ijlig": "ij",
+ "imacr": "ī",
+ "image": "ℑ",
+ "imagline": "ℐ",
+ "imagpart": "ℑ",
+ "imath": "ı",
+ "imof": "⊷",
+ "imped": "Ƶ",
+ "in": "∈",
+ "incare": "℅",
+ "infin": "∞",
+ "infintie": "⧝",
+ "inodot": "ı",
+ "int": "∫",
+ "intcal": "⊺",
+ "integers": "ℤ",
+ "intercal": "⊺",
+ "intlarhk": "⨗",
+ "intprod": "⨼",
+ "iocy": "ё",
+ "iogon": "į",
+ "iopf": "𝕚",
+ "iota": "ι",
+ "iprod": "⨼",
+ "iques": "¿",
+ "iquest": "¿",
+ "iscr": "𝒾",
+ "isin": "∈",
+ "isinE": "⋹",
+ "isindot": "⋵",
+ "isins": "⋴",
+ "isinsv": "⋳",
+ "isinv": "∈",
+ "it": "⁢",
+ "itilde": "ĩ",
+ "iukcy": "і",
+ "ium": "ï",
+ "iuml": "ï",
+ "jcirc": "ĵ",
+ "jcy": "й",
+ "jfr": "𝔧",
+ "jmath": "ȷ",
+ "jopf": "𝕛",
+ "jscr": "𝒿",
+ "jsercy": "ј",
+ "jukcy": "є",
+ "kappa": "κ",
+ "kappav": "ϰ",
+ "kcedil": "ķ",
+ "kcy": "к",
+ "kfr": "𝔨",
+ "kgreen": "ĸ",
+ "khcy": "х",
+ "kjcy": "ќ",
+ "kopf": "𝕜",
+ "kscr": "𝓀",
+ "lAarr": "⇚",
+ "lArr": "⇐",
+ "lAtail": "⤛",
+ "lBarr": "⤎",
+ "lE": "≦",
+ "lEg": "⪋",
+ "lHar": "⥢",
+ "lacute": "ĺ",
+ "laemptyv": "⦴",
+ "lagran": "ℒ",
+ "lambda": "λ",
+ "lang": "⟨",
+ "langd": "⦑",
+ "langle": "⟨",
+ "lap": "⪅",
+ "laqu": "«",
+ "laquo": "«",
+ "larr": "←",
+ "larrb": "⇤",
+ "larrbfs": "⤟",
+ "larrfs": "⤝",
+ "larrhk": "↩",
+ "larrlp": "↫",
+ "larrpl": "⤹",
+ "larrsim": "⥳",
+ "larrtl": "↢",
+ "lat": "⪫",
+ "latail": "⤙",
+ "late": "⪭",
+ "lates": "⪭︀",
+ "lbarr": "⤌",
+ "lbbrk": "❲",
+ "lbrace": "{",
+ "lbrack": "[",
+ "lbrke": "⦋",
+ "lbrksld": "⦏",
+ "lbrkslu": "⦍",
+ "lcaron": "ľ",
+ "lcedil": "ļ",
+ "lceil": "⌈",
+ "lcub": "{",
+ "lcy": "л",
+ "ldca": "⤶",
+ "ldquo": "“",
+ "ldquor": "„",
+ "ldrdhar": "⥧",
+ "ldrushar": "⥋",
+ "ldsh": "↲",
+ "le": "≤",
+ "leftarrow": "←",
+ "leftarrowtail": "↢",
+ "leftharpoondown": "↽",
+ "leftharpoonup": "↼",
+ "leftleftarrows": "⇇",
+ "leftrightarrow": "↔",
+ "leftrightarrows": "⇆",
+ "leftrightharpoons": "⇋",
+ "leftrightsquigarrow": "↭",
+ "leftthreetimes": "⋋",
+ "leg": "⋚",
+ "leq": "≤",
+ "leqq": "≦",
+ "leqslant": "⩽",
+ "les": "⩽",
+ "lescc": "⪨",
+ "lesdot": "⩿",
+ "lesdoto": "⪁",
+ "lesdotor": "⪃",
+ "lesg": "⋚︀",
+ "lesges": "⪓",
+ "lessapprox": "⪅",
+ "lessdot": "⋖",
+ "lesseqgtr": "⋚",
+ "lesseqqgtr": "⪋",
+ "lessgtr": "≶",
+ "lesssim": "≲",
+ "lfisht": "⥼",
+ "lfloor": "⌊",
+ "lfr": "𝔩",
+ "lg": "≶",
+ "lgE": "⪑",
+ "lhard": "↽",
+ "lharu": "↼",
+ "lharul": "⥪",
+ "lhblk": "▄",
+ "ljcy": "љ",
+ "ll": "≪",
+ "llarr": "⇇",
+ "llcorner": "⌞",
+ "llhard": "⥫",
+ "lltri": "◺",
+ "lmidot": "ŀ",
+ "lmoust": "⎰",
+ "lmoustache": "⎰",
+ "lnE": "≨",
+ "lnap": "⪉",
+ "lnapprox": "⪉",
+ "lne": "⪇",
+ "lneq": "⪇",
+ "lneqq": "≨",
+ "lnsim": "⋦",
+ "loang": "⟬",
+ "loarr": "⇽",
+ "lobrk": "⟦",
+ "longleftarrow": "⟵",
+ "longleftrightarrow": "⟷",
+ "longmapsto": "⟼",
+ "longrightarrow": "⟶",
+ "looparrowleft": "↫",
+ "looparrowright": "↬",
+ "lopar": "⦅",
+ "lopf": "𝕝",
+ "loplus": "⨭",
+ "lotimes": "⨴",
+ "lowast": "∗",
+ "lowbar": "_",
+ "loz": "◊",
+ "lozenge": "◊",
+ "lozf": "⧫",
+ "lpar": "(",
+ "lparlt": "⦓",
+ "lrarr": "⇆",
+ "lrcorner": "⌟",
+ "lrhar": "⇋",
+ "lrhard": "⥭",
+ "lrm": "‎",
+ "lrtri": "⊿",
+ "lsaquo": "‹",
+ "lscr": "𝓁",
+ "lsh": "↰",
+ "lsim": "≲",
+ "lsime": "⪍",
+ "lsimg": "⪏",
+ "lsqb": "[",
+ "lsquo": "‘",
+ "lsquor": "‚",
+ "lstrok": "ł",
+ "l": "<",
+ "lt": "<",
+ "ltcc": "⪦",
+ "ltcir": "⩹",
+ "ltdot": "⋖",
+ "lthree": "⋋",
+ "ltimes": "⋉",
+ "ltlarr": "⥶",
+ "ltquest": "⩻",
+ "ltrPar": "⦖",
+ "ltri": "◃",
+ "ltrie": "⊴",
+ "ltrif": "◂",
+ "lurdshar": "⥊",
+ "luruhar": "⥦",
+ "lvertneqq": "≨︀",
+ "lvnE": "≨︀",
+ "mDDot": "∺",
+ "mac": "¯",
+ "macr": "¯",
+ "male": "♂",
+ "malt": "✠",
+ "maltese": "✠",
+ "map": "↦",
+ "mapsto": "↦",
+ "mapstodown": "↧",
+ "mapstoleft": "↤",
+ "mapstoup": "↥",
+ "marker": "▮",
+ "mcomma": "⨩",
+ "mcy": "м",
+ "mdash": "—",
+ "measuredangle": "∡",
+ "mfr": "𝔪",
+ "mho": "℧",
+ "micr": "µ",
+ "micro": "µ",
+ "mid": "∣",
+ "midast": "*",
+ "midcir": "⫰",
+ "middo": "·",
+ "middot": "·",
+ "minus": "−",
+ "minusb": "⊟",
+ "minusd": "∸",
+ "minusdu": "⨪",
+ "mlcp": "⫛",
+ "mldr": "…",
+ "mnplus": "∓",
+ "models": "⊧",
+ "mopf": "𝕞",
+ "mp": "∓",
+ "mscr": "𝓂",
+ "mstpos": "∾",
+ "mu": "μ",
+ "multimap": "⊸",
+ "mumap": "⊸",
+ "nGg": "⋙̸",
+ "nGt": "≫⃒",
+ "nGtv": "≫̸",
+ "nLeftarrow": "⇍",
+ "nLeftrightarrow": "⇎",
+ "nLl": "⋘̸",
+ "nLt": "≪⃒",
+ "nLtv": "≪̸",
+ "nRightarrow": "⇏",
+ "nVDash": "⊯",
+ "nVdash": "⊮",
+ "nabla": "∇",
+ "nacute": "ń",
+ "nang": "∠⃒",
+ "nap": "≉",
+ "napE": "⩰̸",
+ "napid": "≋̸",
+ "napos": "ʼn",
+ "napprox": "≉",
+ "natur": "♮",
+ "natural": "♮",
+ "naturals": "ℕ",
+ "nbs": " ",
+ "nbsp": " ",
+ "nbump": "≎̸",
+ "nbumpe": "≏̸",
+ "ncap": "⩃",
+ "ncaron": "ň",
+ "ncedil": "ņ",
+ "ncong": "≇",
+ "ncongdot": "⩭̸",
+ "ncup": "⩂",
+ "ncy": "н",
+ "ndash": "–",
+ "ne": "≠",
+ "neArr": "⇗",
+ "nearhk": "⤤",
+ "nearr": "↗",
+ "nearrow": "↗",
+ "nedot": "≐̸",
+ "nequiv": "≢",
+ "nesear": "⤨",
+ "nesim": "≂̸",
+ "nexist": "∄",
+ "nexists": "∄",
+ "nfr": "𝔫",
+ "ngE": "≧̸",
+ "nge": "≱",
+ "ngeq": "≱",
+ "ngeqq": "≧̸",
+ "ngeqslant": "⩾̸",
+ "nges": "⩾̸",
+ "ngsim": "≵",
+ "ngt": "≯",
+ "ngtr": "≯",
+ "nhArr": "⇎",
+ "nharr": "↮",
+ "nhpar": "⫲",
+ "ni": "∋",
+ "nis": "⋼",
+ "nisd": "⋺",
+ "niv": "∋",
+ "njcy": "њ",
+ "nlArr": "⇍",
+ "nlE": "≦̸",
+ "nlarr": "↚",
+ "nldr": "‥",
+ "nle": "≰",
+ "nleftarrow": "↚",
+ "nleftrightarrow": "↮",
+ "nleq": "≰",
+ "nleqq": "≦̸",
+ "nleqslant": "⩽̸",
+ "nles": "⩽̸",
+ "nless": "≮",
+ "nlsim": "≴",
+ "nlt": "≮",
+ "nltri": "⋪",
+ "nltrie": "⋬",
+ "nmid": "∤",
+ "nopf": "𝕟",
+ "no": "¬",
+ "not": "¬",
+ "notin": "∉",
+ "notinE": "⋹̸",
+ "notindot": "⋵̸",
+ "notinva": "∉",
+ "notinvb": "⋷",
+ "notinvc": "⋶",
+ "notni": "∌",
+ "notniva": "∌",
+ "notnivb": "⋾",
+ "notnivc": "⋽",
+ "npar": "∦",
+ "nparallel": "∦",
+ "nparsl": "⫽⃥",
+ "npart": "∂̸",
+ "npolint": "⨔",
+ "npr": "⊀",
+ "nprcue": "⋠",
+ "npre": "⪯̸",
+ "nprec": "⊀",
+ "npreceq": "⪯̸",
+ "nrArr": "⇏",
+ "nrarr": "↛",
+ "nrarrc": "⤳̸",
+ "nrarrw": "↝̸",
+ "nrightarrow": "↛",
+ "nrtri": "⋫",
+ "nrtrie": "⋭",
+ "nsc": "⊁",
+ "nsccue": "⋡",
+ "nsce": "⪰̸",
+ "nscr": "𝓃",
+ "nshortmid": "∤",
+ "nshortparallel": "∦",
+ "nsim": "≁",
+ "nsime": "≄",
+ "nsimeq": "≄",
+ "nsmid": "∤",
+ "nspar": "∦",
+ "nsqsube": "⋢",
+ "nsqsupe": "⋣",
+ "nsub": "⊄",
+ "nsubE": "⫅̸",
+ "nsube": "⊈",
+ "nsubset": "⊂⃒",
+ "nsubseteq": "⊈",
+ "nsubseteqq": "⫅̸",
+ "nsucc": "⊁",
+ "nsucceq": "⪰̸",
+ "nsup": "⊅",
+ "nsupE": "⫆̸",
+ "nsupe": "⊉",
+ "nsupset": "⊃⃒",
+ "nsupseteq": "⊉",
+ "nsupseteqq": "⫆̸",
+ "ntgl": "≹",
+ "ntild": "ñ",
+ "ntilde": "ñ",
+ "ntlg": "≸",
+ "ntriangleleft": "⋪",
+ "ntrianglelefteq": "⋬",
+ "ntriangleright": "⋫",
+ "ntrianglerighteq": "⋭",
+ "nu": "ν",
+ "num": "#",
+ "numero": "№",
+ "numsp": " ",
+ "nvDash": "⊭",
+ "nvHarr": "⤄",
+ "nvap": "≍⃒",
+ "nvdash": "⊬",
+ "nvge": "≥⃒",
+ "nvgt": ">⃒",
+ "nvinfin": "⧞",
+ "nvlArr": "⤂",
+ "nvle": "≤⃒",
+ "nvlt": "<⃒",
+ "nvltrie": "⊴⃒",
+ "nvrArr": "⤃",
+ "nvrtrie": "⊵⃒",
+ "nvsim": "∼⃒",
+ "nwArr": "⇖",
+ "nwarhk": "⤣",
+ "nwarr": "↖",
+ "nwarrow": "↖",
+ "nwnear": "⤧",
+ "oS": "Ⓢ",
+ "oacut": "ó",
+ "oacute": "ó",
+ "oast": "⊛",
+ "ocir": "ô",
+ "ocirc": "ô",
+ "ocy": "о",
+ "odash": "⊝",
+ "odblac": "ő",
+ "odiv": "⨸",
+ "odot": "⊙",
+ "odsold": "⦼",
+ "oelig": "œ",
+ "ofcir": "⦿",
+ "ofr": "𝔬",
+ "ogon": "˛",
+ "ograv": "ò",
+ "ograve": "ò",
+ "ogt": "⧁",
+ "ohbar": "⦵",
+ "ohm": "Ω",
+ "oint": "∮",
+ "olarr": "↺",
+ "olcir": "⦾",
+ "olcross": "⦻",
+ "oline": "‾",
+ "olt": "⧀",
+ "omacr": "ō",
+ "omega": "ω",
+ "omicron": "ο",
+ "omid": "⦶",
+ "ominus": "⊖",
+ "oopf": "𝕠",
+ "opar": "⦷",
+ "operp": "⦹",
+ "oplus": "⊕",
+ "or": "∨",
+ "orarr": "↻",
+ "ord": "º",
+ "order": "ℴ",
+ "orderof": "ℴ",
+ "ordf": "ª",
+ "ordm": "º",
+ "origof": "⊶",
+ "oror": "⩖",
+ "orslope": "⩗",
+ "orv": "⩛",
+ "oscr": "ℴ",
+ "oslas": "ø",
+ "oslash": "ø",
+ "osol": "⊘",
+ "otild": "õ",
+ "otilde": "õ",
+ "otimes": "⊗",
+ "otimesas": "⨶",
+ "oum": "ö",
+ "ouml": "ö",
+ "ovbar": "⌽",
+ "par": "¶",
+ "para": "¶",
+ "parallel": "∥",
+ "parsim": "⫳",
+ "parsl": "⫽",
+ "part": "∂",
+ "pcy": "п",
+ "percnt": "%",
+ "period": ".",
+ "permil": "‰",
+ "perp": "⊥",
+ "pertenk": "‱",
+ "pfr": "𝔭",
+ "phi": "φ",
+ "phiv": "ϕ",
+ "phmmat": "ℳ",
+ "phone": "☎",
+ "pi": "π",
+ "pitchfork": "⋔",
+ "piv": "ϖ",
+ "planck": "ℏ",
+ "planckh": "ℎ",
+ "plankv": "ℏ",
+ "plus": "+",
+ "plusacir": "⨣",
+ "plusb": "⊞",
+ "pluscir": "⨢",
+ "plusdo": "∔",
+ "plusdu": "⨥",
+ "pluse": "⩲",
+ "plusm": "±",
+ "plusmn": "±",
+ "plussim": "⨦",
+ "plustwo": "⨧",
+ "pm": "±",
+ "pointint": "⨕",
+ "popf": "𝕡",
+ "poun": "£",
+ "pound": "£",
+ "pr": "≺",
+ "prE": "⪳",
+ "prap": "⪷",
+ "prcue": "≼",
+ "pre": "⪯",
+ "prec": "≺",
+ "precapprox": "⪷",
+ "preccurlyeq": "≼",
+ "preceq": "⪯",
+ "precnapprox": "⪹",
+ "precneqq": "⪵",
+ "precnsim": "⋨",
+ "precsim": "≾",
+ "prime": "′",
+ "primes": "ℙ",
+ "prnE": "⪵",
+ "prnap": "⪹",
+ "prnsim": "⋨",
+ "prod": "∏",
+ "profalar": "⌮",
+ "profline": "⌒",
+ "profsurf": "⌓",
+ "prop": "∝",
+ "propto": "∝",
+ "prsim": "≾",
+ "prurel": "⊰",
+ "pscr": "𝓅",
+ "psi": "ψ",
+ "puncsp": " ",
+ "qfr": "𝔮",
+ "qint": "⨌",
+ "qopf": "𝕢",
+ "qprime": "⁗",
+ "qscr": "𝓆",
+ "quaternions": "ℍ",
+ "quatint": "⨖",
+ "quest": "?",
+ "questeq": "≟",
+ "quo": "\"",
+ "quot": "\"",
+ "rAarr": "⇛",
+ "rArr": "⇒",
+ "rAtail": "⤜",
+ "rBarr": "⤏",
+ "rHar": "⥤",
+ "race": "∽̱",
+ "racute": "ŕ",
+ "radic": "√",
+ "raemptyv": "⦳",
+ "rang": "⟩",
+ "rangd": "⦒",
+ "range": "⦥",
+ "rangle": "⟩",
+ "raqu": "»",
+ "raquo": "»",
+ "rarr": "→",
+ "rarrap": "⥵",
+ "rarrb": "⇥",
+ "rarrbfs": "⤠",
+ "rarrc": "⤳",
+ "rarrfs": "⤞",
+ "rarrhk": "↪",
+ "rarrlp": "↬",
+ "rarrpl": "⥅",
+ "rarrsim": "⥴",
+ "rarrtl": "↣",
+ "rarrw": "↝",
+ "ratail": "⤚",
+ "ratio": "∶",
+ "rationals": "ℚ",
+ "rbarr": "⤍",
+ "rbbrk": "❳",
+ "rbrace": "}",
+ "rbrack": "]",
+ "rbrke": "⦌",
+ "rbrksld": "⦎",
+ "rbrkslu": "⦐",
+ "rcaron": "ř",
+ "rcedil": "ŗ",
+ "rceil": "⌉",
+ "rcub": "}",
+ "rcy": "р",
+ "rdca": "⤷",
+ "rdldhar": "⥩",
+ "rdquo": "”",
+ "rdquor": "”",
+ "rdsh": "↳",
+ "real": "ℜ",
+ "realine": "ℛ",
+ "realpart": "ℜ",
+ "reals": "ℝ",
+ "rect": "▭",
+ "re": "®",
+ "reg": "®",
+ "rfisht": "⥽",
+ "rfloor": "⌋",
+ "rfr": "𝔯",
+ "rhard": "⇁",
+ "rharu": "⇀",
+ "rharul": "⥬",
+ "rho": "ρ",
+ "rhov": "ϱ",
+ "rightarrow": "→",
+ "rightarrowtail": "↣",
+ "rightharpoondown": "⇁",
+ "rightharpoonup": "⇀",
+ "rightleftarrows": "⇄",
+ "rightleftharpoons": "⇌",
+ "rightrightarrows": "⇉",
+ "rightsquigarrow": "↝",
+ "rightthreetimes": "⋌",
+ "ring": "˚",
+ "risingdotseq": "≓",
+ "rlarr": "⇄",
+ "rlhar": "⇌",
+ "rlm": "‏",
+ "rmoust": "⎱",
+ "rmoustache": "⎱",
+ "rnmid": "⫮",
+ "roang": "⟭",
+ "roarr": "⇾",
+ "robrk": "⟧",
+ "ropar": "⦆",
+ "ropf": "𝕣",
+ "roplus": "⨮",
+ "rotimes": "⨵",
+ "rpar": ")",
+ "rpargt": "⦔",
+ "rppolint": "⨒",
+ "rrarr": "⇉",
+ "rsaquo": "›",
+ "rscr": "𝓇",
+ "rsh": "↱",
+ "rsqb": "]",
+ "rsquo": "’",
+ "rsquor": "’",
+ "rthree": "⋌",
+ "rtimes": "⋊",
+ "rtri": "▹",
+ "rtrie": "⊵",
+ "rtrif": "▸",
+ "rtriltri": "⧎",
+ "ruluhar": "⥨",
+ "rx": "℞",
+ "sacute": "ś",
+ "sbquo": "‚",
+ "sc": "≻",
+ "scE": "⪴",
+ "scap": "⪸",
+ "scaron": "š",
+ "sccue": "≽",
+ "sce": "⪰",
+ "scedil": "ş",
+ "scirc": "ŝ",
+ "scnE": "⪶",
+ "scnap": "⪺",
+ "scnsim": "⋩",
+ "scpolint": "⨓",
+ "scsim": "≿",
+ "scy": "с",
+ "sdot": "⋅",
+ "sdotb": "⊡",
+ "sdote": "⩦",
+ "seArr": "⇘",
+ "searhk": "⤥",
+ "searr": "↘",
+ "searrow": "↘",
+ "sec": "§",
+ "sect": "§",
+ "semi": ";",
+ "seswar": "⤩",
+ "setminus": "∖",
+ "setmn": "∖",
+ "sext": "✶",
+ "sfr": "𝔰",
+ "sfrown": "⌢",
+ "sharp": "♯",
+ "shchcy": "щ",
+ "shcy": "ш",
+ "shortmid": "∣",
+ "shortparallel": "∥",
+ "sh": "­",
+ "shy": "­",
+ "sigma": "σ",
+ "sigmaf": "ς",
+ "sigmav": "ς",
+ "sim": "∼",
+ "simdot": "⩪",
+ "sime": "≃",
+ "simeq": "≃",
+ "simg": "⪞",
+ "simgE": "⪠",
+ "siml": "⪝",
+ "simlE": "⪟",
+ "simne": "≆",
+ "simplus": "⨤",
+ "simrarr": "⥲",
+ "slarr": "←",
+ "smallsetminus": "∖",
+ "smashp": "⨳",
+ "smeparsl": "⧤",
+ "smid": "∣",
+ "smile": "⌣",
+ "smt": "⪪",
+ "smte": "⪬",
+ "smtes": "⪬︀",
+ "softcy": "ь",
+ "sol": "/",
+ "solb": "⧄",
+ "solbar": "⌿",
+ "sopf": "𝕤",
+ "spades": "♠",
+ "spadesuit": "♠",
+ "spar": "∥",
+ "sqcap": "⊓",
+ "sqcaps": "⊓︀",
+ "sqcup": "⊔",
+ "sqcups": "⊔︀",
+ "sqsub": "⊏",
+ "sqsube": "⊑",
+ "sqsubset": "⊏",
+ "sqsubseteq": "⊑",
+ "sqsup": "⊐",
+ "sqsupe": "⊒",
+ "sqsupset": "⊐",
+ "sqsupseteq": "⊒",
+ "squ": "□",
+ "square": "□",
+ "squarf": "▪",
+ "squf": "▪",
+ "srarr": "→",
+ "sscr": "𝓈",
+ "ssetmn": "∖",
+ "ssmile": "⌣",
+ "sstarf": "⋆",
+ "star": "☆",
+ "starf": "★",
+ "straightepsilon": "ϵ",
+ "straightphi": "ϕ",
+ "strns": "¯",
+ "sub": "⊂",
+ "subE": "⫅",
+ "subdot": "⪽",
+ "sube": "⊆",
+ "subedot": "⫃",
+ "submult": "⫁",
+ "subnE": "⫋",
+ "subne": "⊊",
+ "subplus": "⪿",
+ "subrarr": "⥹",
+ "subset": "⊂",
+ "subseteq": "⊆",
+ "subseteqq": "⫅",
+ "subsetneq": "⊊",
+ "subsetneqq": "⫋",
+ "subsim": "⫇",
+ "subsub": "⫕",
+ "subsup": "⫓",
+ "succ": "≻",
+ "succapprox": "⪸",
+ "succcurlyeq": "≽",
+ "succeq": "⪰",
+ "succnapprox": "⪺",
+ "succneqq": "⪶",
+ "succnsim": "⋩",
+ "succsim": "≿",
+ "sum": "∑",
+ "sung": "♪",
+ "sup": "⊃",
+ "sup1": "¹",
+ "sup2": "²",
+ "sup3": "³",
+ "supE": "⫆",
+ "supdot": "⪾",
+ "supdsub": "⫘",
+ "supe": "⊇",
+ "supedot": "⫄",
+ "suphsol": "⟉",
+ "suphsub": "⫗",
+ "suplarr": "⥻",
+ "supmult": "⫂",
+ "supnE": "⫌",
+ "supne": "⊋",
+ "supplus": "⫀",
+ "supset": "⊃",
+ "supseteq": "⊇",
+ "supseteqq": "⫆",
+ "supsetneq": "⊋",
+ "supsetneqq": "⫌",
+ "supsim": "⫈",
+ "supsub": "⫔",
+ "supsup": "⫖",
+ "swArr": "⇙",
+ "swarhk": "⤦",
+ "swarr": "↙",
+ "swarrow": "↙",
+ "swnwar": "⤪",
+ "szli": "ß",
+ "szlig": "ß",
+ "target": "⌖",
+ "tau": "τ",
+ "tbrk": "⎴",
+ "tcaron": "ť",
+ "tcedil": "ţ",
+ "tcy": "т",
+ "tdot": "⃛",
+ "telrec": "⌕",
+ "tfr": "𝔱",
+ "there4": "∴",
+ "therefore": "∴",
+ "theta": "θ",
+ "thetasym": "ϑ",
+ "thetav": "ϑ",
+ "thickapprox": "≈",
+ "thicksim": "∼",
+ "thinsp": " ",
+ "thkap": "≈",
+ "thksim": "∼",
+ "thor": "þ",
+ "thorn": "þ",
+ "tilde": "˜",
+ "time": "×",
+ "times": "×",
+ "timesb": "⊠",
+ "timesbar": "⨱",
+ "timesd": "⨰",
+ "tint": "∭",
+ "toea": "⤨",
+ "top": "⊤",
+ "topbot": "⌶",
+ "topcir": "⫱",
+ "topf": "𝕥",
+ "topfork": "⫚",
+ "tosa": "⤩",
+ "tprime": "‴",
+ "trade": "™",
+ "triangle": "▵",
+ "triangledown": "▿",
+ "triangleleft": "◃",
+ "trianglelefteq": "⊴",
+ "triangleq": "≜",
+ "triangleright": "▹",
+ "trianglerighteq": "⊵",
+ "tridot": "◬",
+ "trie": "≜",
+ "triminus": "⨺",
+ "triplus": "⨹",
+ "trisb": "⧍",
+ "tritime": "⨻",
+ "trpezium": "⏢",
+ "tscr": "𝓉",
+ "tscy": "ц",
+ "tshcy": "ћ",
+ "tstrok": "ŧ",
+ "twixt": "≬",
+ "twoheadleftarrow": "↞",
+ "twoheadrightarrow": "↠",
+ "uArr": "⇑",
+ "uHar": "⥣",
+ "uacut": "ú",
+ "uacute": "ú",
+ "uarr": "↑",
+ "ubrcy": "ў",
+ "ubreve": "ŭ",
+ "ucir": "û",
+ "ucirc": "û",
+ "ucy": "у",
+ "udarr": "⇅",
+ "udblac": "ű",
+ "udhar": "⥮",
+ "ufisht": "⥾",
+ "ufr": "𝔲",
+ "ugrav": "ù",
+ "ugrave": "ù",
+ "uharl": "↿",
+ "uharr": "↾",
+ "uhblk": "▀",
+ "ulcorn": "⌜",
+ "ulcorner": "⌜",
+ "ulcrop": "⌏",
+ "ultri": "◸",
+ "umacr": "ū",
+ "um": "¨",
+ "uml": "¨",
+ "uogon": "ų",
+ "uopf": "𝕦",
+ "uparrow": "↑",
+ "updownarrow": "↕",
+ "upharpoonleft": "↿",
+ "upharpoonright": "↾",
+ "uplus": "⊎",
+ "upsi": "υ",
+ "upsih": "ϒ",
+ "upsilon": "υ",
+ "upuparrows": "⇈",
+ "urcorn": "⌝",
+ "urcorner": "⌝",
+ "urcrop": "⌎",
+ "uring": "ů",
+ "urtri": "◹",
+ "uscr": "𝓊",
+ "utdot": "⋰",
+ "utilde": "ũ",
+ "utri": "▵",
+ "utrif": "▴",
+ "uuarr": "⇈",
+ "uum": "ü",
+ "uuml": "ü",
+ "uwangle": "⦧",
+ "vArr": "⇕",
+ "vBar": "⫨",
+ "vBarv": "⫩",
+ "vDash": "⊨",
+ "vangrt": "⦜",
+ "varepsilon": "ϵ",
+ "varkappa": "ϰ",
+ "varnothing": "∅",
+ "varphi": "ϕ",
+ "varpi": "ϖ",
+ "varpropto": "∝",
+ "varr": "↕",
+ "varrho": "ϱ",
+ "varsigma": "ς",
+ "varsubsetneq": "⊊︀",
+ "varsubsetneqq": "⫋︀",
+ "varsupsetneq": "⊋︀",
+ "varsupsetneqq": "⫌︀",
+ "vartheta": "ϑ",
+ "vartriangleleft": "⊲",
+ "vartriangleright": "⊳",
+ "vcy": "в",
+ "vdash": "⊢",
+ "vee": "∨",
+ "veebar": "⊻",
+ "veeeq": "≚",
+ "vellip": "⋮",
+ "verbar": "|",
+ "vert": "|",
+ "vfr": "𝔳",
+ "vltri": "⊲",
+ "vnsub": "⊂⃒",
+ "vnsup": "⊃⃒",
+ "vopf": "𝕧",
+ "vprop": "∝",
+ "vrtri": "⊳",
+ "vscr": "𝓋",
+ "vsubnE": "⫋︀",
+ "vsubne": "⊊︀",
+ "vsupnE": "⫌︀",
+ "vsupne": "⊋︀",
+ "vzigzag": "⦚",
+ "wcirc": "ŵ",
+ "wedbar": "⩟",
+ "wedge": "∧",
+ "wedgeq": "≙",
+ "weierp": "℘",
+ "wfr": "𝔴",
+ "wopf": "𝕨",
+ "wp": "℘",
+ "wr": "≀",
+ "wreath": "≀",
+ "wscr": "𝓌",
+ "xcap": "⋂",
+ "xcirc": "◯",
+ "xcup": "⋃",
+ "xdtri": "▽",
+ "xfr": "𝔵",
+ "xhArr": "⟺",
+ "xharr": "⟷",
+ "xi": "ξ",
+ "xlArr": "⟸",
+ "xlarr": "⟵",
+ "xmap": "⟼",
+ "xnis": "⋻",
+ "xodot": "⨀",
+ "xopf": "𝕩",
+ "xoplus": "⨁",
+ "xotime": "⨂",
+ "xrArr": "⟹",
+ "xrarr": "⟶",
+ "xscr": "𝓍",
+ "xsqcup": "⨆",
+ "xuplus": "⨄",
+ "xutri": "△",
+ "xvee": "⋁",
+ "xwedge": "⋀",
+ "yacut": "ý",
+ "yacute": "ý",
+ "yacy": "я",
+ "ycirc": "ŷ",
+ "ycy": "ы",
+ "ye": "¥",
+ "yen": "¥",
+ "yfr": "𝔶",
+ "yicy": "ї",
+ "yopf": "𝕪",
+ "yscr": "𝓎",
+ "yucy": "ю",
+ "yum": "ÿ",
+ "yuml": "ÿ",
+ "zacute": "ź",
+ "zcaron": "ž",
+ "zcy": "з",
+ "zdot": "ż",
+ "zeetrf": "ℨ",
+ "zeta": "ζ",
+ "zfr": "𝔷",
+ "zhcy": "ж",
+ "zigrarr": "⇝",
+ "zopf": "𝕫",
+ "zscr": "𝓏",
+ "zwj": "‍",
+ "zwnj": "‌"
+}
diff --git a/tools/node_modules/eslint/node_modules/character-entities/license b/tools/node_modules/eslint/node_modules/character-entities/license
new file mode 100644
index 0000000000..32e7a3d93c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/character-entities/package.json b/tools/node_modules/eslint/node_modules/character-entities/package.json
new file mode 100644
index 0000000000..e1151d249e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities/package.json
@@ -0,0 +1,71 @@
+{
+ "name": "character-entities",
+ "version": "1.2.4",
+ "description": "HTML character entity information",
+ "license": "MIT",
+ "keywords": [
+ "html",
+ "entity",
+ "entities",
+ "character",
+ "reference",
+ "name",
+ "replacement"
+ ],
+ "repository": "wooorm/character-entities",
+ "bugs": "https://github.com/wooorm/character-entities/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "main": "index.json",
+ "files": [
+ "index.json"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "bail": "^1.0.0",
+ "browserify": "^16.0.0",
+ "concat-stream": "^2.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "generate": "node build",
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.json -s characterEntities -o character-entities.js",
+ "build-mangle": "browserify index.json -s characterEntities -p tinyify -o character-entities.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "lint": "xo",
+ "test-api": "node test",
+ "test": "npm run generate && npm run format && npm run build && npm run test-api"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "character-entities.js"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/character-entities/readme.md b/tools/node_modules/eslint/node_modules/character-entities/readme.md
new file mode 100644
index 0000000000..b890e2aec3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-entities/readme.md
@@ -0,0 +1,72 @@
+# character-entities
+
+[![Build][build-badge]][build]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+HTML character entity information.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install character-entities
+```
+
+## Use
+
+```js
+var characterEntities = require('character-entities')
+
+console.log(characterEntities.AElig) // => 'Æ'
+console.log(characterEntities.aelig) // => 'æ'
+console.log(characterEntities.amp) // => '&'
+```
+
+## API
+
+### characterEntities
+
+Mapping between (case-sensitive) character entity names to replacements.
+
+## Support
+
+See [`html.spec.whatwg.org`][html].
+
+## Related
+
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — HTML 4 character entity info
+* [`character-entities-legacy`](https://github.com/wooorm/character-entities-legacy)
+ — Legacy character entity info
+* [`parse-entities`](https://github.com/wooorm/parse-entities)
+ — Parse HTML character references
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Stringify HTML character references
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/character-entities.svg
+
+[build]: https://travis-ci.org/wooorm/character-entities
+
+[downloads-badge]: https://img.shields.io/npm/dm/character-entities.svg
+
+[downloads]: https://www.npmjs.com/package/character-entities
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/character-entities.svg
+
+[size]: https://bundlephobia.com/result?p=character-entities
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[html]: https://html.spec.whatwg.org/multipage/syntax.html#named-character-references
diff --git a/tools/node_modules/eslint/node_modules/character-reference-invalid/index.json b/tools/node_modules/eslint/node_modules/character-reference-invalid/index.json
new file mode 100644
index 0000000000..9337a854e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-reference-invalid/index.json
@@ -0,0 +1,30 @@
+{
+ "0": "�",
+ "128": "€",
+ "130": "‚",
+ "131": "ƒ",
+ "132": "„",
+ "133": "…",
+ "134": "†",
+ "135": "‡",
+ "136": "ˆ",
+ "137": "‰",
+ "138": "Š",
+ "139": "‹",
+ "140": "Œ",
+ "142": "Ž",
+ "145": "‘",
+ "146": "’",
+ "147": "“",
+ "148": "”",
+ "149": "•",
+ "150": "–",
+ "151": "—",
+ "152": "˜",
+ "153": "™",
+ "154": "š",
+ "155": "›",
+ "156": "œ",
+ "158": "ž",
+ "159": "Ÿ"
+}
diff --git a/tools/node_modules/eslint/node_modules/character-reference-invalid/license b/tools/node_modules/eslint/node_modules/character-reference-invalid/license
new file mode 100644
index 0000000000..32e7a3d93c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-reference-invalid/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/character-reference-invalid/package.json b/tools/node_modules/eslint/node_modules/character-reference-invalid/package.json
new file mode 100644
index 0000000000..069dc4b2b5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-reference-invalid/package.json
@@ -0,0 +1,74 @@
+{
+ "name": "character-reference-invalid",
+ "version": "1.1.4",
+ "description": "HTML invalid numeric character reference information",
+ "license": "MIT",
+ "keywords": [
+ "html",
+ "entity",
+ "numeric",
+ "character",
+ "reference",
+ "replacement",
+ "invalid",
+ "name"
+ ],
+ "repository": "wooorm/character-reference-invalid",
+ "bugs": "https://github.com/wooorm/character-reference-invalid/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "main": "index.json",
+ "files": [
+ "index.json"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "bail": "^1.0.0",
+ "browserify": "^16.0.0",
+ "concat-stream": "^2.0.0",
+ "hast-util-select": "^3.0.0",
+ "hast-util-to-string": "^1.0.0",
+ "rehype-parse": "^6.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "unified": "^8.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "generate": "node build",
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify index.json -s characterReferenceInvalid -o character-reference-invalid.js",
+ "build-mangle": "browserify index.json -s characterReferenceInvalid -p tinyify -o character-reference-invalid.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test": "npm run generate && npm run format && npm run build && npm run test-api"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "character-reference-invalid.js"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/character-reference-invalid/readme.md b/tools/node_modules/eslint/node_modules/character-reference-invalid/readme.md
new file mode 100644
index 0000000000..e2e8f7a517
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/character-reference-invalid/readme.md
@@ -0,0 +1,74 @@
+# character-reference-invalid
+
+[![Build][build-badge]][build]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+HTML invalid numeric character reference information.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install character-reference-invalid
+```
+
+## Use
+
+```js
+var characterReferenceInvalid = require('character-reference-invalid')
+
+console.log(characterReferenceInvalid[0x80]) // => '€'
+console.log(characterReferenceInvalid[0x89]) // => '‰'
+console.log(characterReferenceInvalid[0x99]) // => '™'
+```
+
+## API
+
+### `characterReferenceInvalid`
+
+Mapping between invalid numeric character reference to replacements.
+
+## Support
+
+See [`html.spec.whatwg.org`][html].
+
+## Related
+
+* [`character-entities`](https://github.com/wooorm/character-entities)
+ — HTML character entity info
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — HTML 4 character entity info
+* [`character-entities-legacy`](https://github.com/wooorm/character-entities-legacy)
+ — Legacy character entity info
+* [`parse-entities`](https://github.com/wooorm/parse-entities)
+ — Parse HTML character references
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Serialize HTML character references
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/character-reference-invalid.svg
+
+[build]: https://travis-ci.org/wooorm/character-reference-invalid
+
+[downloads-badge]: https://img.shields.io/npm/dm/character-reference-invalid.svg
+
+[downloads]: https://www.npmjs.com/package/character-reference-invalid
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/character-reference-invalid.svg
+
+[size]: https://bundlephobia.com/result?p=character-reference-invalid
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[html]: https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides
diff --git a/tools/node_modules/eslint/node_modules/convert-source-map/LICENSE b/tools/node_modules/eslint/node_modules/convert-source-map/LICENSE
new file mode 100644
index 0000000000..41702c5043
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/convert-source-map/LICENSE
@@ -0,0 +1,23 @@
+Copyright 2013 Thorsten Lorenz.
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/convert-source-map/README.md b/tools/node_modules/eslint/node_modules/convert-source-map/README.md
new file mode 100644
index 0000000000..fdee23e451
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/convert-source-map/README.md
@@ -0,0 +1,120 @@
+# convert-source-map [![build status](https://secure.travis-ci.org/thlorenz/convert-source-map.svg?branch=master)](http://travis-ci.org/thlorenz/convert-source-map)
+
+Converts a source-map from/to different formats and allows adding/changing properties.
+
+```js
+var convert = require('convert-source-map');
+
+var json = convert
+ .fromComment('//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQvZm9vLm1pbi5qcyIsInNvdXJjZXMiOlsic3JjL2Zvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIvIn0=')
+ .toJSON();
+
+var modified = convert
+ .fromComment('//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQvZm9vLm1pbi5qcyIsInNvdXJjZXMiOlsic3JjL2Zvby5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIvIn0=')
+ .setProperty('sources', [ 'SRC/FOO.JS' ])
+ .toJSON();
+
+console.log(json);
+console.log(modified);
+```
+
+```json
+{"version":3,"file":"build/foo.min.js","sources":["src/foo.js"],"names":[],"mappings":"AAAA","sourceRoot":"/"}
+{"version":3,"file":"build/foo.min.js","sources":["SRC/FOO.JS"],"names":[],"mappings":"AAAA","sourceRoot":"/"}
+```
+
+## API
+
+### fromObject(obj)
+
+Returns source map converter from given object.
+
+### fromJSON(json)
+
+Returns source map converter from given json string.
+
+### fromBase64(base64)
+
+Returns source map converter from given base64 encoded json string.
+
+### fromComment(comment)
+
+Returns source map converter from given base64 encoded json string prefixed with `//# sourceMappingURL=...`.
+
+### fromMapFileComment(comment, mapFileDir)
+
+Returns source map converter from given `filename` by parsing `//# sourceMappingURL=filename`.
+
+`filename` must point to a file that is found inside the `mapFileDir`. Most tools store this file right next to the
+generated file, i.e. the one containing the source map.
+
+### fromSource(source)
+
+Finds last sourcemap comment in file and returns source map converter or returns null if no source map comment was found.
+
+### fromMapFileSource(source, mapFileDir)
+
+Finds last sourcemap comment in file and returns source map converter or returns null if no source map comment was
+found.
+
+The sourcemap will be read from the map file found by parsing `# sourceMappingURL=file` comment. For more info see
+fromMapFileComment.
+
+### toObject()
+
+Returns a copy of the underlying source map.
+
+### toJSON([space])
+
+Converts source map to json string. If `space` is given (optional), this will be passed to
+[JSON.stringify](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify) when the
+JSON string is generated.
+
+### toBase64()
+
+Converts source map to base64 encoded json string.
+
+### toComment([options])
+
+Converts source map to an inline comment that can be appended to the source-file.
+
+By default, the comment is formatted like: `//# sourceMappingURL=...`, which you would
+normally see in a JS source file.
+
+When `options.multiline == true`, the comment is formatted like: `/*# sourceMappingURL=... */`, which you would find in a CSS source file.
+
+### addProperty(key, value)
+
+Adds given property to the source map. Throws an error if property already exists.
+
+### setProperty(key, value)
+
+Sets given property to the source map. If property doesn't exist it is added, otherwise its value is updated.
+
+### getProperty(key)
+
+Gets given property of the source map.
+
+### removeComments(src)
+
+Returns `src` with all source map comments removed
+
+### removeMapFileComments(src)
+
+Returns `src` with all source map comments pointing to map files removed.
+
+### commentRegex
+
+Provides __a fresh__ RegExp each time it is accessed. Can be used to find source map comments.
+
+### mapFileCommentRegex
+
+Provides __a fresh__ RegExp each time it is accessed. Can be used to find source map comments pointing to map files.
+
+### generateMapFileComment(file, [options])
+
+Returns a comment that links to an external source map via `file`.
+
+By default, the comment is formatted like: `//# sourceMappingURL=...`, which you would normally see in a JS source file.
+
+When `options.multiline == true`, the comment is formatted like: `/*# sourceMappingURL=... */`, which you would find in a CSS source file.
diff --git a/tools/node_modules/eslint/node_modules/convert-source-map/index.js b/tools/node_modules/eslint/node_modules/convert-source-map/index.js
new file mode 100644
index 0000000000..d3265f0ac5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/convert-source-map/index.js
@@ -0,0 +1,136 @@
+'use strict';
+var fs = require('fs');
+var path = require('path');
+var SafeBuffer = require('safe-buffer');
+
+Object.defineProperty(exports, 'commentRegex', {
+ get: function getCommentRegex () {
+ return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg;
+ }
+});
+
+Object.defineProperty(exports, 'mapFileCommentRegex', {
+ get: function getMapFileCommentRegex () {
+ // Matches sourceMappingURL in either // or /* comment styles.
+ return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg;
+ }
+});
+
+
+function decodeBase64(base64) {
+ return (SafeBuffer.Buffer.from(base64, 'base64') || "").toString();
+}
+
+function stripComment(sm) {
+ return sm.split(',').pop();
+}
+
+function readFromFileMap(sm, dir) {
+ // NOTE: this will only work on the server since it attempts to read the map file
+
+ var r = exports.mapFileCommentRegex.exec(sm);
+
+ // for some odd reason //# .. captures in 1 and /* .. */ in 2
+ var filename = r[1] || r[2];
+ var filepath = path.resolve(dir, filename);
+
+ try {
+ return fs.readFileSync(filepath, 'utf8');
+ } catch (e) {
+ throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e);
+ }
+}
+
+function Converter (sm, opts) {
+ opts = opts || {};
+
+ if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir);
+ if (opts.hasComment) sm = stripComment(sm);
+ if (opts.isEncoded) sm = decodeBase64(sm);
+ if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm);
+
+ this.sourcemap = sm;
+}
+
+Converter.prototype.toJSON = function (space) {
+ return JSON.stringify(this.sourcemap, null, space);
+};
+
+Converter.prototype.toBase64 = function () {
+ var json = this.toJSON();
+ return (SafeBuffer.Buffer.from(json, 'utf8') || "").toString('base64');
+};
+
+Converter.prototype.toComment = function (options) {
+ var base64 = this.toBase64();
+ var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
+ return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;
+};
+
+// returns copy instead of original
+Converter.prototype.toObject = function () {
+ return JSON.parse(this.toJSON());
+};
+
+Converter.prototype.addProperty = function (key, value) {
+ if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead');
+ return this.setProperty(key, value);
+};
+
+Converter.prototype.setProperty = function (key, value) {
+ this.sourcemap[key] = value;
+ return this;
+};
+
+Converter.prototype.getProperty = function (key) {
+ return this.sourcemap[key];
+};
+
+exports.fromObject = function (obj) {
+ return new Converter(obj);
+};
+
+exports.fromJSON = function (json) {
+ return new Converter(json, { isJSON: true });
+};
+
+exports.fromBase64 = function (base64) {
+ return new Converter(base64, { isEncoded: true });
+};
+
+exports.fromComment = function (comment) {
+ comment = comment
+ .replace(/^\/\*/g, '//')
+ .replace(/\*\/$/g, '');
+
+ return new Converter(comment, { isEncoded: true, hasComment: true });
+};
+
+exports.fromMapFileComment = function (comment, dir) {
+ return new Converter(comment, { commentFileDir: dir, isFileComment: true, isJSON: true });
+};
+
+// Finds last sourcemap comment in file or returns null if none was found
+exports.fromSource = function (content) {
+ var m = content.match(exports.commentRegex);
+ return m ? exports.fromComment(m.pop()) : null;
+};
+
+// Finds last sourcemap comment in file or returns null if none was found
+exports.fromMapFileSource = function (content, dir) {
+ var m = content.match(exports.mapFileCommentRegex);
+ return m ? exports.fromMapFileComment(m.pop(), dir) : null;
+};
+
+exports.removeComments = function (src) {
+ return src.replace(exports.commentRegex, '');
+};
+
+exports.removeMapFileComments = function (src) {
+ return src.replace(exports.mapFileCommentRegex, '');
+};
+
+exports.generateMapFileComment = function (file, options) {
+ var data = 'sourceMappingURL=' + file;
+ return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;
+};
diff --git a/tools/node_modules/eslint/node_modules/convert-source-map/package.json b/tools/node_modules/eslint/node_modules/convert-source-map/package.json
new file mode 100644
index 0000000000..07ff61fa2a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/convert-source-map/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "convert-source-map",
+ "version": "1.8.0",
+ "description": "Converts a source-map from/to different formats and allows adding/changing properties.",
+ "main": "index.js",
+ "scripts": {
+ "test": "tap test/*.js --color"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/thlorenz/convert-source-map.git"
+ },
+ "homepage": "https://github.com/thlorenz/convert-source-map",
+ "dependencies": {
+ "safe-buffer": "~5.1.1"
+ },
+ "devDependencies": {
+ "inline-source-map": "~0.6.2",
+ "tap": "~9.0.0"
+ },
+ "keywords": [
+ "convert",
+ "sourcemap",
+ "source",
+ "map",
+ "browser",
+ "debug"
+ ],
+ "author": {
+ "name": "Thorsten Lorenz",
+ "email": "thlorenz@gmx.de",
+ "url": "http://thlorenz.com"
+ },
+ "license": "MIT",
+ "engine": {
+ "node": ">=0.6"
+ },
+ "files": [
+ "index.js"
+ ],
+ "browser": {
+ "fs": false
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/LICENSE b/tools/node_modules/eslint/node_modules/electron-to-chromium/LICENSE
new file mode 100644
index 0000000000..6c7b614d4e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/LICENSE
@@ -0,0 +1,5 @@
+Copyright 2018 Kilian Valkhof
+
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/README.md b/tools/node_modules/eslint/node_modules/electron-to-chromium/README.md
new file mode 100644
index 0000000000..a96ddf12af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/README.md
@@ -0,0 +1,186 @@
+### Made by [@kilianvalkhof](https://twitter.com/kilianvalkhof)
+
+#### Other projects:
+
+- 💻 [Polypane](https://polypane.app) - Develop responsive websites and apps twice as fast on multiple screens at once
+- 🖌️ [Superposition](https://superposition.design) - Kickstart your design system by extracting design tokens from your website
+- 🗒️ [FromScratch](https://fromscratch.rocks) - A smart but simple autosaving scratchpad
+
+---
+
+# Electron-to-Chromium [![npm](https://img.shields.io/npm/v/electron-to-chromium.svg)](https://www.npmjs.com/package/electron-to-chromium) [![travis](https://img.shields.io/travis/Kilian/electron-to-chromium/master.svg)](https://travis-ci.org/Kilian/electron-to-chromium) [![npm-downloads](https://img.shields.io/npm/dm/electron-to-chromium.svg)](https://www.npmjs.com/package/electron-to-chromium) [![codecov](https://codecov.io/gh/Kilian/electron-to-chromium/branch/master/graph/badge.svg)](https://codecov.io/gh/Kilian/electron-to-chromium)[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FKilian%2Felectron-to-chromium.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2FKilian%2Felectron-to-chromium?ref=badge_shield)
+
+This repository provides a mapping of Electron versions to the Chromium version that it uses.
+
+This package is used in [Browserslist](https://github.com/ai/browserslist), so you can use e.g. `electron >= 1.4` in [Autoprefixer](https://github.com/postcss/autoprefixer), [Stylelint](https://github.com/stylelint/stylelint), [babel-preset-env](https://github.com/babel/babel-preset-env) and [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat).
+
+**Supported by:**
+
+ <a href="https://m.do.co/c/bb22ea58e765">
+ <img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" width="201px">
+ </a>
+
+
+## Install
+Install using `npm install electron-to-chromium`.
+
+## Usage
+To include Electron-to-Chromium, require it:
+
+```js
+var e2c = require('electron-to-chromium');
+```
+
+### Properties
+The Electron-to-Chromium object has 4 properties to use:
+
+#### `versions`
+An object of key-value pairs with a _major_ Electron version as the key, and the corresponding major Chromium version as the value.
+
+```js
+var versions = e2c.versions;
+console.log(versions['1.4']);
+// returns "53"
+```
+
+#### `fullVersions`
+An object of key-value pairs with a Electron version as the key, and the corresponding full Chromium version as the value.
+
+```js
+var versions = e2c.fullVersions;
+console.log(versions['1.4.11']);
+// returns "53.0.2785.143"
+```
+
+#### `chromiumVersions`
+An object of key-value pairs with a _major_ Chromium version as the key, and the corresponding major Electron version as the value.
+
+```js
+var versions = e2c.chromiumVersions;
+console.log(versions['54']);
+// returns "1.4"
+```
+
+#### `fullChromiumVersions`
+An object of key-value pairs with a Chromium version as the key, and an array of the corresponding major Electron versions as the value.
+
+```js
+var versions = e2c.fullChromiumVersions;
+console.log(versions['54.0.2840.101']);
+// returns ["1.5.1", "1.5.0"]
+```
+### Functions
+
+#### `electronToChromium(query)`
+Arguments:
+* Query: string or number, required. A major or full Electron version.
+
+A function that returns the corresponding Chromium version for a given Electron function. Returns a string.
+
+If you provide it with a major Electron version, it will return a major Chromium version:
+
+```js
+var chromeVersion = e2c.electronToChromium('1.4');
+// chromeVersion is "53"
+```
+
+If you provide it with a full Electron version, it will return the full Chromium version.
+
+```js
+var chromeVersion = e2c.electronToChromium('1.4.11');
+// chromeVersion is "53.0.2785.143"
+```
+
+If a query does not match a Chromium version, it will return `undefined`.
+
+```js
+var chromeVersion = e2c.electronToChromium('9000');
+// chromeVersion is undefined
+```
+
+#### `chromiumToElectron(query)`
+Arguments:
+* Query: string or number, required. A major or full Chromium version.
+
+Returns a string with the corresponding Electron version for a given Chromium query.
+
+If you provide it with a major Chromium version, it will return a major Electron version:
+
+```js
+var electronVersion = e2c.chromiumToElectron('54');
+// electronVersion is "1.4"
+```
+
+If you provide it with a full Chrome version, it will return an array of full Electron versions.
+
+```js
+var electronVersions = e2c.chromiumToElectron('56.0.2924.87');
+// electronVersions is ["1.6.3", "1.6.2", "1.6.1", "1.6.0"]
+```
+
+If a query does not match an Electron version, it will return `undefined`.
+
+```js
+var electronVersion = e2c.chromiumToElectron('10');
+// electronVersion is undefined
+```
+
+#### `electronToBrowserList(query)` **DEPRECATED**
+Arguments:
+* Query: string or number, required. A major Electron version.
+
+_**Deprecated**: Browserlist already includes electron-to-chromium._
+
+A function that returns a [Browserslist](https://github.com/ai/browserslist) query that matches the given major Electron version. Returns a string.
+
+If you provide it with a major Electron version, it will return a Browserlist query string that matches the Chromium capabilities:
+
+```js
+var query = e2c.electronToBrowserList('1.4');
+// query is "Chrome >= 53"
+```
+
+If a query does not match a Chromium version, it will return `undefined`.
+
+```js
+var query = e2c.electronToBrowserList('9000');
+// query is undefined
+```
+
+### Importing just versions, fullVersions, chromiumVersions and fullChromiumVersions
+All lists can be imported on their own, if file size is a concern.
+
+#### `versions`
+
+```js
+var versions = require('electron-to-chromium/versions');
+```
+
+#### `fullVersions`
+
+```js
+var fullVersions = require('electron-to-chromium/full-versions');
+```
+
+#### `chromiumVersions`
+
+```js
+var chromiumVersions = require('electron-to-chromium/chromium-versions');
+```
+
+#### `fullChromiumVersions`
+
+```js
+var fullChromiumVersions = require('electron-to-chromium/full-chromium-versions');
+```
+
+## Updating
+This package will be updated with each new Electron release.
+
+To update the list, run `npm run build.js`. Requires internet access as it downloads from the canonical list of Electron versions.
+
+To verify correct behaviour, run `npm test`.
+
+
+## License
+[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FKilian%2Felectron-to-chromium.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FKilian%2Felectron-to-chromium?ref=badge_large)
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js
new file mode 100644
index 0000000000..55b8673ab8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js
@@ -0,0 +1,43 @@
+module.exports = {
+ "39": "0.20",
+ "40": "0.21",
+ "41": "0.21",
+ "42": "0.25",
+ "43": "0.27",
+ "44": "0.30",
+ "45": "0.31",
+ "47": "0.36",
+ "49": "0.37",
+ "50": "1.1",
+ "51": "1.2",
+ "52": "1.3",
+ "53": "1.4",
+ "54": "1.4",
+ "56": "1.6",
+ "58": "1.7",
+ "59": "1.8",
+ "61": "2.0",
+ "66": "3.0",
+ "69": "4.0",
+ "72": "5.0",
+ "73": "5.0",
+ "76": "6.0",
+ "78": "7.0",
+ "79": "8.0",
+ "80": "8.0",
+ "82": "9.0",
+ "83": "9.0",
+ "84": "10.0",
+ "85": "10.0",
+ "86": "11.0",
+ "87": "11.0",
+ "89": "12.0",
+ "90": "13.0",
+ "91": "13.0",
+ "92": "14.0",
+ "93": "14.0",
+ "94": "15.0",
+ "95": "16.0",
+ "96": "16.0",
+ "98": "17.0"
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json
new file mode 100644
index 0000000000..2acb8324db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json
@@ -0,0 +1 @@
+{"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js
new file mode 100644
index 0000000000..00285c6915
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js
@@ -0,0 +1,1691 @@
+module.exports = {
+ "39.0.2171.65": [
+ "0.20.0",
+ "0.20.1",
+ "0.20.2",
+ "0.20.3",
+ "0.20.4",
+ "0.20.5",
+ "0.20.6",
+ "0.20.7",
+ "0.20.8"
+ ],
+ "40.0.2214.91": [
+ "0.21.0",
+ "0.21.1",
+ "0.21.2"
+ ],
+ "41.0.2272.76": [
+ "0.21.3",
+ "0.22.1",
+ "0.22.2",
+ "0.22.3",
+ "0.23.0",
+ "0.24.0"
+ ],
+ "42.0.2311.107": [
+ "0.25.0",
+ "0.25.1",
+ "0.25.2",
+ "0.25.3",
+ "0.26.0",
+ "0.26.1",
+ "0.27.0",
+ "0.27.1"
+ ],
+ "43.0.2357.65": [
+ "0.27.2",
+ "0.27.3",
+ "0.28.0",
+ "0.28.1",
+ "0.28.2",
+ "0.28.3",
+ "0.29.1",
+ "0.29.2"
+ ],
+ "44.0.2403.125": [
+ "0.30.4",
+ "0.31.0"
+ ],
+ "45.0.2454.85": [
+ "0.31.2",
+ "0.32.2",
+ "0.32.3",
+ "0.33.0",
+ "0.33.1",
+ "0.33.2",
+ "0.33.3",
+ "0.33.4",
+ "0.33.6",
+ "0.33.7",
+ "0.33.8",
+ "0.33.9",
+ "0.34.0",
+ "0.34.1",
+ "0.34.2",
+ "0.34.3",
+ "0.34.4",
+ "0.35.1",
+ "0.35.2",
+ "0.35.3",
+ "0.35.4",
+ "0.35.5"
+ ],
+ "47.0.2526.73": [
+ "0.36.0",
+ "0.36.2",
+ "0.36.3",
+ "0.36.4"
+ ],
+ "47.0.2526.110": [
+ "0.36.5",
+ "0.36.6",
+ "0.36.7",
+ "0.36.8",
+ "0.36.9",
+ "0.36.10",
+ "0.36.11",
+ "0.36.12"
+ ],
+ "49.0.2623.75": [
+ "0.37.0",
+ "0.37.1",
+ "0.37.3",
+ "0.37.4",
+ "0.37.5",
+ "0.37.6",
+ "0.37.7",
+ "0.37.8",
+ "1.0.0",
+ "1.0.1",
+ "1.0.2"
+ ],
+ "50.0.2661.102": [
+ "1.1.0",
+ "1.1.1",
+ "1.1.2",
+ "1.1.3"
+ ],
+ "51.0.2704.63": [
+ "1.2.0",
+ "1.2.1"
+ ],
+ "51.0.2704.84": [
+ "1.2.2",
+ "1.2.3"
+ ],
+ "51.0.2704.103": [
+ "1.2.4",
+ "1.2.5"
+ ],
+ "51.0.2704.106": [
+ "1.2.6",
+ "1.2.7",
+ "1.2.8"
+ ],
+ "52.0.2743.82": [
+ "1.3.0",
+ "1.3.1",
+ "1.3.2",
+ "1.3.3",
+ "1.3.4",
+ "1.3.5",
+ "1.3.6",
+ "1.3.7",
+ "1.3.9",
+ "1.3.10",
+ "1.3.13",
+ "1.3.14",
+ "1.3.15"
+ ],
+ "53.0.2785.113": [
+ "1.4.0",
+ "1.4.1",
+ "1.4.2",
+ "1.4.3",
+ "1.4.4",
+ "1.4.5"
+ ],
+ "53.0.2785.143": [
+ "1.4.6",
+ "1.4.7",
+ "1.4.8",
+ "1.4.10",
+ "1.4.11",
+ "1.4.13",
+ "1.4.14",
+ "1.4.15",
+ "1.4.16"
+ ],
+ "54.0.2840.51": [
+ "1.4.12"
+ ],
+ "54.0.2840.101": [
+ "1.5.0",
+ "1.5.1"
+ ],
+ "56.0.2924.87": [
+ "1.6.0",
+ "1.6.1",
+ "1.6.2",
+ "1.6.3",
+ "1.6.4",
+ "1.6.5",
+ "1.6.6",
+ "1.6.7",
+ "1.6.8",
+ "1.6.9",
+ "1.6.10",
+ "1.6.11",
+ "1.6.12",
+ "1.6.13",
+ "1.6.14",
+ "1.6.15",
+ "1.6.16",
+ "1.6.17",
+ "1.6.18"
+ ],
+ "58.0.3029.110": [
+ "1.7.0",
+ "1.7.1",
+ "1.7.2",
+ "1.7.3",
+ "1.7.4",
+ "1.7.5",
+ "1.7.6",
+ "1.7.7",
+ "1.7.8",
+ "1.7.9",
+ "1.7.10",
+ "1.7.11",
+ "1.7.12",
+ "1.7.13",
+ "1.7.14",
+ "1.7.15",
+ "1.7.16"
+ ],
+ "59.0.3071.115": [
+ "1.8.0",
+ "1.8.1",
+ "1.8.2-beta.1",
+ "1.8.2-beta.2",
+ "1.8.2-beta.3",
+ "1.8.2-beta.4",
+ "1.8.2-beta.5",
+ "1.8.2",
+ "1.8.3",
+ "1.8.4",
+ "1.8.5",
+ "1.8.6",
+ "1.8.7",
+ "1.8.8"
+ ],
+ "61.0.3163.100": [
+ "2.0.0-beta.1",
+ "2.0.0-beta.2",
+ "2.0.0-beta.3",
+ "2.0.0-beta.4",
+ "2.0.0-beta.5",
+ "2.0.0-beta.6",
+ "2.0.0-beta.7",
+ "2.0.0-beta.8",
+ "2.0.0",
+ "2.0.1",
+ "2.0.2",
+ "2.0.3",
+ "2.0.4",
+ "2.0.5",
+ "2.0.6",
+ "2.0.7",
+ "2.0.8-nightly.20180819",
+ "2.0.8-nightly.20180820",
+ "2.0.8",
+ "2.0.9",
+ "2.0.10",
+ "2.0.11",
+ "2.0.12",
+ "2.0.13",
+ "2.0.14",
+ "2.0.15",
+ "2.0.16",
+ "2.0.17",
+ "2.0.18",
+ "2.1.0-unsupported.20180809"
+ ],
+ "66.0.3359.181": [
+ "3.0.0-beta.1",
+ "3.0.0-beta.2",
+ "3.0.0-beta.3",
+ "3.0.0-beta.4",
+ "3.0.0-beta.5",
+ "3.0.0-beta.6",
+ "3.0.0-beta.7",
+ "3.0.0-beta.8",
+ "3.0.0-beta.9",
+ "3.0.0-beta.10",
+ "3.0.0-beta.11",
+ "3.0.0-beta.12",
+ "3.0.0-beta.13",
+ "3.0.0-nightly.20180818",
+ "3.0.0-nightly.20180821",
+ "3.0.0-nightly.20180823",
+ "3.0.0-nightly.20180904",
+ "3.0.0",
+ "3.0.1",
+ "3.0.2",
+ "3.0.3",
+ "3.0.4",
+ "3.0.5",
+ "3.0.6",
+ "3.0.7",
+ "3.0.8",
+ "3.0.9",
+ "3.0.10",
+ "3.0.11",
+ "3.0.12",
+ "3.0.13",
+ "3.0.14",
+ "3.0.15",
+ "3.0.16",
+ "3.1.0-beta.1",
+ "3.1.0-beta.2",
+ "3.1.0-beta.3",
+ "3.1.0-beta.4",
+ "3.1.0-beta.5",
+ "3.1.0",
+ "3.1.1",
+ "3.1.2",
+ "3.1.3",
+ "3.1.4",
+ "3.1.5",
+ "3.1.6",
+ "3.1.7",
+ "3.1.8",
+ "3.1.9",
+ "3.1.10",
+ "3.1.11",
+ "3.1.12",
+ "3.1.13",
+ "4.0.0-nightly.20180817",
+ "4.0.0-nightly.20180819",
+ "4.0.0-nightly.20180821"
+ ],
+ "69.0.3497.106": [
+ "4.0.0-beta.1",
+ "4.0.0-beta.2",
+ "4.0.0-beta.3",
+ "4.0.0-beta.4",
+ "4.0.0-beta.5",
+ "4.0.0-beta.6",
+ "4.0.0-beta.7",
+ "4.0.0-beta.8",
+ "4.0.0-beta.9",
+ "4.0.0-beta.10",
+ "4.0.0-beta.11",
+ "4.0.0-nightly.20181010",
+ "4.0.0",
+ "4.0.1",
+ "4.0.2",
+ "4.0.3",
+ "4.0.4",
+ "4.0.5",
+ "4.0.6"
+ ],
+ "67.0.3396.99": [
+ "4.0.0-nightly.20180929"
+ ],
+ "68.0.3440.128": [
+ "4.0.0-nightly.20181006"
+ ],
+ "69.0.3497.128": [
+ "4.0.7",
+ "4.0.8",
+ "4.1.0",
+ "4.1.1",
+ "4.1.2",
+ "4.1.3",
+ "4.1.4",
+ "4.1.5",
+ "4.2.0",
+ "4.2.1",
+ "4.2.2",
+ "4.2.3",
+ "4.2.4",
+ "4.2.5",
+ "4.2.6",
+ "4.2.7",
+ "4.2.8",
+ "4.2.9",
+ "4.2.10",
+ "4.2.11",
+ "4.2.12"
+ ],
+ "72.0.3626.52": [
+ "5.0.0-beta.1",
+ "5.0.0-beta.2"
+ ],
+ "73.0.3683.27": [
+ "5.0.0-beta.3"
+ ],
+ "73.0.3683.54": [
+ "5.0.0-beta.4"
+ ],
+ "73.0.3683.61": [
+ "5.0.0-beta.5"
+ ],
+ "73.0.3683.84": [
+ "5.0.0-beta.6"
+ ],
+ "73.0.3683.94": [
+ "5.0.0-beta.7"
+ ],
+ "73.0.3683.104": [
+ "5.0.0-beta.8"
+ ],
+ "73.0.3683.117": [
+ "5.0.0-beta.9"
+ ],
+ "70.0.3538.110": [
+ "5.0.0-nightly.20190107"
+ ],
+ "71.0.3578.98": [
+ "5.0.0-nightly.20190121",
+ "5.0.0-nightly.20190122"
+ ],
+ "73.0.3683.119": [
+ "5.0.0"
+ ],
+ "73.0.3683.121": [
+ "5.0.1",
+ "5.0.2",
+ "5.0.3",
+ "5.0.4",
+ "5.0.5",
+ "5.0.6",
+ "5.0.7",
+ "5.0.8",
+ "5.0.9",
+ "5.0.10",
+ "5.0.11",
+ "5.0.12",
+ "5.0.13"
+ ],
+ "76.0.3774.1": [
+ "6.0.0-beta.1"
+ ],
+ "76.0.3783.1": [
+ "6.0.0-beta.2",
+ "6.0.0-beta.3",
+ "6.0.0-beta.4"
+ ],
+ "76.0.3805.4": [
+ "6.0.0-beta.5"
+ ],
+ "76.0.3809.3": [
+ "6.0.0-beta.6"
+ ],
+ "76.0.3809.22": [
+ "6.0.0-beta.7"
+ ],
+ "76.0.3809.26": [
+ "6.0.0-beta.8",
+ "6.0.0-beta.9"
+ ],
+ "76.0.3809.37": [
+ "6.0.0-beta.10"
+ ],
+ "76.0.3809.42": [
+ "6.0.0-beta.11"
+ ],
+ "76.0.3809.54": [
+ "6.0.0-beta.12"
+ ],
+ "76.0.3809.60": [
+ "6.0.0-beta.13"
+ ],
+ "76.0.3809.68": [
+ "6.0.0-beta.14"
+ ],
+ "76.0.3809.74": [
+ "6.0.0-beta.15"
+ ],
+ "72.0.3626.107": [
+ "6.0.0-nightly.20190212"
+ ],
+ "72.0.3626.110": [
+ "6.0.0-nightly.20190213"
+ ],
+ "74.0.3724.8": [
+ "6.0.0-nightly.20190311"
+ ],
+ "76.0.3809.88": [
+ "6.0.0"
+ ],
+ "76.0.3809.102": [
+ "6.0.1"
+ ],
+ "76.0.3809.110": [
+ "6.0.2"
+ ],
+ "76.0.3809.126": [
+ "6.0.3"
+ ],
+ "76.0.3809.131": [
+ "6.0.4"
+ ],
+ "76.0.3809.136": [
+ "6.0.5"
+ ],
+ "76.0.3809.138": [
+ "6.0.6"
+ ],
+ "76.0.3809.139": [
+ "6.0.7"
+ ],
+ "76.0.3809.146": [
+ "6.0.8",
+ "6.0.9",
+ "6.0.10",
+ "6.0.11",
+ "6.0.12",
+ "6.1.0",
+ "6.1.1",
+ "6.1.2",
+ "6.1.3",
+ "6.1.4",
+ "6.1.5",
+ "6.1.6",
+ "6.1.7",
+ "6.1.8",
+ "6.1.9",
+ "6.1.10",
+ "6.1.11",
+ "6.1.12"
+ ],
+ "78.0.3866.0": [
+ "7.0.0-beta.1",
+ "7.0.0-beta.2",
+ "7.0.0-beta.3",
+ "7.0.0-nightly.20190727",
+ "7.0.0-nightly.20190728",
+ "7.0.0-nightly.20190729",
+ "7.0.0-nightly.20190730",
+ "7.0.0-nightly.20190731",
+ "8.0.0-nightly.20190801",
+ "8.0.0-nightly.20190802"
+ ],
+ "78.0.3896.6": [
+ "7.0.0-beta.4"
+ ],
+ "78.0.3905.1": [
+ "7.0.0-beta.5",
+ "7.0.0-beta.6",
+ "7.0.0-beta.7",
+ "7.0.0"
+ ],
+ "76.0.3784.0": [
+ "7.0.0-nightly.20190521"
+ ],
+ "76.0.3806.0": [
+ "7.0.0-nightly.20190529",
+ "7.0.0-nightly.20190530",
+ "7.0.0-nightly.20190531",
+ "7.0.0-nightly.20190602",
+ "7.0.0-nightly.20190603"
+ ],
+ "77.0.3814.0": [
+ "7.0.0-nightly.20190604"
+ ],
+ "77.0.3815.0": [
+ "7.0.0-nightly.20190605",
+ "7.0.0-nightly.20190606",
+ "7.0.0-nightly.20190607",
+ "7.0.0-nightly.20190608",
+ "7.0.0-nightly.20190609",
+ "7.0.0-nightly.20190611",
+ "7.0.0-nightly.20190612",
+ "7.0.0-nightly.20190613",
+ "7.0.0-nightly.20190615",
+ "7.0.0-nightly.20190616",
+ "7.0.0-nightly.20190618",
+ "7.0.0-nightly.20190619",
+ "7.0.0-nightly.20190622",
+ "7.0.0-nightly.20190623",
+ "7.0.0-nightly.20190624",
+ "7.0.0-nightly.20190627",
+ "7.0.0-nightly.20190629",
+ "7.0.0-nightly.20190630",
+ "7.0.0-nightly.20190701",
+ "7.0.0-nightly.20190702"
+ ],
+ "77.0.3843.0": [
+ "7.0.0-nightly.20190704",
+ "7.0.0-nightly.20190705"
+ ],
+ "77.0.3848.0": [
+ "7.0.0-nightly.20190719",
+ "7.0.0-nightly.20190720",
+ "7.0.0-nightly.20190721"
+ ],
+ "77.0.3864.0": [
+ "7.0.0-nightly.20190726"
+ ],
+ "78.0.3904.92": [
+ "7.0.1"
+ ],
+ "78.0.3904.94": [
+ "7.1.0"
+ ],
+ "78.0.3904.99": [
+ "7.1.1"
+ ],
+ "78.0.3904.113": [
+ "7.1.2"
+ ],
+ "78.0.3904.126": [
+ "7.1.3"
+ ],
+ "78.0.3904.130": [
+ "7.1.4",
+ "7.1.5",
+ "7.1.6",
+ "7.1.7",
+ "7.1.8",
+ "7.1.9",
+ "7.1.10",
+ "7.1.11",
+ "7.1.12",
+ "7.1.13",
+ "7.1.14",
+ "7.2.0",
+ "7.2.1",
+ "7.2.2",
+ "7.2.3",
+ "7.2.4",
+ "7.3.0",
+ "7.3.1",
+ "7.3.2",
+ "7.3.3"
+ ],
+ "79.0.3931.0": [
+ "8.0.0-beta.1",
+ "8.0.0-beta.2",
+ "8.0.0-nightly.20191019",
+ "8.0.0-nightly.20191020",
+ "8.0.0-nightly.20191021",
+ "8.0.0-nightly.20191023"
+ ],
+ "80.0.3955.0": [
+ "8.0.0-beta.3",
+ "8.0.0-beta.4"
+ ],
+ "80.0.3987.14": [
+ "8.0.0-beta.5"
+ ],
+ "80.0.3987.51": [
+ "8.0.0-beta.6"
+ ],
+ "80.0.3987.59": [
+ "8.0.0-beta.7"
+ ],
+ "80.0.3987.75": [
+ "8.0.0-beta.8",
+ "8.0.0-beta.9"
+ ],
+ "78.0.3871.0": [
+ "8.0.0-nightly.20190803",
+ "8.0.0-nightly.20190806",
+ "8.0.0-nightly.20190807",
+ "8.0.0-nightly.20190808",
+ "8.0.0-nightly.20190809",
+ "8.0.0-nightly.20190810",
+ "8.0.0-nightly.20190811",
+ "8.0.0-nightly.20190812",
+ "8.0.0-nightly.20190813",
+ "8.0.0-nightly.20190814",
+ "8.0.0-nightly.20190815"
+ ],
+ "78.0.3881.0": [
+ "8.0.0-nightly.20190816",
+ "8.0.0-nightly.20190817",
+ "8.0.0-nightly.20190818",
+ "8.0.0-nightly.20190819",
+ "8.0.0-nightly.20190820"
+ ],
+ "78.0.3892.0": [
+ "8.0.0-nightly.20190824",
+ "8.0.0-nightly.20190825",
+ "8.0.0-nightly.20190827",
+ "8.0.0-nightly.20190828",
+ "8.0.0-nightly.20190830",
+ "8.0.0-nightly.20190901",
+ "8.0.0-nightly.20190902",
+ "8.0.0-nightly.20190907",
+ "8.0.0-nightly.20190909",
+ "8.0.0-nightly.20190910",
+ "8.0.0-nightly.20190911",
+ "8.0.0-nightly.20190913",
+ "8.0.0-nightly.20190914",
+ "8.0.0-nightly.20190915",
+ "8.0.0-nightly.20190917"
+ ],
+ "79.0.3915.0": [
+ "8.0.0-nightly.20190919",
+ "8.0.0-nightly.20190920"
+ ],
+ "79.0.3919.0": [
+ "8.0.0-nightly.20190923",
+ "8.0.0-nightly.20190924",
+ "8.0.0-nightly.20190926",
+ "8.0.0-nightly.20190929",
+ "8.0.0-nightly.20190930",
+ "8.0.0-nightly.20191001",
+ "8.0.0-nightly.20191004",
+ "8.0.0-nightly.20191005",
+ "8.0.0-nightly.20191006",
+ "8.0.0-nightly.20191009",
+ "8.0.0-nightly.20191011",
+ "8.0.0-nightly.20191012",
+ "8.0.0-nightly.20191017"
+ ],
+ "80.0.3952.0": [
+ "8.0.0-nightly.20191101",
+ "8.0.0-nightly.20191105"
+ ],
+ "80.0.3987.86": [
+ "8.0.0",
+ "8.0.1",
+ "8.0.2"
+ ],
+ "80.0.3987.134": [
+ "8.0.3"
+ ],
+ "80.0.3987.137": [
+ "8.1.0"
+ ],
+ "80.0.3987.141": [
+ "8.1.1"
+ ],
+ "80.0.3987.158": [
+ "8.2.0"
+ ],
+ "80.0.3987.163": [
+ "8.2.1",
+ "8.2.2",
+ "8.2.3",
+ "8.5.3",
+ "8.5.4",
+ "8.5.5"
+ ],
+ "80.0.3987.165": [
+ "8.2.4",
+ "8.2.5",
+ "8.3.0",
+ "8.3.1",
+ "8.3.2",
+ "8.3.3",
+ "8.3.4",
+ "8.4.0",
+ "8.4.1",
+ "8.5.0",
+ "8.5.1",
+ "8.5.2"
+ ],
+ "82.0.4048.0": [
+ "9.0.0-beta.1",
+ "9.0.0-beta.2",
+ "9.0.0-beta.3",
+ "9.0.0-beta.4",
+ "9.0.0-beta.5"
+ ],
+ "82.0.4058.2": [
+ "9.0.0-beta.6",
+ "9.0.0-beta.7",
+ "9.0.0-beta.9"
+ ],
+ "82.0.4085.10": [
+ "9.0.0-beta.10"
+ ],
+ "82.0.4085.14": [
+ "9.0.0-beta.12",
+ "9.0.0-beta.13"
+ ],
+ "82.0.4085.27": [
+ "9.0.0-beta.14"
+ ],
+ "83.0.4102.3": [
+ "9.0.0-beta.15",
+ "9.0.0-beta.16"
+ ],
+ "83.0.4103.14": [
+ "9.0.0-beta.17"
+ ],
+ "83.0.4103.16": [
+ "9.0.0-beta.18"
+ ],
+ "83.0.4103.24": [
+ "9.0.0-beta.19"
+ ],
+ "83.0.4103.26": [
+ "9.0.0-beta.20",
+ "9.0.0-beta.21"
+ ],
+ "83.0.4103.34": [
+ "9.0.0-beta.22"
+ ],
+ "83.0.4103.44": [
+ "9.0.0-beta.23"
+ ],
+ "83.0.4103.45": [
+ "9.0.0-beta.24"
+ ],
+ "80.0.3954.0": [
+ "9.0.0-nightly.20191121",
+ "9.0.0-nightly.20191122",
+ "9.0.0-nightly.20191123",
+ "9.0.0-nightly.20191124",
+ "9.0.0-nightly.20191129",
+ "9.0.0-nightly.20191130",
+ "9.0.0-nightly.20191201",
+ "9.0.0-nightly.20191202",
+ "9.0.0-nightly.20191203",
+ "9.0.0-nightly.20191204",
+ "9.0.0-nightly.20191210"
+ ],
+ "81.0.3994.0": [
+ "9.0.0-nightly.20191220",
+ "9.0.0-nightly.20191221",
+ "9.0.0-nightly.20191222",
+ "9.0.0-nightly.20191223",
+ "9.0.0-nightly.20191224",
+ "9.0.0-nightly.20191225",
+ "9.0.0-nightly.20191226",
+ "9.0.0-nightly.20191228",
+ "9.0.0-nightly.20191229",
+ "9.0.0-nightly.20191230",
+ "9.0.0-nightly.20191231",
+ "9.0.0-nightly.20200101",
+ "9.0.0-nightly.20200103",
+ "9.0.0-nightly.20200104",
+ "9.0.0-nightly.20200105",
+ "9.0.0-nightly.20200106",
+ "9.0.0-nightly.20200108",
+ "9.0.0-nightly.20200109",
+ "9.0.0-nightly.20200110",
+ "9.0.0-nightly.20200111",
+ "9.0.0-nightly.20200113",
+ "9.0.0-nightly.20200115",
+ "9.0.0-nightly.20200116",
+ "9.0.0-nightly.20200117"
+ ],
+ "81.0.4030.0": [
+ "9.0.0-nightly.20200119",
+ "9.0.0-nightly.20200121"
+ ],
+ "83.0.4103.64": [
+ "9.0.0"
+ ],
+ "83.0.4103.94": [
+ "9.0.1",
+ "9.0.2"
+ ],
+ "83.0.4103.100": [
+ "9.0.3"
+ ],
+ "83.0.4103.104": [
+ "9.0.4"
+ ],
+ "83.0.4103.119": [
+ "9.0.5"
+ ],
+ "83.0.4103.122": [
+ "9.1.0",
+ "9.1.1",
+ "9.1.2",
+ "9.2.0",
+ "9.2.1",
+ "9.3.0",
+ "9.3.1",
+ "9.3.2",
+ "9.3.3",
+ "9.3.4",
+ "9.3.5",
+ "9.4.0",
+ "9.4.1",
+ "9.4.2",
+ "9.4.3",
+ "9.4.4"
+ ],
+ "84.0.4129.0": [
+ "10.0.0-beta.1",
+ "10.0.0-beta.2",
+ "10.0.0-nightly.20200501",
+ "10.0.0-nightly.20200504",
+ "10.0.0-nightly.20200505",
+ "10.0.0-nightly.20200506",
+ "10.0.0-nightly.20200507",
+ "10.0.0-nightly.20200508",
+ "10.0.0-nightly.20200511",
+ "10.0.0-nightly.20200512",
+ "10.0.0-nightly.20200513",
+ "10.0.0-nightly.20200514",
+ "10.0.0-nightly.20200515",
+ "10.0.0-nightly.20200518",
+ "10.0.0-nightly.20200519",
+ "10.0.0-nightly.20200520",
+ "10.0.0-nightly.20200521",
+ "11.0.0-nightly.20200525",
+ "11.0.0-nightly.20200526"
+ ],
+ "85.0.4161.2": [
+ "10.0.0-beta.3",
+ "10.0.0-beta.4"
+ ],
+ "85.0.4181.1": [
+ "10.0.0-beta.8",
+ "10.0.0-beta.9"
+ ],
+ "85.0.4183.19": [
+ "10.0.0-beta.10"
+ ],
+ "85.0.4183.20": [
+ "10.0.0-beta.11"
+ ],
+ "85.0.4183.26": [
+ "10.0.0-beta.12"
+ ],
+ "85.0.4183.39": [
+ "10.0.0-beta.13",
+ "10.0.0-beta.14",
+ "10.0.0-beta.15",
+ "10.0.0-beta.17",
+ "10.0.0-beta.19",
+ "10.0.0-beta.20",
+ "10.0.0-beta.21"
+ ],
+ "85.0.4183.70": [
+ "10.0.0-beta.23"
+ ],
+ "85.0.4183.78": [
+ "10.0.0-beta.24"
+ ],
+ "85.0.4183.80": [
+ "10.0.0-beta.25"
+ ],
+ "82.0.4050.0": [
+ "10.0.0-nightly.20200209",
+ "10.0.0-nightly.20200210",
+ "10.0.0-nightly.20200211",
+ "10.0.0-nightly.20200216",
+ "10.0.0-nightly.20200217",
+ "10.0.0-nightly.20200218",
+ "10.0.0-nightly.20200221",
+ "10.0.0-nightly.20200222",
+ "10.0.0-nightly.20200223",
+ "10.0.0-nightly.20200226",
+ "10.0.0-nightly.20200303"
+ ],
+ "82.0.4076.0": [
+ "10.0.0-nightly.20200304",
+ "10.0.0-nightly.20200305",
+ "10.0.0-nightly.20200306",
+ "10.0.0-nightly.20200309",
+ "10.0.0-nightly.20200310"
+ ],
+ "82.0.4083.0": [
+ "10.0.0-nightly.20200311"
+ ],
+ "83.0.4086.0": [
+ "10.0.0-nightly.20200316"
+ ],
+ "83.0.4087.0": [
+ "10.0.0-nightly.20200317",
+ "10.0.0-nightly.20200318",
+ "10.0.0-nightly.20200320",
+ "10.0.0-nightly.20200323",
+ "10.0.0-nightly.20200324",
+ "10.0.0-nightly.20200325",
+ "10.0.0-nightly.20200326",
+ "10.0.0-nightly.20200327",
+ "10.0.0-nightly.20200330",
+ "10.0.0-nightly.20200331",
+ "10.0.0-nightly.20200401",
+ "10.0.0-nightly.20200402",
+ "10.0.0-nightly.20200403",
+ "10.0.0-nightly.20200406"
+ ],
+ "83.0.4095.0": [
+ "10.0.0-nightly.20200408",
+ "10.0.0-nightly.20200410",
+ "10.0.0-nightly.20200413"
+ ],
+ "84.0.4114.0": [
+ "10.0.0-nightly.20200414"
+ ],
+ "84.0.4115.0": [
+ "10.0.0-nightly.20200415",
+ "10.0.0-nightly.20200416",
+ "10.0.0-nightly.20200417"
+ ],
+ "84.0.4121.0": [
+ "10.0.0-nightly.20200422",
+ "10.0.0-nightly.20200423"
+ ],
+ "84.0.4125.0": [
+ "10.0.0-nightly.20200427",
+ "10.0.0-nightly.20200428",
+ "10.0.0-nightly.20200429",
+ "10.0.0-nightly.20200430"
+ ],
+ "85.0.4183.84": [
+ "10.0.0"
+ ],
+ "85.0.4183.86": [
+ "10.0.1"
+ ],
+ "85.0.4183.87": [
+ "10.1.0"
+ ],
+ "85.0.4183.93": [
+ "10.1.1"
+ ],
+ "85.0.4183.98": [
+ "10.1.2"
+ ],
+ "85.0.4183.121": [
+ "10.1.3",
+ "10.1.4",
+ "10.1.5",
+ "10.1.6",
+ "10.1.7",
+ "10.2.0",
+ "10.3.0",
+ "10.3.1",
+ "10.3.2",
+ "10.4.0",
+ "10.4.1",
+ "10.4.2",
+ "10.4.3",
+ "10.4.4",
+ "10.4.5",
+ "10.4.6",
+ "10.4.7"
+ ],
+ "86.0.4234.0": [
+ "11.0.0-beta.1",
+ "11.0.0-beta.3",
+ "11.0.0-beta.4",
+ "11.0.0-beta.5",
+ "11.0.0-beta.6",
+ "11.0.0-beta.7",
+ "11.0.0-nightly.20200822",
+ "11.0.0-nightly.20200824",
+ "11.0.0-nightly.20200825",
+ "11.0.0-nightly.20200826",
+ "12.0.0-nightly.20200827",
+ "12.0.0-nightly.20200831",
+ "12.0.0-nightly.20200902",
+ "12.0.0-nightly.20200903",
+ "12.0.0-nightly.20200907",
+ "12.0.0-nightly.20200910",
+ "12.0.0-nightly.20200911",
+ "12.0.0-nightly.20200914"
+ ],
+ "87.0.4251.1": [
+ "11.0.0-beta.8",
+ "11.0.0-beta.9",
+ "11.0.0-beta.11"
+ ],
+ "87.0.4280.11": [
+ "11.0.0-beta.12",
+ "11.0.0-beta.13"
+ ],
+ "87.0.4280.27": [
+ "11.0.0-beta.16",
+ "11.0.0-beta.17",
+ "11.0.0-beta.18",
+ "11.0.0-beta.19"
+ ],
+ "87.0.4280.40": [
+ "11.0.0-beta.20"
+ ],
+ "87.0.4280.47": [
+ "11.0.0-beta.22",
+ "11.0.0-beta.23"
+ ],
+ "85.0.4156.0": [
+ "11.0.0-nightly.20200529"
+ ],
+ "85.0.4162.0": [
+ "11.0.0-nightly.20200602",
+ "11.0.0-nightly.20200603",
+ "11.0.0-nightly.20200604",
+ "11.0.0-nightly.20200609",
+ "11.0.0-nightly.20200610",
+ "11.0.0-nightly.20200611",
+ "11.0.0-nightly.20200615",
+ "11.0.0-nightly.20200616",
+ "11.0.0-nightly.20200617",
+ "11.0.0-nightly.20200618",
+ "11.0.0-nightly.20200619"
+ ],
+ "85.0.4179.0": [
+ "11.0.0-nightly.20200701",
+ "11.0.0-nightly.20200702",
+ "11.0.0-nightly.20200703",
+ "11.0.0-nightly.20200706",
+ "11.0.0-nightly.20200707",
+ "11.0.0-nightly.20200708",
+ "11.0.0-nightly.20200709"
+ ],
+ "86.0.4203.0": [
+ "11.0.0-nightly.20200716",
+ "11.0.0-nightly.20200717",
+ "11.0.0-nightly.20200720",
+ "11.0.0-nightly.20200721"
+ ],
+ "86.0.4209.0": [
+ "11.0.0-nightly.20200723",
+ "11.0.0-nightly.20200724",
+ "11.0.0-nightly.20200729",
+ "11.0.0-nightly.20200730",
+ "11.0.0-nightly.20200731",
+ "11.0.0-nightly.20200803",
+ "11.0.0-nightly.20200804",
+ "11.0.0-nightly.20200805",
+ "11.0.0-nightly.20200811",
+ "11.0.0-nightly.20200812"
+ ],
+ "87.0.4280.60": [
+ "11.0.0",
+ "11.0.1"
+ ],
+ "87.0.4280.67": [
+ "11.0.2",
+ "11.0.3",
+ "11.0.4"
+ ],
+ "87.0.4280.88": [
+ "11.0.5",
+ "11.1.0",
+ "11.1.1"
+ ],
+ "87.0.4280.141": [
+ "11.2.0",
+ "11.2.1",
+ "11.2.2",
+ "11.2.3",
+ "11.3.0",
+ "11.4.0",
+ "11.4.1",
+ "11.4.2",
+ "11.4.3",
+ "11.4.4",
+ "11.4.5",
+ "11.4.6",
+ "11.4.7",
+ "11.4.8",
+ "11.4.9",
+ "11.4.10",
+ "11.4.11",
+ "11.4.12",
+ "11.5.0"
+ ],
+ "89.0.4328.0": [
+ "12.0.0-beta.1",
+ "12.0.0-beta.3",
+ "12.0.0-beta.4",
+ "12.0.0-beta.5",
+ "12.0.0-beta.6",
+ "12.0.0-beta.7",
+ "12.0.0-beta.8",
+ "12.0.0-beta.9",
+ "12.0.0-beta.10",
+ "12.0.0-beta.11",
+ "12.0.0-beta.12",
+ "12.0.0-beta.14",
+ "13.0.0-nightly.20201119",
+ "13.0.0-nightly.20201123",
+ "13.0.0-nightly.20201124",
+ "13.0.0-nightly.20201126",
+ "13.0.0-nightly.20201127",
+ "13.0.0-nightly.20201130",
+ "13.0.0-nightly.20201201",
+ "13.0.0-nightly.20201202",
+ "13.0.0-nightly.20201203",
+ "13.0.0-nightly.20201204",
+ "13.0.0-nightly.20201207",
+ "13.0.0-nightly.20201208",
+ "13.0.0-nightly.20201209",
+ "13.0.0-nightly.20201210",
+ "13.0.0-nightly.20201211",
+ "13.0.0-nightly.20201214"
+ ],
+ "89.0.4348.1": [
+ "12.0.0-beta.16",
+ "12.0.0-beta.18",
+ "12.0.0-beta.19",
+ "12.0.0-beta.20"
+ ],
+ "89.0.4388.2": [
+ "12.0.0-beta.21",
+ "12.0.0-beta.22",
+ "12.0.0-beta.23",
+ "12.0.0-beta.24",
+ "12.0.0-beta.25",
+ "12.0.0-beta.26"
+ ],
+ "89.0.4389.23": [
+ "12.0.0-beta.27",
+ "12.0.0-beta.28",
+ "12.0.0-beta.29"
+ ],
+ "89.0.4389.58": [
+ "12.0.0-beta.30",
+ "12.0.0-beta.31"
+ ],
+ "87.0.4268.0": [
+ "12.0.0-nightly.20201013",
+ "12.0.0-nightly.20201014",
+ "12.0.0-nightly.20201015"
+ ],
+ "88.0.4292.0": [
+ "12.0.0-nightly.20201023",
+ "12.0.0-nightly.20201026"
+ ],
+ "88.0.4306.0": [
+ "12.0.0-nightly.20201030",
+ "12.0.0-nightly.20201102",
+ "12.0.0-nightly.20201103",
+ "12.0.0-nightly.20201104",
+ "12.0.0-nightly.20201105",
+ "12.0.0-nightly.20201106",
+ "12.0.0-nightly.20201111",
+ "12.0.0-nightly.20201112"
+ ],
+ "88.0.4324.0": [
+ "12.0.0-nightly.20201116"
+ ],
+ "89.0.4389.69": [
+ "12.0.0"
+ ],
+ "89.0.4389.82": [
+ "12.0.1"
+ ],
+ "89.0.4389.90": [
+ "12.0.2"
+ ],
+ "89.0.4389.114": [
+ "12.0.3",
+ "12.0.4"
+ ],
+ "89.0.4389.128": [
+ "12.0.5",
+ "12.0.6",
+ "12.0.7",
+ "12.0.8",
+ "12.0.9",
+ "12.0.10",
+ "12.0.11",
+ "12.0.12",
+ "12.0.13",
+ "12.0.14",
+ "12.0.15",
+ "12.0.16",
+ "12.0.17",
+ "12.0.18",
+ "12.1.0",
+ "12.1.1",
+ "12.1.2",
+ "12.2.0",
+ "12.2.1",
+ "12.2.2",
+ "12.2.3"
+ ],
+ "90.0.4402.0": [
+ "13.0.0-beta.2",
+ "13.0.0-beta.3",
+ "13.0.0-nightly.20210210",
+ "13.0.0-nightly.20210211",
+ "13.0.0-nightly.20210212",
+ "13.0.0-nightly.20210216",
+ "13.0.0-nightly.20210217",
+ "13.0.0-nightly.20210218",
+ "13.0.0-nightly.20210219",
+ "13.0.0-nightly.20210222",
+ "13.0.0-nightly.20210225",
+ "13.0.0-nightly.20210226",
+ "13.0.0-nightly.20210301",
+ "13.0.0-nightly.20210302",
+ "13.0.0-nightly.20210303",
+ "14.0.0-nightly.20210304"
+ ],
+ "90.0.4415.0": [
+ "13.0.0-beta.4",
+ "13.0.0-beta.5",
+ "13.0.0-beta.6",
+ "13.0.0-beta.7",
+ "13.0.0-beta.8",
+ "13.0.0-beta.9",
+ "13.0.0-beta.11",
+ "13.0.0-beta.12",
+ "13.0.0-beta.13",
+ "14.0.0-nightly.20210305",
+ "14.0.0-nightly.20210308",
+ "14.0.0-nightly.20210309",
+ "14.0.0-nightly.20210311",
+ "14.0.0-nightly.20210315",
+ "14.0.0-nightly.20210316",
+ "14.0.0-nightly.20210317",
+ "14.0.0-nightly.20210318",
+ "14.0.0-nightly.20210319",
+ "14.0.0-nightly.20210323",
+ "14.0.0-nightly.20210324",
+ "14.0.0-nightly.20210325",
+ "14.0.0-nightly.20210326",
+ "14.0.0-nightly.20210329",
+ "14.0.0-nightly.20210330"
+ ],
+ "91.0.4448.0": [
+ "13.0.0-beta.14",
+ "13.0.0-beta.16",
+ "13.0.0-beta.17",
+ "13.0.0-beta.18",
+ "13.0.0-beta.20",
+ "14.0.0-nightly.20210331",
+ "14.0.0-nightly.20210401",
+ "14.0.0-nightly.20210402",
+ "14.0.0-nightly.20210406",
+ "14.0.0-nightly.20210407",
+ "14.0.0-nightly.20210408",
+ "14.0.0-nightly.20210409",
+ "14.0.0-nightly.20210413"
+ ],
+ "91.0.4472.33": [
+ "13.0.0-beta.21",
+ "13.0.0-beta.22",
+ "13.0.0-beta.23"
+ ],
+ "91.0.4472.38": [
+ "13.0.0-beta.24",
+ "13.0.0-beta.26",
+ "13.0.0-beta.27",
+ "13.0.0-beta.28"
+ ],
+ "89.0.4349.0": [
+ "13.0.0-nightly.20201215",
+ "13.0.0-nightly.20201216",
+ "13.0.0-nightly.20201221",
+ "13.0.0-nightly.20201222"
+ ],
+ "89.0.4359.0": [
+ "13.0.0-nightly.20201223",
+ "13.0.0-nightly.20210104",
+ "13.0.0-nightly.20210108",
+ "13.0.0-nightly.20210111"
+ ],
+ "89.0.4386.0": [
+ "13.0.0-nightly.20210113",
+ "13.0.0-nightly.20210114",
+ "13.0.0-nightly.20210118",
+ "13.0.0-nightly.20210122",
+ "13.0.0-nightly.20210125"
+ ],
+ "89.0.4389.0": [
+ "13.0.0-nightly.20210127",
+ "13.0.0-nightly.20210128",
+ "13.0.0-nightly.20210129",
+ "13.0.0-nightly.20210201",
+ "13.0.0-nightly.20210202",
+ "13.0.0-nightly.20210203",
+ "13.0.0-nightly.20210205",
+ "13.0.0-nightly.20210208",
+ "13.0.0-nightly.20210209"
+ ],
+ "91.0.4472.69": [
+ "13.0.0",
+ "13.0.1"
+ ],
+ "91.0.4472.77": [
+ "13.1.0",
+ "13.1.1",
+ "13.1.2"
+ ],
+ "91.0.4472.106": [
+ "13.1.3",
+ "13.1.4"
+ ],
+ "91.0.4472.124": [
+ "13.1.5",
+ "13.1.6",
+ "13.1.7"
+ ],
+ "91.0.4472.164": [
+ "13.1.8",
+ "13.1.9",
+ "13.2.0",
+ "13.2.1",
+ "13.2.2",
+ "13.2.3",
+ "13.3.0",
+ "13.4.0",
+ "13.5.0",
+ "13.5.1",
+ "13.5.2",
+ "13.6.0",
+ "13.6.1",
+ "13.6.2"
+ ],
+ "92.0.4511.0": [
+ "14.0.0-beta.1",
+ "14.0.0-beta.2",
+ "14.0.0-beta.3",
+ "14.0.0-nightly.20210520",
+ "14.0.0-nightly.20210523",
+ "14.0.0-nightly.20210524",
+ "15.0.0-nightly.20210527",
+ "15.0.0-nightly.20210528",
+ "15.0.0-nightly.20210531",
+ "15.0.0-nightly.20210601",
+ "15.0.0-nightly.20210602"
+ ],
+ "93.0.4536.0": [
+ "14.0.0-beta.5",
+ "14.0.0-beta.6",
+ "14.0.0-beta.7",
+ "14.0.0-beta.8",
+ "15.0.0-nightly.20210609",
+ "15.0.0-nightly.20210610",
+ "15.0.0-nightly.20210611",
+ "15.0.0-nightly.20210614",
+ "15.0.0-nightly.20210615",
+ "15.0.0-nightly.20210616"
+ ],
+ "93.0.4539.0": [
+ "14.0.0-beta.9",
+ "14.0.0-beta.10",
+ "15.0.0-nightly.20210617",
+ "15.0.0-nightly.20210618",
+ "15.0.0-nightly.20210621",
+ "15.0.0-nightly.20210622"
+ ],
+ "93.0.4557.4": [
+ "14.0.0-beta.11",
+ "14.0.0-beta.12"
+ ],
+ "93.0.4566.0": [
+ "14.0.0-beta.13",
+ "14.0.0-beta.14",
+ "14.0.0-beta.15",
+ "14.0.0-beta.16",
+ "14.0.0-beta.17",
+ "15.0.0-alpha.1",
+ "15.0.0-alpha.2",
+ "15.0.0-nightly.20210706",
+ "15.0.0-nightly.20210707",
+ "15.0.0-nightly.20210708",
+ "15.0.0-nightly.20210709",
+ "15.0.0-nightly.20210712",
+ "15.0.0-nightly.20210713",
+ "15.0.0-nightly.20210714",
+ "15.0.0-nightly.20210715",
+ "15.0.0-nightly.20210716",
+ "15.0.0-nightly.20210719",
+ "15.0.0-nightly.20210720",
+ "15.0.0-nightly.20210721",
+ "16.0.0-nightly.20210722",
+ "16.0.0-nightly.20210723",
+ "16.0.0-nightly.20210726"
+ ],
+ "93.0.4577.15": [
+ "14.0.0-beta.18",
+ "14.0.0-beta.19",
+ "14.0.0-beta.20",
+ "14.0.0-beta.21"
+ ],
+ "93.0.4577.25": [
+ "14.0.0-beta.22",
+ "14.0.0-beta.23"
+ ],
+ "93.0.4577.51": [
+ "14.0.0-beta.24",
+ "14.0.0-beta.25"
+ ],
+ "92.0.4475.0": [
+ "14.0.0-nightly.20210426",
+ "14.0.0-nightly.20210427"
+ ],
+ "92.0.4488.0": [
+ "14.0.0-nightly.20210430",
+ "14.0.0-nightly.20210503"
+ ],
+ "92.0.4496.0": [
+ "14.0.0-nightly.20210505"
+ ],
+ "92.0.4498.0": [
+ "14.0.0-nightly.20210506"
+ ],
+ "92.0.4499.0": [
+ "14.0.0-nightly.20210507",
+ "14.0.0-nightly.20210510",
+ "14.0.0-nightly.20210511",
+ "14.0.0-nightly.20210512",
+ "14.0.0-nightly.20210513"
+ ],
+ "92.0.4505.0": [
+ "14.0.0-nightly.20210514",
+ "14.0.0-nightly.20210517",
+ "14.0.0-nightly.20210518",
+ "14.0.0-nightly.20210519"
+ ],
+ "93.0.4577.58": [
+ "14.0.0"
+ ],
+ "93.0.4577.63": [
+ "14.0.1"
+ ],
+ "93.0.4577.82": [
+ "14.0.2",
+ "14.1.0",
+ "14.1.1",
+ "14.2.0",
+ "14.2.1"
+ ],
+ "94.0.4584.0": [
+ "15.0.0-alpha.3",
+ "15.0.0-alpha.4",
+ "15.0.0-alpha.5",
+ "15.0.0-alpha.6",
+ "16.0.0-nightly.20210727",
+ "16.0.0-nightly.20210728",
+ "16.0.0-nightly.20210729",
+ "16.0.0-nightly.20210730",
+ "16.0.0-nightly.20210802",
+ "16.0.0-nightly.20210803",
+ "16.0.0-nightly.20210804",
+ "16.0.0-nightly.20210805",
+ "16.0.0-nightly.20210806",
+ "16.0.0-nightly.20210809",
+ "16.0.0-nightly.20210810",
+ "16.0.0-nightly.20210811"
+ ],
+ "94.0.4590.2": [
+ "15.0.0-alpha.7",
+ "15.0.0-alpha.8",
+ "15.0.0-alpha.9",
+ "16.0.0-nightly.20210812",
+ "16.0.0-nightly.20210813",
+ "16.0.0-nightly.20210816",
+ "16.0.0-nightly.20210817",
+ "16.0.0-nightly.20210818",
+ "16.0.0-nightly.20210819",
+ "16.0.0-nightly.20210820",
+ "16.0.0-nightly.20210823"
+ ],
+ "94.0.4606.12": [
+ "15.0.0-alpha.10"
+ ],
+ "94.0.4606.20": [
+ "15.0.0-beta.1",
+ "15.0.0-beta.2"
+ ],
+ "94.0.4606.31": [
+ "15.0.0-beta.3",
+ "15.0.0-beta.4",
+ "15.0.0-beta.5",
+ "15.0.0-beta.6",
+ "15.0.0-beta.7"
+ ],
+ "93.0.4530.0": [
+ "15.0.0-nightly.20210603",
+ "15.0.0-nightly.20210604"
+ ],
+ "93.0.4535.0": [
+ "15.0.0-nightly.20210608"
+ ],
+ "93.0.4550.0": [
+ "15.0.0-nightly.20210623",
+ "15.0.0-nightly.20210624"
+ ],
+ "93.0.4552.0": [
+ "15.0.0-nightly.20210625",
+ "15.0.0-nightly.20210628",
+ "15.0.0-nightly.20210629"
+ ],
+ "93.0.4558.0": [
+ "15.0.0-nightly.20210630",
+ "15.0.0-nightly.20210701",
+ "15.0.0-nightly.20210702",
+ "15.0.0-nightly.20210705"
+ ],
+ "94.0.4606.51": [
+ "15.0.0"
+ ],
+ "94.0.4606.61": [
+ "15.1.0",
+ "15.1.1"
+ ],
+ "94.0.4606.71": [
+ "15.1.2"
+ ],
+ "94.0.4606.81": [
+ "15.2.0",
+ "15.3.0",
+ "15.3.1",
+ "15.3.2"
+ ],
+ "95.0.4629.0": [
+ "16.0.0-alpha.1",
+ "16.0.0-alpha.2",
+ "16.0.0-alpha.3",
+ "16.0.0-alpha.4",
+ "16.0.0-alpha.5",
+ "16.0.0-alpha.6",
+ "16.0.0-alpha.7",
+ "16.0.0-nightly.20210902",
+ "16.0.0-nightly.20210903",
+ "16.0.0-nightly.20210906",
+ "16.0.0-nightly.20210907",
+ "16.0.0-nightly.20210908",
+ "16.0.0-nightly.20210909",
+ "16.0.0-nightly.20210910",
+ "16.0.0-nightly.20210913",
+ "16.0.0-nightly.20210914",
+ "16.0.0-nightly.20210915",
+ "16.0.0-nightly.20210916",
+ "16.0.0-nightly.20210917",
+ "16.0.0-nightly.20210920",
+ "16.0.0-nightly.20210921",
+ "16.0.0-nightly.20210922",
+ "17.0.0-nightly.20210923",
+ "17.0.0-nightly.20210924",
+ "17.0.0-nightly.20210927",
+ "17.0.0-nightly.20210928",
+ "17.0.0-nightly.20210929",
+ "17.0.0-nightly.20210930",
+ "17.0.0-nightly.20211001",
+ "17.0.0-nightly.20211004",
+ "17.0.0-nightly.20211005"
+ ],
+ "96.0.4647.0": [
+ "16.0.0-alpha.8",
+ "16.0.0-alpha.9",
+ "16.0.0-beta.1",
+ "16.0.0-beta.2",
+ "16.0.0-beta.3",
+ "17.0.0-nightly.20211006",
+ "17.0.0-nightly.20211007",
+ "17.0.0-nightly.20211008",
+ "17.0.0-nightly.20211011",
+ "17.0.0-nightly.20211012",
+ "17.0.0-nightly.20211013",
+ "17.0.0-nightly.20211014",
+ "17.0.0-nightly.20211015",
+ "17.0.0-nightly.20211018",
+ "17.0.0-nightly.20211019",
+ "17.0.0-nightly.20211020",
+ "17.0.0-nightly.20211021"
+ ],
+ "96.0.4664.18": [
+ "16.0.0-beta.4",
+ "16.0.0-beta.5"
+ ],
+ "96.0.4664.27": [
+ "16.0.0-beta.6",
+ "16.0.0-beta.7"
+ ],
+ "96.0.4664.35": [
+ "16.0.0-beta.8",
+ "16.0.0-beta.9"
+ ],
+ "95.0.4612.5": [
+ "16.0.0-nightly.20210824",
+ "16.0.0-nightly.20210825",
+ "16.0.0-nightly.20210826",
+ "16.0.0-nightly.20210827",
+ "16.0.0-nightly.20210830",
+ "16.0.0-nightly.20210831",
+ "16.0.0-nightly.20210901"
+ ],
+ "96.0.4664.45": [
+ "16.0.0",
+ "16.0.1"
+ ],
+ "96.0.4664.55": [
+ "16.0.2"
+ ],
+ "96.0.4664.4": [
+ "17.0.0-alpha.1",
+ "17.0.0-alpha.2",
+ "17.0.0-alpha.3",
+ "17.0.0-nightly.20211022",
+ "17.0.0-nightly.20211025",
+ "17.0.0-nightly.20211026",
+ "17.0.0-nightly.20211027",
+ "17.0.0-nightly.20211028",
+ "17.0.0-nightly.20211029",
+ "17.0.0-nightly.20211101",
+ "17.0.0-nightly.20211102",
+ "17.0.0-nightly.20211103",
+ "17.0.0-nightly.20211104",
+ "17.0.0-nightly.20211105",
+ "17.0.0-nightly.20211108",
+ "17.0.0-nightly.20211109",
+ "17.0.0-nightly.20211110",
+ "17.0.0-nightly.20211111",
+ "17.0.0-nightly.20211112",
+ "17.0.0-nightly.20211115",
+ "17.0.0-nightly.20211116",
+ "17.0.0-nightly.20211117",
+ "18.0.0-nightly.20211118",
+ "18.0.0-nightly.20211119",
+ "18.0.0-nightly.20211122",
+ "18.0.0-nightly.20211123"
+ ],
+ "98.0.4706.0": [
+ "17.0.0-alpha.4",
+ "18.0.0-nightly.20211124",
+ "18.0.0-nightly.20211125",
+ "18.0.0-nightly.20211126"
+ ]
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json
new file mode 100644
index 0000000000..ff33a1f6b9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json
@@ -0,0 +1 @@
+{"39.0.2171.65":["0.20.0","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.20.6","0.20.7","0.20.8"],"40.0.2214.91":["0.21.0","0.21.1","0.21.2"],"41.0.2272.76":["0.21.3","0.22.1","0.22.2","0.22.3","0.23.0","0.24.0"],"42.0.2311.107":["0.25.0","0.25.1","0.25.2","0.25.3","0.26.0","0.26.1","0.27.0","0.27.1"],"43.0.2357.65":["0.27.2","0.27.3","0.28.0","0.28.1","0.28.2","0.28.3","0.29.1","0.29.2"],"44.0.2403.125":["0.30.4","0.31.0"],"45.0.2454.85":["0.31.2","0.32.2","0.32.3","0.33.0","0.33.1","0.33.2","0.33.3","0.33.4","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.1","0.34.2","0.34.3","0.34.4","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5"],"47.0.2526.73":["0.36.0","0.36.2","0.36.3","0.36.4"],"47.0.2526.110":["0.36.5","0.36.6","0.36.7","0.36.8","0.36.9","0.36.10","0.36.11","0.36.12"],"49.0.2623.75":["0.37.0","0.37.1","0.37.3","0.37.4","0.37.5","0.37.6","0.37.7","0.37.8","1.0.0","1.0.1","1.0.2"],"50.0.2661.102":["1.1.0","1.1.1","1.1.2","1.1.3"],"51.0.2704.63":["1.2.0","1.2.1"],"51.0.2704.84":["1.2.2","1.2.3"],"51.0.2704.103":["1.2.4","1.2.5"],"51.0.2704.106":["1.2.6","1.2.7","1.2.8"],"52.0.2743.82":["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.9","1.3.10","1.3.13","1.3.14","1.3.15"],"53.0.2785.113":["1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5"],"53.0.2785.143":["1.4.6","1.4.7","1.4.8","1.4.10","1.4.11","1.4.13","1.4.14","1.4.15","1.4.16"],"54.0.2840.51":["1.4.12"],"54.0.2840.101":["1.5.0","1.5.1"],"56.0.2924.87":["1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","1.6.10","1.6.11","1.6.12","1.6.13","1.6.14","1.6.15","1.6.16","1.6.17","1.6.18"],"58.0.3029.110":["1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.15","1.7.16"],"59.0.3071.115":["1.8.0","1.8.1","1.8.2-beta.1","1.8.2-beta.2","1.8.2-beta.3","1.8.2-beta.4","1.8.2-beta.5","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8"],"61.0.3163.100":["2.0.0-beta.1","2.0.0-beta.2","2.0.0-beta.3","2.0.0-beta.4","2.0.0-beta.5","2.0.0-beta.6","2.0.0-beta.7","2.0.0-beta.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8-nightly.20180819","2.0.8-nightly.20180820","2.0.8","2.0.9","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.1.0-unsupported.20180809"],"66.0.3359.181":["3.0.0-beta.1","3.0.0-beta.2","3.0.0-beta.3","3.0.0-beta.4","3.0.0-beta.5","3.0.0-beta.6","3.0.0-beta.7","3.0.0-beta.8","3.0.0-beta.9","3.0.0-beta.10","3.0.0-beta.11","3.0.0-beta.12","3.0.0-beta.13","3.0.0-nightly.20180818","3.0.0-nightly.20180821","3.0.0-nightly.20180823","3.0.0-nightly.20180904","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.1.0-beta.1","3.1.0-beta.2","3.1.0-beta.3","3.1.0-beta.4","3.1.0-beta.5","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","4.0.0-nightly.20180817","4.0.0-nightly.20180819","4.0.0-nightly.20180821"],"69.0.3497.106":["4.0.0-beta.1","4.0.0-beta.2","4.0.0-beta.3","4.0.0-beta.4","4.0.0-beta.5","4.0.0-beta.6","4.0.0-beta.7","4.0.0-beta.8","4.0.0-beta.9","4.0.0-beta.10","4.0.0-beta.11","4.0.0-nightly.20181010","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6"],"67.0.3396.99":["4.0.0-nightly.20180929"],"68.0.3440.128":["4.0.0-nightly.20181006"],"69.0.3497.128":["4.0.7","4.0.8","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.2.0","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.2.7","4.2.8","4.2.9","4.2.10","4.2.11","4.2.12"],"72.0.3626.52":["5.0.0-beta.1","5.0.0-beta.2"],"73.0.3683.27":["5.0.0-beta.3"],"73.0.3683.54":["5.0.0-beta.4"],"73.0.3683.61":["5.0.0-beta.5"],"73.0.3683.84":["5.0.0-beta.6"],"73.0.3683.94":["5.0.0-beta.7"],"73.0.3683.104":["5.0.0-beta.8"],"73.0.3683.117":["5.0.0-beta.9"],"70.0.3538.110":["5.0.0-nightly.20190107"],"71.0.3578.98":["5.0.0-nightly.20190121","5.0.0-nightly.20190122"],"73.0.3683.119":["5.0.0"],"73.0.3683.121":["5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.0.10","5.0.11","5.0.12","5.0.13"],"76.0.3774.1":["6.0.0-beta.1"],"76.0.3783.1":["6.0.0-beta.2","6.0.0-beta.3","6.0.0-beta.4"],"76.0.3805.4":["6.0.0-beta.5"],"76.0.3809.3":["6.0.0-beta.6"],"76.0.3809.22":["6.0.0-beta.7"],"76.0.3809.26":["6.0.0-beta.8","6.0.0-beta.9"],"76.0.3809.37":["6.0.0-beta.10"],"76.0.3809.42":["6.0.0-beta.11"],"76.0.3809.54":["6.0.0-beta.12"],"76.0.3809.60":["6.0.0-beta.13"],"76.0.3809.68":["6.0.0-beta.14"],"76.0.3809.74":["6.0.0-beta.15"],"72.0.3626.107":["6.0.0-nightly.20190212"],"72.0.3626.110":["6.0.0-nightly.20190213"],"74.0.3724.8":["6.0.0-nightly.20190311"],"76.0.3809.88":["6.0.0"],"76.0.3809.102":["6.0.1"],"76.0.3809.110":["6.0.2"],"76.0.3809.126":["6.0.3"],"76.0.3809.131":["6.0.4"],"76.0.3809.136":["6.0.5"],"76.0.3809.138":["6.0.6"],"76.0.3809.139":["6.0.7"],"76.0.3809.146":["6.0.8","6.0.9","6.0.10","6.0.11","6.0.12","6.1.0","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.1.7","6.1.8","6.1.9","6.1.10","6.1.11","6.1.12"],"78.0.3866.0":["7.0.0-beta.1","7.0.0-beta.2","7.0.0-beta.3","7.0.0-nightly.20190727","7.0.0-nightly.20190728","7.0.0-nightly.20190729","7.0.0-nightly.20190730","7.0.0-nightly.20190731","8.0.0-nightly.20190801","8.0.0-nightly.20190802"],"78.0.3896.6":["7.0.0-beta.4"],"78.0.3905.1":["7.0.0-beta.5","7.0.0-beta.6","7.0.0-beta.7","7.0.0"],"76.0.3784.0":["7.0.0-nightly.20190521"],"76.0.3806.0":["7.0.0-nightly.20190529","7.0.0-nightly.20190530","7.0.0-nightly.20190531","7.0.0-nightly.20190602","7.0.0-nightly.20190603"],"77.0.3814.0":["7.0.0-nightly.20190604"],"77.0.3815.0":["7.0.0-nightly.20190605","7.0.0-nightly.20190606","7.0.0-nightly.20190607","7.0.0-nightly.20190608","7.0.0-nightly.20190609","7.0.0-nightly.20190611","7.0.0-nightly.20190612","7.0.0-nightly.20190613","7.0.0-nightly.20190615","7.0.0-nightly.20190616","7.0.0-nightly.20190618","7.0.0-nightly.20190619","7.0.0-nightly.20190622","7.0.0-nightly.20190623","7.0.0-nightly.20190624","7.0.0-nightly.20190627","7.0.0-nightly.20190629","7.0.0-nightly.20190630","7.0.0-nightly.20190701","7.0.0-nightly.20190702"],"77.0.3843.0":["7.0.0-nightly.20190704","7.0.0-nightly.20190705"],"77.0.3848.0":["7.0.0-nightly.20190719","7.0.0-nightly.20190720","7.0.0-nightly.20190721"],"77.0.3864.0":["7.0.0-nightly.20190726"],"78.0.3904.92":["7.0.1"],"78.0.3904.94":["7.1.0"],"78.0.3904.99":["7.1.1"],"78.0.3904.113":["7.1.2"],"78.0.3904.126":["7.1.3"],"78.0.3904.130":["7.1.4","7.1.5","7.1.6","7.1.7","7.1.8","7.1.9","7.1.10","7.1.11","7.1.12","7.1.13","7.1.14","7.2.0","7.2.1","7.2.2","7.2.3","7.2.4","7.3.0","7.3.1","7.3.2","7.3.3"],"79.0.3931.0":["8.0.0-beta.1","8.0.0-beta.2","8.0.0-nightly.20191019","8.0.0-nightly.20191020","8.0.0-nightly.20191021","8.0.0-nightly.20191023"],"80.0.3955.0":["8.0.0-beta.3","8.0.0-beta.4"],"80.0.3987.14":["8.0.0-beta.5"],"80.0.3987.51":["8.0.0-beta.6"],"80.0.3987.59":["8.0.0-beta.7"],"80.0.3987.75":["8.0.0-beta.8","8.0.0-beta.9"],"78.0.3871.0":["8.0.0-nightly.20190803","8.0.0-nightly.20190806","8.0.0-nightly.20190807","8.0.0-nightly.20190808","8.0.0-nightly.20190809","8.0.0-nightly.20190810","8.0.0-nightly.20190811","8.0.0-nightly.20190812","8.0.0-nightly.20190813","8.0.0-nightly.20190814","8.0.0-nightly.20190815"],"78.0.3881.0":["8.0.0-nightly.20190816","8.0.0-nightly.20190817","8.0.0-nightly.20190818","8.0.0-nightly.20190819","8.0.0-nightly.20190820"],"78.0.3892.0":["8.0.0-nightly.20190824","8.0.0-nightly.20190825","8.0.0-nightly.20190827","8.0.0-nightly.20190828","8.0.0-nightly.20190830","8.0.0-nightly.20190901","8.0.0-nightly.20190902","8.0.0-nightly.20190907","8.0.0-nightly.20190909","8.0.0-nightly.20190910","8.0.0-nightly.20190911","8.0.0-nightly.20190913","8.0.0-nightly.20190914","8.0.0-nightly.20190915","8.0.0-nightly.20190917"],"79.0.3915.0":["8.0.0-nightly.20190919","8.0.0-nightly.20190920"],"79.0.3919.0":["8.0.0-nightly.20190923","8.0.0-nightly.20190924","8.0.0-nightly.20190926","8.0.0-nightly.20190929","8.0.0-nightly.20190930","8.0.0-nightly.20191001","8.0.0-nightly.20191004","8.0.0-nightly.20191005","8.0.0-nightly.20191006","8.0.0-nightly.20191009","8.0.0-nightly.20191011","8.0.0-nightly.20191012","8.0.0-nightly.20191017"],"80.0.3952.0":["8.0.0-nightly.20191101","8.0.0-nightly.20191105"],"80.0.3987.86":["8.0.0","8.0.1","8.0.2"],"80.0.3987.134":["8.0.3"],"80.0.3987.137":["8.1.0"],"80.0.3987.141":["8.1.1"],"80.0.3987.158":["8.2.0"],"80.0.3987.163":["8.2.1","8.2.2","8.2.3","8.5.3","8.5.4","8.5.5"],"80.0.3987.165":["8.2.4","8.2.5","8.3.0","8.3.1","8.3.2","8.3.3","8.3.4","8.4.0","8.4.1","8.5.0","8.5.1","8.5.2"],"82.0.4048.0":["9.0.0-beta.1","9.0.0-beta.2","9.0.0-beta.3","9.0.0-beta.4","9.0.0-beta.5"],"82.0.4058.2":["9.0.0-beta.6","9.0.0-beta.7","9.0.0-beta.9"],"82.0.4085.10":["9.0.0-beta.10"],"82.0.4085.14":["9.0.0-beta.12","9.0.0-beta.13"],"82.0.4085.27":["9.0.0-beta.14"],"83.0.4102.3":["9.0.0-beta.15","9.0.0-beta.16"],"83.0.4103.14":["9.0.0-beta.17"],"83.0.4103.16":["9.0.0-beta.18"],"83.0.4103.24":["9.0.0-beta.19"],"83.0.4103.26":["9.0.0-beta.20","9.0.0-beta.21"],"83.0.4103.34":["9.0.0-beta.22"],"83.0.4103.44":["9.0.0-beta.23"],"83.0.4103.45":["9.0.0-beta.24"],"80.0.3954.0":["9.0.0-nightly.20191121","9.0.0-nightly.20191122","9.0.0-nightly.20191123","9.0.0-nightly.20191124","9.0.0-nightly.20191129","9.0.0-nightly.20191130","9.0.0-nightly.20191201","9.0.0-nightly.20191202","9.0.0-nightly.20191203","9.0.0-nightly.20191204","9.0.0-nightly.20191210"],"81.0.3994.0":["9.0.0-nightly.20191220","9.0.0-nightly.20191221","9.0.0-nightly.20191222","9.0.0-nightly.20191223","9.0.0-nightly.20191224","9.0.0-nightly.20191225","9.0.0-nightly.20191226","9.0.0-nightly.20191228","9.0.0-nightly.20191229","9.0.0-nightly.20191230","9.0.0-nightly.20191231","9.0.0-nightly.20200101","9.0.0-nightly.20200103","9.0.0-nightly.20200104","9.0.0-nightly.20200105","9.0.0-nightly.20200106","9.0.0-nightly.20200108","9.0.0-nightly.20200109","9.0.0-nightly.20200110","9.0.0-nightly.20200111","9.0.0-nightly.20200113","9.0.0-nightly.20200115","9.0.0-nightly.20200116","9.0.0-nightly.20200117"],"81.0.4030.0":["9.0.0-nightly.20200119","9.0.0-nightly.20200121"],"83.0.4103.64":["9.0.0"],"83.0.4103.94":["9.0.1","9.0.2"],"83.0.4103.100":["9.0.3"],"83.0.4103.104":["9.0.4"],"83.0.4103.119":["9.0.5"],"83.0.4103.122":["9.1.0","9.1.1","9.1.2","9.2.0","9.2.1","9.3.0","9.3.1","9.3.2","9.3.3","9.3.4","9.3.5","9.4.0","9.4.1","9.4.2","9.4.3","9.4.4"],"84.0.4129.0":["10.0.0-beta.1","10.0.0-beta.2","10.0.0-nightly.20200501","10.0.0-nightly.20200504","10.0.0-nightly.20200505","10.0.0-nightly.20200506","10.0.0-nightly.20200507","10.0.0-nightly.20200508","10.0.0-nightly.20200511","10.0.0-nightly.20200512","10.0.0-nightly.20200513","10.0.0-nightly.20200514","10.0.0-nightly.20200515","10.0.0-nightly.20200518","10.0.0-nightly.20200519","10.0.0-nightly.20200520","10.0.0-nightly.20200521","11.0.0-nightly.20200525","11.0.0-nightly.20200526"],"85.0.4161.2":["10.0.0-beta.3","10.0.0-beta.4"],"85.0.4181.1":["10.0.0-beta.8","10.0.0-beta.9"],"85.0.4183.19":["10.0.0-beta.10"],"85.0.4183.20":["10.0.0-beta.11"],"85.0.4183.26":["10.0.0-beta.12"],"85.0.4183.39":["10.0.0-beta.13","10.0.0-beta.14","10.0.0-beta.15","10.0.0-beta.17","10.0.0-beta.19","10.0.0-beta.20","10.0.0-beta.21"],"85.0.4183.70":["10.0.0-beta.23"],"85.0.4183.78":["10.0.0-beta.24"],"85.0.4183.80":["10.0.0-beta.25"],"82.0.4050.0":["10.0.0-nightly.20200209","10.0.0-nightly.20200210","10.0.0-nightly.20200211","10.0.0-nightly.20200216","10.0.0-nightly.20200217","10.0.0-nightly.20200218","10.0.0-nightly.20200221","10.0.0-nightly.20200222","10.0.0-nightly.20200223","10.0.0-nightly.20200226","10.0.0-nightly.20200303"],"82.0.4076.0":["10.0.0-nightly.20200304","10.0.0-nightly.20200305","10.0.0-nightly.20200306","10.0.0-nightly.20200309","10.0.0-nightly.20200310"],"82.0.4083.0":["10.0.0-nightly.20200311"],"83.0.4086.0":["10.0.0-nightly.20200316"],"83.0.4087.0":["10.0.0-nightly.20200317","10.0.0-nightly.20200318","10.0.0-nightly.20200320","10.0.0-nightly.20200323","10.0.0-nightly.20200324","10.0.0-nightly.20200325","10.0.0-nightly.20200326","10.0.0-nightly.20200327","10.0.0-nightly.20200330","10.0.0-nightly.20200331","10.0.0-nightly.20200401","10.0.0-nightly.20200402","10.0.0-nightly.20200403","10.0.0-nightly.20200406"],"83.0.4095.0":["10.0.0-nightly.20200408","10.0.0-nightly.20200410","10.0.0-nightly.20200413"],"84.0.4114.0":["10.0.0-nightly.20200414"],"84.0.4115.0":["10.0.0-nightly.20200415","10.0.0-nightly.20200416","10.0.0-nightly.20200417"],"84.0.4121.0":["10.0.0-nightly.20200422","10.0.0-nightly.20200423"],"84.0.4125.0":["10.0.0-nightly.20200427","10.0.0-nightly.20200428","10.0.0-nightly.20200429","10.0.0-nightly.20200430"],"85.0.4183.84":["10.0.0"],"85.0.4183.86":["10.0.1"],"85.0.4183.87":["10.1.0"],"85.0.4183.93":["10.1.1"],"85.0.4183.98":["10.1.2"],"85.0.4183.121":["10.1.3","10.1.4","10.1.5","10.1.6","10.1.7","10.2.0","10.3.0","10.3.1","10.3.2","10.4.0","10.4.1","10.4.2","10.4.3","10.4.4","10.4.5","10.4.6","10.4.7"],"86.0.4234.0":["11.0.0-beta.1","11.0.0-beta.3","11.0.0-beta.4","11.0.0-beta.5","11.0.0-beta.6","11.0.0-beta.7","11.0.0-nightly.20200822","11.0.0-nightly.20200824","11.0.0-nightly.20200825","11.0.0-nightly.20200826","12.0.0-nightly.20200827","12.0.0-nightly.20200831","12.0.0-nightly.20200902","12.0.0-nightly.20200903","12.0.0-nightly.20200907","12.0.0-nightly.20200910","12.0.0-nightly.20200911","12.0.0-nightly.20200914"],"87.0.4251.1":["11.0.0-beta.8","11.0.0-beta.9","11.0.0-beta.11"],"87.0.4280.11":["11.0.0-beta.12","11.0.0-beta.13"],"87.0.4280.27":["11.0.0-beta.16","11.0.0-beta.17","11.0.0-beta.18","11.0.0-beta.19"],"87.0.4280.40":["11.0.0-beta.20"],"87.0.4280.47":["11.0.0-beta.22","11.0.0-beta.23"],"85.0.4156.0":["11.0.0-nightly.20200529"],"85.0.4162.0":["11.0.0-nightly.20200602","11.0.0-nightly.20200603","11.0.0-nightly.20200604","11.0.0-nightly.20200609","11.0.0-nightly.20200610","11.0.0-nightly.20200611","11.0.0-nightly.20200615","11.0.0-nightly.20200616","11.0.0-nightly.20200617","11.0.0-nightly.20200618","11.0.0-nightly.20200619"],"85.0.4179.0":["11.0.0-nightly.20200701","11.0.0-nightly.20200702","11.0.0-nightly.20200703","11.0.0-nightly.20200706","11.0.0-nightly.20200707","11.0.0-nightly.20200708","11.0.0-nightly.20200709"],"86.0.4203.0":["11.0.0-nightly.20200716","11.0.0-nightly.20200717","11.0.0-nightly.20200720","11.0.0-nightly.20200721"],"86.0.4209.0":["11.0.0-nightly.20200723","11.0.0-nightly.20200724","11.0.0-nightly.20200729","11.0.0-nightly.20200730","11.0.0-nightly.20200731","11.0.0-nightly.20200803","11.0.0-nightly.20200804","11.0.0-nightly.20200805","11.0.0-nightly.20200811","11.0.0-nightly.20200812"],"87.0.4280.60":["11.0.0","11.0.1"],"87.0.4280.67":["11.0.2","11.0.3","11.0.4"],"87.0.4280.88":["11.0.5","11.1.0","11.1.1"],"87.0.4280.141":["11.2.0","11.2.1","11.2.2","11.2.3","11.3.0","11.4.0","11.4.1","11.4.2","11.4.3","11.4.4","11.4.5","11.4.6","11.4.7","11.4.8","11.4.9","11.4.10","11.4.11","11.4.12","11.5.0"],"89.0.4328.0":["12.0.0-beta.1","12.0.0-beta.3","12.0.0-beta.4","12.0.0-beta.5","12.0.0-beta.6","12.0.0-beta.7","12.0.0-beta.8","12.0.0-beta.9","12.0.0-beta.10","12.0.0-beta.11","12.0.0-beta.12","12.0.0-beta.14","13.0.0-nightly.20201119","13.0.0-nightly.20201123","13.0.0-nightly.20201124","13.0.0-nightly.20201126","13.0.0-nightly.20201127","13.0.0-nightly.20201130","13.0.0-nightly.20201201","13.0.0-nightly.20201202","13.0.0-nightly.20201203","13.0.0-nightly.20201204","13.0.0-nightly.20201207","13.0.0-nightly.20201208","13.0.0-nightly.20201209","13.0.0-nightly.20201210","13.0.0-nightly.20201211","13.0.0-nightly.20201214"],"89.0.4348.1":["12.0.0-beta.16","12.0.0-beta.18","12.0.0-beta.19","12.0.0-beta.20"],"89.0.4388.2":["12.0.0-beta.21","12.0.0-beta.22","12.0.0-beta.23","12.0.0-beta.24","12.0.0-beta.25","12.0.0-beta.26"],"89.0.4389.23":["12.0.0-beta.27","12.0.0-beta.28","12.0.0-beta.29"],"89.0.4389.58":["12.0.0-beta.30","12.0.0-beta.31"],"87.0.4268.0":["12.0.0-nightly.20201013","12.0.0-nightly.20201014","12.0.0-nightly.20201015"],"88.0.4292.0":["12.0.0-nightly.20201023","12.0.0-nightly.20201026"],"88.0.4306.0":["12.0.0-nightly.20201030","12.0.0-nightly.20201102","12.0.0-nightly.20201103","12.0.0-nightly.20201104","12.0.0-nightly.20201105","12.0.0-nightly.20201106","12.0.0-nightly.20201111","12.0.0-nightly.20201112"],"88.0.4324.0":["12.0.0-nightly.20201116"],"89.0.4389.69":["12.0.0"],"89.0.4389.82":["12.0.1"],"89.0.4389.90":["12.0.2"],"89.0.4389.114":["12.0.3","12.0.4"],"89.0.4389.128":["12.0.5","12.0.6","12.0.7","12.0.8","12.0.9","12.0.10","12.0.11","12.0.12","12.0.13","12.0.14","12.0.15","12.0.16","12.0.17","12.0.18","12.1.0","12.1.1","12.1.2","12.2.0","12.2.1","12.2.2","12.2.3"],"90.0.4402.0":["13.0.0-beta.2","13.0.0-beta.3","13.0.0-nightly.20210210","13.0.0-nightly.20210211","13.0.0-nightly.20210212","13.0.0-nightly.20210216","13.0.0-nightly.20210217","13.0.0-nightly.20210218","13.0.0-nightly.20210219","13.0.0-nightly.20210222","13.0.0-nightly.20210225","13.0.0-nightly.20210226","13.0.0-nightly.20210301","13.0.0-nightly.20210302","13.0.0-nightly.20210303","14.0.0-nightly.20210304"],"90.0.4415.0":["13.0.0-beta.4","13.0.0-beta.5","13.0.0-beta.6","13.0.0-beta.7","13.0.0-beta.8","13.0.0-beta.9","13.0.0-beta.11","13.0.0-beta.12","13.0.0-beta.13","14.0.0-nightly.20210305","14.0.0-nightly.20210308","14.0.0-nightly.20210309","14.0.0-nightly.20210311","14.0.0-nightly.20210315","14.0.0-nightly.20210316","14.0.0-nightly.20210317","14.0.0-nightly.20210318","14.0.0-nightly.20210319","14.0.0-nightly.20210323","14.0.0-nightly.20210324","14.0.0-nightly.20210325","14.0.0-nightly.20210326","14.0.0-nightly.20210329","14.0.0-nightly.20210330"],"91.0.4448.0":["13.0.0-beta.14","13.0.0-beta.16","13.0.0-beta.17","13.0.0-beta.18","13.0.0-beta.20","14.0.0-nightly.20210331","14.0.0-nightly.20210401","14.0.0-nightly.20210402","14.0.0-nightly.20210406","14.0.0-nightly.20210407","14.0.0-nightly.20210408","14.0.0-nightly.20210409","14.0.0-nightly.20210413"],"91.0.4472.33":["13.0.0-beta.21","13.0.0-beta.22","13.0.0-beta.23"],"91.0.4472.38":["13.0.0-beta.24","13.0.0-beta.26","13.0.0-beta.27","13.0.0-beta.28"],"89.0.4349.0":["13.0.0-nightly.20201215","13.0.0-nightly.20201216","13.0.0-nightly.20201221","13.0.0-nightly.20201222"],"89.0.4359.0":["13.0.0-nightly.20201223","13.0.0-nightly.20210104","13.0.0-nightly.20210108","13.0.0-nightly.20210111"],"89.0.4386.0":["13.0.0-nightly.20210113","13.0.0-nightly.20210114","13.0.0-nightly.20210118","13.0.0-nightly.20210122","13.0.0-nightly.20210125"],"89.0.4389.0":["13.0.0-nightly.20210127","13.0.0-nightly.20210128","13.0.0-nightly.20210129","13.0.0-nightly.20210201","13.0.0-nightly.20210202","13.0.0-nightly.20210203","13.0.0-nightly.20210205","13.0.0-nightly.20210208","13.0.0-nightly.20210209"],"91.0.4472.69":["13.0.0","13.0.1"],"91.0.4472.77":["13.1.0","13.1.1","13.1.2"],"91.0.4472.106":["13.1.3","13.1.4"],"91.0.4472.124":["13.1.5","13.1.6","13.1.7"],"91.0.4472.164":["13.1.8","13.1.9","13.2.0","13.2.1","13.2.2","13.2.3","13.3.0","13.4.0","13.5.0","13.5.1","13.5.2","13.6.0","13.6.1","13.6.2"],"92.0.4511.0":["14.0.0-beta.1","14.0.0-beta.2","14.0.0-beta.3","14.0.0-nightly.20210520","14.0.0-nightly.20210523","14.0.0-nightly.20210524","15.0.0-nightly.20210527","15.0.0-nightly.20210528","15.0.0-nightly.20210531","15.0.0-nightly.20210601","15.0.0-nightly.20210602"],"93.0.4536.0":["14.0.0-beta.5","14.0.0-beta.6","14.0.0-beta.7","14.0.0-beta.8","15.0.0-nightly.20210609","15.0.0-nightly.20210610","15.0.0-nightly.20210611","15.0.0-nightly.20210614","15.0.0-nightly.20210615","15.0.0-nightly.20210616"],"93.0.4539.0":["14.0.0-beta.9","14.0.0-beta.10","15.0.0-nightly.20210617","15.0.0-nightly.20210618","15.0.0-nightly.20210621","15.0.0-nightly.20210622"],"93.0.4557.4":["14.0.0-beta.11","14.0.0-beta.12"],"93.0.4566.0":["14.0.0-beta.13","14.0.0-beta.14","14.0.0-beta.15","14.0.0-beta.16","14.0.0-beta.17","15.0.0-alpha.1","15.0.0-alpha.2","15.0.0-nightly.20210706","15.0.0-nightly.20210707","15.0.0-nightly.20210708","15.0.0-nightly.20210709","15.0.0-nightly.20210712","15.0.0-nightly.20210713","15.0.0-nightly.20210714","15.0.0-nightly.20210715","15.0.0-nightly.20210716","15.0.0-nightly.20210719","15.0.0-nightly.20210720","15.0.0-nightly.20210721","16.0.0-nightly.20210722","16.0.0-nightly.20210723","16.0.0-nightly.20210726"],"93.0.4577.15":["14.0.0-beta.18","14.0.0-beta.19","14.0.0-beta.20","14.0.0-beta.21"],"93.0.4577.25":["14.0.0-beta.22","14.0.0-beta.23"],"93.0.4577.51":["14.0.0-beta.24","14.0.0-beta.25"],"92.0.4475.0":["14.0.0-nightly.20210426","14.0.0-nightly.20210427"],"92.0.4488.0":["14.0.0-nightly.20210430","14.0.0-nightly.20210503"],"92.0.4496.0":["14.0.0-nightly.20210505"],"92.0.4498.0":["14.0.0-nightly.20210506"],"92.0.4499.0":["14.0.0-nightly.20210507","14.0.0-nightly.20210510","14.0.0-nightly.20210511","14.0.0-nightly.20210512","14.0.0-nightly.20210513"],"92.0.4505.0":["14.0.0-nightly.20210514","14.0.0-nightly.20210517","14.0.0-nightly.20210518","14.0.0-nightly.20210519"],"93.0.4577.58":["14.0.0"],"93.0.4577.63":["14.0.1"],"93.0.4577.82":["14.0.2","14.1.0","14.1.1","14.2.0","14.2.1"],"94.0.4584.0":["15.0.0-alpha.3","15.0.0-alpha.4","15.0.0-alpha.5","15.0.0-alpha.6","16.0.0-nightly.20210727","16.0.0-nightly.20210728","16.0.0-nightly.20210729","16.0.0-nightly.20210730","16.0.0-nightly.20210802","16.0.0-nightly.20210803","16.0.0-nightly.20210804","16.0.0-nightly.20210805","16.0.0-nightly.20210806","16.0.0-nightly.20210809","16.0.0-nightly.20210810","16.0.0-nightly.20210811"],"94.0.4590.2":["15.0.0-alpha.7","15.0.0-alpha.8","15.0.0-alpha.9","16.0.0-nightly.20210812","16.0.0-nightly.20210813","16.0.0-nightly.20210816","16.0.0-nightly.20210817","16.0.0-nightly.20210818","16.0.0-nightly.20210819","16.0.0-nightly.20210820","16.0.0-nightly.20210823"],"94.0.4606.12":["15.0.0-alpha.10"],"94.0.4606.20":["15.0.0-beta.1","15.0.0-beta.2"],"94.0.4606.31":["15.0.0-beta.3","15.0.0-beta.4","15.0.0-beta.5","15.0.0-beta.6","15.0.0-beta.7"],"93.0.4530.0":["15.0.0-nightly.20210603","15.0.0-nightly.20210604"],"93.0.4535.0":["15.0.0-nightly.20210608"],"93.0.4550.0":["15.0.0-nightly.20210623","15.0.0-nightly.20210624"],"93.0.4552.0":["15.0.0-nightly.20210625","15.0.0-nightly.20210628","15.0.0-nightly.20210629"],"93.0.4558.0":["15.0.0-nightly.20210630","15.0.0-nightly.20210701","15.0.0-nightly.20210702","15.0.0-nightly.20210705"],"94.0.4606.51":["15.0.0"],"94.0.4606.61":["15.1.0","15.1.1"],"94.0.4606.71":["15.1.2"],"94.0.4606.81":["15.2.0","15.3.0","15.3.1","15.3.2"],"95.0.4629.0":["16.0.0-alpha.1","16.0.0-alpha.2","16.0.0-alpha.3","16.0.0-alpha.4","16.0.0-alpha.5","16.0.0-alpha.6","16.0.0-alpha.7","16.0.0-nightly.20210902","16.0.0-nightly.20210903","16.0.0-nightly.20210906","16.0.0-nightly.20210907","16.0.0-nightly.20210908","16.0.0-nightly.20210909","16.0.0-nightly.20210910","16.0.0-nightly.20210913","16.0.0-nightly.20210914","16.0.0-nightly.20210915","16.0.0-nightly.20210916","16.0.0-nightly.20210917","16.0.0-nightly.20210920","16.0.0-nightly.20210921","16.0.0-nightly.20210922","17.0.0-nightly.20210923","17.0.0-nightly.20210924","17.0.0-nightly.20210927","17.0.0-nightly.20210928","17.0.0-nightly.20210929","17.0.0-nightly.20210930","17.0.0-nightly.20211001","17.0.0-nightly.20211004","17.0.0-nightly.20211005"],"96.0.4647.0":["16.0.0-alpha.8","16.0.0-alpha.9","16.0.0-beta.1","16.0.0-beta.2","16.0.0-beta.3","17.0.0-nightly.20211006","17.0.0-nightly.20211007","17.0.0-nightly.20211008","17.0.0-nightly.20211011","17.0.0-nightly.20211012","17.0.0-nightly.20211013","17.0.0-nightly.20211014","17.0.0-nightly.20211015","17.0.0-nightly.20211018","17.0.0-nightly.20211019","17.0.0-nightly.20211020","17.0.0-nightly.20211021"],"96.0.4664.18":["16.0.0-beta.4","16.0.0-beta.5"],"96.0.4664.27":["16.0.0-beta.6","16.0.0-beta.7"],"96.0.4664.35":["16.0.0-beta.8","16.0.0-beta.9"],"95.0.4612.5":["16.0.0-nightly.20210824","16.0.0-nightly.20210825","16.0.0-nightly.20210826","16.0.0-nightly.20210827","16.0.0-nightly.20210830","16.0.0-nightly.20210831","16.0.0-nightly.20210901"],"96.0.4664.45":["16.0.0","16.0.1"],"96.0.4664.55":["16.0.2"],"96.0.4664.4":["17.0.0-alpha.1","17.0.0-alpha.2","17.0.0-alpha.3","17.0.0-nightly.20211022","17.0.0-nightly.20211025","17.0.0-nightly.20211026","17.0.0-nightly.20211027","17.0.0-nightly.20211028","17.0.0-nightly.20211029","17.0.0-nightly.20211101","17.0.0-nightly.20211102","17.0.0-nightly.20211103","17.0.0-nightly.20211104","17.0.0-nightly.20211105","17.0.0-nightly.20211108","17.0.0-nightly.20211109","17.0.0-nightly.20211110","17.0.0-nightly.20211111","17.0.0-nightly.20211112","17.0.0-nightly.20211115","17.0.0-nightly.20211116","17.0.0-nightly.20211117","18.0.0-nightly.20211118","18.0.0-nightly.20211119","18.0.0-nightly.20211122","18.0.0-nightly.20211123"],"98.0.4706.0":["17.0.0-alpha.4","18.0.0-nightly.20211124","18.0.0-nightly.20211125","18.0.0-nightly.20211126"]} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js
new file mode 100644
index 0000000000..39c991f3d5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js
@@ -0,0 +1,1227 @@
+module.exports = {
+ "0.20.0": "39.0.2171.65",
+ "0.20.1": "39.0.2171.65",
+ "0.20.2": "39.0.2171.65",
+ "0.20.3": "39.0.2171.65",
+ "0.20.4": "39.0.2171.65",
+ "0.20.5": "39.0.2171.65",
+ "0.20.6": "39.0.2171.65",
+ "0.20.7": "39.0.2171.65",
+ "0.20.8": "39.0.2171.65",
+ "0.21.0": "40.0.2214.91",
+ "0.21.1": "40.0.2214.91",
+ "0.21.2": "40.0.2214.91",
+ "0.21.3": "41.0.2272.76",
+ "0.22.1": "41.0.2272.76",
+ "0.22.2": "41.0.2272.76",
+ "0.22.3": "41.0.2272.76",
+ "0.23.0": "41.0.2272.76",
+ "0.24.0": "41.0.2272.76",
+ "0.25.0": "42.0.2311.107",
+ "0.25.1": "42.0.2311.107",
+ "0.25.2": "42.0.2311.107",
+ "0.25.3": "42.0.2311.107",
+ "0.26.0": "42.0.2311.107",
+ "0.26.1": "42.0.2311.107",
+ "0.27.0": "42.0.2311.107",
+ "0.27.1": "42.0.2311.107",
+ "0.27.2": "43.0.2357.65",
+ "0.27.3": "43.0.2357.65",
+ "0.28.0": "43.0.2357.65",
+ "0.28.1": "43.0.2357.65",
+ "0.28.2": "43.0.2357.65",
+ "0.28.3": "43.0.2357.65",
+ "0.29.1": "43.0.2357.65",
+ "0.29.2": "43.0.2357.65",
+ "0.30.4": "44.0.2403.125",
+ "0.31.0": "44.0.2403.125",
+ "0.31.2": "45.0.2454.85",
+ "0.32.2": "45.0.2454.85",
+ "0.32.3": "45.0.2454.85",
+ "0.33.0": "45.0.2454.85",
+ "0.33.1": "45.0.2454.85",
+ "0.33.2": "45.0.2454.85",
+ "0.33.3": "45.0.2454.85",
+ "0.33.4": "45.0.2454.85",
+ "0.33.6": "45.0.2454.85",
+ "0.33.7": "45.0.2454.85",
+ "0.33.8": "45.0.2454.85",
+ "0.33.9": "45.0.2454.85",
+ "0.34.0": "45.0.2454.85",
+ "0.34.1": "45.0.2454.85",
+ "0.34.2": "45.0.2454.85",
+ "0.34.3": "45.0.2454.85",
+ "0.34.4": "45.0.2454.85",
+ "0.35.1": "45.0.2454.85",
+ "0.35.2": "45.0.2454.85",
+ "0.35.3": "45.0.2454.85",
+ "0.35.4": "45.0.2454.85",
+ "0.35.5": "45.0.2454.85",
+ "0.36.0": "47.0.2526.73",
+ "0.36.2": "47.0.2526.73",
+ "0.36.3": "47.0.2526.73",
+ "0.36.4": "47.0.2526.73",
+ "0.36.5": "47.0.2526.110",
+ "0.36.6": "47.0.2526.110",
+ "0.36.7": "47.0.2526.110",
+ "0.36.8": "47.0.2526.110",
+ "0.36.9": "47.0.2526.110",
+ "0.36.10": "47.0.2526.110",
+ "0.36.11": "47.0.2526.110",
+ "0.36.12": "47.0.2526.110",
+ "0.37.0": "49.0.2623.75",
+ "0.37.1": "49.0.2623.75",
+ "0.37.3": "49.0.2623.75",
+ "0.37.4": "49.0.2623.75",
+ "0.37.5": "49.0.2623.75",
+ "0.37.6": "49.0.2623.75",
+ "0.37.7": "49.0.2623.75",
+ "0.37.8": "49.0.2623.75",
+ "1.0.0": "49.0.2623.75",
+ "1.0.1": "49.0.2623.75",
+ "1.0.2": "49.0.2623.75",
+ "1.1.0": "50.0.2661.102",
+ "1.1.1": "50.0.2661.102",
+ "1.1.2": "50.0.2661.102",
+ "1.1.3": "50.0.2661.102",
+ "1.2.0": "51.0.2704.63",
+ "1.2.1": "51.0.2704.63",
+ "1.2.2": "51.0.2704.84",
+ "1.2.3": "51.0.2704.84",
+ "1.2.4": "51.0.2704.103",
+ "1.2.5": "51.0.2704.103",
+ "1.2.6": "51.0.2704.106",
+ "1.2.7": "51.0.2704.106",
+ "1.2.8": "51.0.2704.106",
+ "1.3.0": "52.0.2743.82",
+ "1.3.1": "52.0.2743.82",
+ "1.3.2": "52.0.2743.82",
+ "1.3.3": "52.0.2743.82",
+ "1.3.4": "52.0.2743.82",
+ "1.3.5": "52.0.2743.82",
+ "1.3.6": "52.0.2743.82",
+ "1.3.7": "52.0.2743.82",
+ "1.3.9": "52.0.2743.82",
+ "1.3.10": "52.0.2743.82",
+ "1.3.13": "52.0.2743.82",
+ "1.3.14": "52.0.2743.82",
+ "1.3.15": "52.0.2743.82",
+ "1.4.0": "53.0.2785.113",
+ "1.4.1": "53.0.2785.113",
+ "1.4.2": "53.0.2785.113",
+ "1.4.3": "53.0.2785.113",
+ "1.4.4": "53.0.2785.113",
+ "1.4.5": "53.0.2785.113",
+ "1.4.6": "53.0.2785.143",
+ "1.4.7": "53.0.2785.143",
+ "1.4.8": "53.0.2785.143",
+ "1.4.10": "53.0.2785.143",
+ "1.4.11": "53.0.2785.143",
+ "1.4.12": "54.0.2840.51",
+ "1.4.13": "53.0.2785.143",
+ "1.4.14": "53.0.2785.143",
+ "1.4.15": "53.0.2785.143",
+ "1.4.16": "53.0.2785.143",
+ "1.5.0": "54.0.2840.101",
+ "1.5.1": "54.0.2840.101",
+ "1.6.0": "56.0.2924.87",
+ "1.6.1": "56.0.2924.87",
+ "1.6.2": "56.0.2924.87",
+ "1.6.3": "56.0.2924.87",
+ "1.6.4": "56.0.2924.87",
+ "1.6.5": "56.0.2924.87",
+ "1.6.6": "56.0.2924.87",
+ "1.6.7": "56.0.2924.87",
+ "1.6.8": "56.0.2924.87",
+ "1.6.9": "56.0.2924.87",
+ "1.6.10": "56.0.2924.87",
+ "1.6.11": "56.0.2924.87",
+ "1.6.12": "56.0.2924.87",
+ "1.6.13": "56.0.2924.87",
+ "1.6.14": "56.0.2924.87",
+ "1.6.15": "56.0.2924.87",
+ "1.6.16": "56.0.2924.87",
+ "1.6.17": "56.0.2924.87",
+ "1.6.18": "56.0.2924.87",
+ "1.7.0": "58.0.3029.110",
+ "1.7.1": "58.0.3029.110",
+ "1.7.2": "58.0.3029.110",
+ "1.7.3": "58.0.3029.110",
+ "1.7.4": "58.0.3029.110",
+ "1.7.5": "58.0.3029.110",
+ "1.7.6": "58.0.3029.110",
+ "1.7.7": "58.0.3029.110",
+ "1.7.8": "58.0.3029.110",
+ "1.7.9": "58.0.3029.110",
+ "1.7.10": "58.0.3029.110",
+ "1.7.11": "58.0.3029.110",
+ "1.7.12": "58.0.3029.110",
+ "1.7.13": "58.0.3029.110",
+ "1.7.14": "58.0.3029.110",
+ "1.7.15": "58.0.3029.110",
+ "1.7.16": "58.0.3029.110",
+ "1.8.0": "59.0.3071.115",
+ "1.8.1": "59.0.3071.115",
+ "1.8.2-beta.1": "59.0.3071.115",
+ "1.8.2-beta.2": "59.0.3071.115",
+ "1.8.2-beta.3": "59.0.3071.115",
+ "1.8.2-beta.4": "59.0.3071.115",
+ "1.8.2-beta.5": "59.0.3071.115",
+ "1.8.2": "59.0.3071.115",
+ "1.8.3": "59.0.3071.115",
+ "1.8.4": "59.0.3071.115",
+ "1.8.5": "59.0.3071.115",
+ "1.8.6": "59.0.3071.115",
+ "1.8.7": "59.0.3071.115",
+ "1.8.8": "59.0.3071.115",
+ "2.0.0-beta.1": "61.0.3163.100",
+ "2.0.0-beta.2": "61.0.3163.100",
+ "2.0.0-beta.3": "61.0.3163.100",
+ "2.0.0-beta.4": "61.0.3163.100",
+ "2.0.0-beta.5": "61.0.3163.100",
+ "2.0.0-beta.6": "61.0.3163.100",
+ "2.0.0-beta.7": "61.0.3163.100",
+ "2.0.0-beta.8": "61.0.3163.100",
+ "2.0.0": "61.0.3163.100",
+ "2.0.1": "61.0.3163.100",
+ "2.0.2": "61.0.3163.100",
+ "2.0.3": "61.0.3163.100",
+ "2.0.4": "61.0.3163.100",
+ "2.0.5": "61.0.3163.100",
+ "2.0.6": "61.0.3163.100",
+ "2.0.7": "61.0.3163.100",
+ "2.0.8-nightly.20180819": "61.0.3163.100",
+ "2.0.8-nightly.20180820": "61.0.3163.100",
+ "2.0.8": "61.0.3163.100",
+ "2.0.9": "61.0.3163.100",
+ "2.0.10": "61.0.3163.100",
+ "2.0.11": "61.0.3163.100",
+ "2.0.12": "61.0.3163.100",
+ "2.0.13": "61.0.3163.100",
+ "2.0.14": "61.0.3163.100",
+ "2.0.15": "61.0.3163.100",
+ "2.0.16": "61.0.3163.100",
+ "2.0.17": "61.0.3163.100",
+ "2.0.18": "61.0.3163.100",
+ "2.1.0-unsupported.20180809": "61.0.3163.100",
+ "3.0.0-beta.1": "66.0.3359.181",
+ "3.0.0-beta.2": "66.0.3359.181",
+ "3.0.0-beta.3": "66.0.3359.181",
+ "3.0.0-beta.4": "66.0.3359.181",
+ "3.0.0-beta.5": "66.0.3359.181",
+ "3.0.0-beta.6": "66.0.3359.181",
+ "3.0.0-beta.7": "66.0.3359.181",
+ "3.0.0-beta.8": "66.0.3359.181",
+ "3.0.0-beta.9": "66.0.3359.181",
+ "3.0.0-beta.10": "66.0.3359.181",
+ "3.0.0-beta.11": "66.0.3359.181",
+ "3.0.0-beta.12": "66.0.3359.181",
+ "3.0.0-beta.13": "66.0.3359.181",
+ "3.0.0-nightly.20180818": "66.0.3359.181",
+ "3.0.0-nightly.20180821": "66.0.3359.181",
+ "3.0.0-nightly.20180823": "66.0.3359.181",
+ "3.0.0-nightly.20180904": "66.0.3359.181",
+ "3.0.0": "66.0.3359.181",
+ "3.0.1": "66.0.3359.181",
+ "3.0.2": "66.0.3359.181",
+ "3.0.3": "66.0.3359.181",
+ "3.0.4": "66.0.3359.181",
+ "3.0.5": "66.0.3359.181",
+ "3.0.6": "66.0.3359.181",
+ "3.0.7": "66.0.3359.181",
+ "3.0.8": "66.0.3359.181",
+ "3.0.9": "66.0.3359.181",
+ "3.0.10": "66.0.3359.181",
+ "3.0.11": "66.0.3359.181",
+ "3.0.12": "66.0.3359.181",
+ "3.0.13": "66.0.3359.181",
+ "3.0.14": "66.0.3359.181",
+ "3.0.15": "66.0.3359.181",
+ "3.0.16": "66.0.3359.181",
+ "3.1.0-beta.1": "66.0.3359.181",
+ "3.1.0-beta.2": "66.0.3359.181",
+ "3.1.0-beta.3": "66.0.3359.181",
+ "3.1.0-beta.4": "66.0.3359.181",
+ "3.1.0-beta.5": "66.0.3359.181",
+ "3.1.0": "66.0.3359.181",
+ "3.1.1": "66.0.3359.181",
+ "3.1.2": "66.0.3359.181",
+ "3.1.3": "66.0.3359.181",
+ "3.1.4": "66.0.3359.181",
+ "3.1.5": "66.0.3359.181",
+ "3.1.6": "66.0.3359.181",
+ "3.1.7": "66.0.3359.181",
+ "3.1.8": "66.0.3359.181",
+ "3.1.9": "66.0.3359.181",
+ "3.1.10": "66.0.3359.181",
+ "3.1.11": "66.0.3359.181",
+ "3.1.12": "66.0.3359.181",
+ "3.1.13": "66.0.3359.181",
+ "4.0.0-beta.1": "69.0.3497.106",
+ "4.0.0-beta.2": "69.0.3497.106",
+ "4.0.0-beta.3": "69.0.3497.106",
+ "4.0.0-beta.4": "69.0.3497.106",
+ "4.0.0-beta.5": "69.0.3497.106",
+ "4.0.0-beta.6": "69.0.3497.106",
+ "4.0.0-beta.7": "69.0.3497.106",
+ "4.0.0-beta.8": "69.0.3497.106",
+ "4.0.0-beta.9": "69.0.3497.106",
+ "4.0.0-beta.10": "69.0.3497.106",
+ "4.0.0-beta.11": "69.0.3497.106",
+ "4.0.0-nightly.20180817": "66.0.3359.181",
+ "4.0.0-nightly.20180819": "66.0.3359.181",
+ "4.0.0-nightly.20180821": "66.0.3359.181",
+ "4.0.0-nightly.20180929": "67.0.3396.99",
+ "4.0.0-nightly.20181006": "68.0.3440.128",
+ "4.0.0-nightly.20181010": "69.0.3497.106",
+ "4.0.0": "69.0.3497.106",
+ "4.0.1": "69.0.3497.106",
+ "4.0.2": "69.0.3497.106",
+ "4.0.3": "69.0.3497.106",
+ "4.0.4": "69.0.3497.106",
+ "4.0.5": "69.0.3497.106",
+ "4.0.6": "69.0.3497.106",
+ "4.0.7": "69.0.3497.128",
+ "4.0.8": "69.0.3497.128",
+ "4.1.0": "69.0.3497.128",
+ "4.1.1": "69.0.3497.128",
+ "4.1.2": "69.0.3497.128",
+ "4.1.3": "69.0.3497.128",
+ "4.1.4": "69.0.3497.128",
+ "4.1.5": "69.0.3497.128",
+ "4.2.0": "69.0.3497.128",
+ "4.2.1": "69.0.3497.128",
+ "4.2.2": "69.0.3497.128",
+ "4.2.3": "69.0.3497.128",
+ "4.2.4": "69.0.3497.128",
+ "4.2.5": "69.0.3497.128",
+ "4.2.6": "69.0.3497.128",
+ "4.2.7": "69.0.3497.128",
+ "4.2.8": "69.0.3497.128",
+ "4.2.9": "69.0.3497.128",
+ "4.2.10": "69.0.3497.128",
+ "4.2.11": "69.0.3497.128",
+ "4.2.12": "69.0.3497.128",
+ "5.0.0-beta.1": "72.0.3626.52",
+ "5.0.0-beta.2": "72.0.3626.52",
+ "5.0.0-beta.3": "73.0.3683.27",
+ "5.0.0-beta.4": "73.0.3683.54",
+ "5.0.0-beta.5": "73.0.3683.61",
+ "5.0.0-beta.6": "73.0.3683.84",
+ "5.0.0-beta.7": "73.0.3683.94",
+ "5.0.0-beta.8": "73.0.3683.104",
+ "5.0.0-beta.9": "73.0.3683.117",
+ "5.0.0-nightly.20190107": "70.0.3538.110",
+ "5.0.0-nightly.20190121": "71.0.3578.98",
+ "5.0.0-nightly.20190122": "71.0.3578.98",
+ "5.0.0": "73.0.3683.119",
+ "5.0.1": "73.0.3683.121",
+ "5.0.2": "73.0.3683.121",
+ "5.0.3": "73.0.3683.121",
+ "5.0.4": "73.0.3683.121",
+ "5.0.5": "73.0.3683.121",
+ "5.0.6": "73.0.3683.121",
+ "5.0.7": "73.0.3683.121",
+ "5.0.8": "73.0.3683.121",
+ "5.0.9": "73.0.3683.121",
+ "5.0.10": "73.0.3683.121",
+ "5.0.11": "73.0.3683.121",
+ "5.0.12": "73.0.3683.121",
+ "5.0.13": "73.0.3683.121",
+ "6.0.0-beta.1": "76.0.3774.1",
+ "6.0.0-beta.2": "76.0.3783.1",
+ "6.0.0-beta.3": "76.0.3783.1",
+ "6.0.0-beta.4": "76.0.3783.1",
+ "6.0.0-beta.5": "76.0.3805.4",
+ "6.0.0-beta.6": "76.0.3809.3",
+ "6.0.0-beta.7": "76.0.3809.22",
+ "6.0.0-beta.8": "76.0.3809.26",
+ "6.0.0-beta.9": "76.0.3809.26",
+ "6.0.0-beta.10": "76.0.3809.37",
+ "6.0.0-beta.11": "76.0.3809.42",
+ "6.0.0-beta.12": "76.0.3809.54",
+ "6.0.0-beta.13": "76.0.3809.60",
+ "6.0.0-beta.14": "76.0.3809.68",
+ "6.0.0-beta.15": "76.0.3809.74",
+ "6.0.0-nightly.20190212": "72.0.3626.107",
+ "6.0.0-nightly.20190213": "72.0.3626.110",
+ "6.0.0-nightly.20190311": "74.0.3724.8",
+ "6.0.0": "76.0.3809.88",
+ "6.0.1": "76.0.3809.102",
+ "6.0.2": "76.0.3809.110",
+ "6.0.3": "76.0.3809.126",
+ "6.0.4": "76.0.3809.131",
+ "6.0.5": "76.0.3809.136",
+ "6.0.6": "76.0.3809.138",
+ "6.0.7": "76.0.3809.139",
+ "6.0.8": "76.0.3809.146",
+ "6.0.9": "76.0.3809.146",
+ "6.0.10": "76.0.3809.146",
+ "6.0.11": "76.0.3809.146",
+ "6.0.12": "76.0.3809.146",
+ "6.1.0": "76.0.3809.146",
+ "6.1.1": "76.0.3809.146",
+ "6.1.2": "76.0.3809.146",
+ "6.1.3": "76.0.3809.146",
+ "6.1.4": "76.0.3809.146",
+ "6.1.5": "76.0.3809.146",
+ "6.1.6": "76.0.3809.146",
+ "6.1.7": "76.0.3809.146",
+ "6.1.8": "76.0.3809.146",
+ "6.1.9": "76.0.3809.146",
+ "6.1.10": "76.0.3809.146",
+ "6.1.11": "76.0.3809.146",
+ "6.1.12": "76.0.3809.146",
+ "7.0.0-beta.1": "78.0.3866.0",
+ "7.0.0-beta.2": "78.0.3866.0",
+ "7.0.0-beta.3": "78.0.3866.0",
+ "7.0.0-beta.4": "78.0.3896.6",
+ "7.0.0-beta.5": "78.0.3905.1",
+ "7.0.0-beta.6": "78.0.3905.1",
+ "7.0.0-beta.7": "78.0.3905.1",
+ "7.0.0-nightly.20190521": "76.0.3784.0",
+ "7.0.0-nightly.20190529": "76.0.3806.0",
+ "7.0.0-nightly.20190530": "76.0.3806.0",
+ "7.0.0-nightly.20190531": "76.0.3806.0",
+ "7.0.0-nightly.20190602": "76.0.3806.0",
+ "7.0.0-nightly.20190603": "76.0.3806.0",
+ "7.0.0-nightly.20190604": "77.0.3814.0",
+ "7.0.0-nightly.20190605": "77.0.3815.0",
+ "7.0.0-nightly.20190606": "77.0.3815.0",
+ "7.0.0-nightly.20190607": "77.0.3815.0",
+ "7.0.0-nightly.20190608": "77.0.3815.0",
+ "7.0.0-nightly.20190609": "77.0.3815.0",
+ "7.0.0-nightly.20190611": "77.0.3815.0",
+ "7.0.0-nightly.20190612": "77.0.3815.0",
+ "7.0.0-nightly.20190613": "77.0.3815.0",
+ "7.0.0-nightly.20190615": "77.0.3815.0",
+ "7.0.0-nightly.20190616": "77.0.3815.0",
+ "7.0.0-nightly.20190618": "77.0.3815.0",
+ "7.0.0-nightly.20190619": "77.0.3815.0",
+ "7.0.0-nightly.20190622": "77.0.3815.0",
+ "7.0.0-nightly.20190623": "77.0.3815.0",
+ "7.0.0-nightly.20190624": "77.0.3815.0",
+ "7.0.0-nightly.20190627": "77.0.3815.0",
+ "7.0.0-nightly.20190629": "77.0.3815.0",
+ "7.0.0-nightly.20190630": "77.0.3815.0",
+ "7.0.0-nightly.20190701": "77.0.3815.0",
+ "7.0.0-nightly.20190702": "77.0.3815.0",
+ "7.0.0-nightly.20190704": "77.0.3843.0",
+ "7.0.0-nightly.20190705": "77.0.3843.0",
+ "7.0.0-nightly.20190719": "77.0.3848.0",
+ "7.0.0-nightly.20190720": "77.0.3848.0",
+ "7.0.0-nightly.20190721": "77.0.3848.0",
+ "7.0.0-nightly.20190726": "77.0.3864.0",
+ "7.0.0-nightly.20190727": "78.0.3866.0",
+ "7.0.0-nightly.20190728": "78.0.3866.0",
+ "7.0.0-nightly.20190729": "78.0.3866.0",
+ "7.0.0-nightly.20190730": "78.0.3866.0",
+ "7.0.0-nightly.20190731": "78.0.3866.0",
+ "7.0.0": "78.0.3905.1",
+ "7.0.1": "78.0.3904.92",
+ "7.1.0": "78.0.3904.94",
+ "7.1.1": "78.0.3904.99",
+ "7.1.2": "78.0.3904.113",
+ "7.1.3": "78.0.3904.126",
+ "7.1.4": "78.0.3904.130",
+ "7.1.5": "78.0.3904.130",
+ "7.1.6": "78.0.3904.130",
+ "7.1.7": "78.0.3904.130",
+ "7.1.8": "78.0.3904.130",
+ "7.1.9": "78.0.3904.130",
+ "7.1.10": "78.0.3904.130",
+ "7.1.11": "78.0.3904.130",
+ "7.1.12": "78.0.3904.130",
+ "7.1.13": "78.0.3904.130",
+ "7.1.14": "78.0.3904.130",
+ "7.2.0": "78.0.3904.130",
+ "7.2.1": "78.0.3904.130",
+ "7.2.2": "78.0.3904.130",
+ "7.2.3": "78.0.3904.130",
+ "7.2.4": "78.0.3904.130",
+ "7.3.0": "78.0.3904.130",
+ "7.3.1": "78.0.3904.130",
+ "7.3.2": "78.0.3904.130",
+ "7.3.3": "78.0.3904.130",
+ "8.0.0-beta.1": "79.0.3931.0",
+ "8.0.0-beta.2": "79.0.3931.0",
+ "8.0.0-beta.3": "80.0.3955.0",
+ "8.0.0-beta.4": "80.0.3955.0",
+ "8.0.0-beta.5": "80.0.3987.14",
+ "8.0.0-beta.6": "80.0.3987.51",
+ "8.0.0-beta.7": "80.0.3987.59",
+ "8.0.0-beta.8": "80.0.3987.75",
+ "8.0.0-beta.9": "80.0.3987.75",
+ "8.0.0-nightly.20190801": "78.0.3866.0",
+ "8.0.0-nightly.20190802": "78.0.3866.0",
+ "8.0.0-nightly.20190803": "78.0.3871.0",
+ "8.0.0-nightly.20190806": "78.0.3871.0",
+ "8.0.0-nightly.20190807": "78.0.3871.0",
+ "8.0.0-nightly.20190808": "78.0.3871.0",
+ "8.0.0-nightly.20190809": "78.0.3871.0",
+ "8.0.0-nightly.20190810": "78.0.3871.0",
+ "8.0.0-nightly.20190811": "78.0.3871.0",
+ "8.0.0-nightly.20190812": "78.0.3871.0",
+ "8.0.0-nightly.20190813": "78.0.3871.0",
+ "8.0.0-nightly.20190814": "78.0.3871.0",
+ "8.0.0-nightly.20190815": "78.0.3871.0",
+ "8.0.0-nightly.20190816": "78.0.3881.0",
+ "8.0.0-nightly.20190817": "78.0.3881.0",
+ "8.0.0-nightly.20190818": "78.0.3881.0",
+ "8.0.0-nightly.20190819": "78.0.3881.0",
+ "8.0.0-nightly.20190820": "78.0.3881.0",
+ "8.0.0-nightly.20190824": "78.0.3892.0",
+ "8.0.0-nightly.20190825": "78.0.3892.0",
+ "8.0.0-nightly.20190827": "78.0.3892.0",
+ "8.0.0-nightly.20190828": "78.0.3892.0",
+ "8.0.0-nightly.20190830": "78.0.3892.0",
+ "8.0.0-nightly.20190901": "78.0.3892.0",
+ "8.0.0-nightly.20190902": "78.0.3892.0",
+ "8.0.0-nightly.20190907": "78.0.3892.0",
+ "8.0.0-nightly.20190909": "78.0.3892.0",
+ "8.0.0-nightly.20190910": "78.0.3892.0",
+ "8.0.0-nightly.20190911": "78.0.3892.0",
+ "8.0.0-nightly.20190913": "78.0.3892.0",
+ "8.0.0-nightly.20190914": "78.0.3892.0",
+ "8.0.0-nightly.20190915": "78.0.3892.0",
+ "8.0.0-nightly.20190917": "78.0.3892.0",
+ "8.0.0-nightly.20190919": "79.0.3915.0",
+ "8.0.0-nightly.20190920": "79.0.3915.0",
+ "8.0.0-nightly.20190923": "79.0.3919.0",
+ "8.0.0-nightly.20190924": "79.0.3919.0",
+ "8.0.0-nightly.20190926": "79.0.3919.0",
+ "8.0.0-nightly.20190929": "79.0.3919.0",
+ "8.0.0-nightly.20190930": "79.0.3919.0",
+ "8.0.0-nightly.20191001": "79.0.3919.0",
+ "8.0.0-nightly.20191004": "79.0.3919.0",
+ "8.0.0-nightly.20191005": "79.0.3919.0",
+ "8.0.0-nightly.20191006": "79.0.3919.0",
+ "8.0.0-nightly.20191009": "79.0.3919.0",
+ "8.0.0-nightly.20191011": "79.0.3919.0",
+ "8.0.0-nightly.20191012": "79.0.3919.0",
+ "8.0.0-nightly.20191017": "79.0.3919.0",
+ "8.0.0-nightly.20191019": "79.0.3931.0",
+ "8.0.0-nightly.20191020": "79.0.3931.0",
+ "8.0.0-nightly.20191021": "79.0.3931.0",
+ "8.0.0-nightly.20191023": "79.0.3931.0",
+ "8.0.0-nightly.20191101": "80.0.3952.0",
+ "8.0.0-nightly.20191105": "80.0.3952.0",
+ "8.0.0": "80.0.3987.86",
+ "8.0.1": "80.0.3987.86",
+ "8.0.2": "80.0.3987.86",
+ "8.0.3": "80.0.3987.134",
+ "8.1.0": "80.0.3987.137",
+ "8.1.1": "80.0.3987.141",
+ "8.2.0": "80.0.3987.158",
+ "8.2.1": "80.0.3987.163",
+ "8.2.2": "80.0.3987.163",
+ "8.2.3": "80.0.3987.163",
+ "8.2.4": "80.0.3987.165",
+ "8.2.5": "80.0.3987.165",
+ "8.3.0": "80.0.3987.165",
+ "8.3.1": "80.0.3987.165",
+ "8.3.2": "80.0.3987.165",
+ "8.3.3": "80.0.3987.165",
+ "8.3.4": "80.0.3987.165",
+ "8.4.0": "80.0.3987.165",
+ "8.4.1": "80.0.3987.165",
+ "8.5.0": "80.0.3987.165",
+ "8.5.1": "80.0.3987.165",
+ "8.5.2": "80.0.3987.165",
+ "8.5.3": "80.0.3987.163",
+ "8.5.4": "80.0.3987.163",
+ "8.5.5": "80.0.3987.163",
+ "9.0.0-beta.1": "82.0.4048.0",
+ "9.0.0-beta.2": "82.0.4048.0",
+ "9.0.0-beta.3": "82.0.4048.0",
+ "9.0.0-beta.4": "82.0.4048.0",
+ "9.0.0-beta.5": "82.0.4048.0",
+ "9.0.0-beta.6": "82.0.4058.2",
+ "9.0.0-beta.7": "82.0.4058.2",
+ "9.0.0-beta.9": "82.0.4058.2",
+ "9.0.0-beta.10": "82.0.4085.10",
+ "9.0.0-beta.12": "82.0.4085.14",
+ "9.0.0-beta.13": "82.0.4085.14",
+ "9.0.0-beta.14": "82.0.4085.27",
+ "9.0.0-beta.15": "83.0.4102.3",
+ "9.0.0-beta.16": "83.0.4102.3",
+ "9.0.0-beta.17": "83.0.4103.14",
+ "9.0.0-beta.18": "83.0.4103.16",
+ "9.0.0-beta.19": "83.0.4103.24",
+ "9.0.0-beta.20": "83.0.4103.26",
+ "9.0.0-beta.21": "83.0.4103.26",
+ "9.0.0-beta.22": "83.0.4103.34",
+ "9.0.0-beta.23": "83.0.4103.44",
+ "9.0.0-beta.24": "83.0.4103.45",
+ "9.0.0-nightly.20191121": "80.0.3954.0",
+ "9.0.0-nightly.20191122": "80.0.3954.0",
+ "9.0.0-nightly.20191123": "80.0.3954.0",
+ "9.0.0-nightly.20191124": "80.0.3954.0",
+ "9.0.0-nightly.20191129": "80.0.3954.0",
+ "9.0.0-nightly.20191130": "80.0.3954.0",
+ "9.0.0-nightly.20191201": "80.0.3954.0",
+ "9.0.0-nightly.20191202": "80.0.3954.0",
+ "9.0.0-nightly.20191203": "80.0.3954.0",
+ "9.0.0-nightly.20191204": "80.0.3954.0",
+ "9.0.0-nightly.20191210": "80.0.3954.0",
+ "9.0.0-nightly.20191220": "81.0.3994.0",
+ "9.0.0-nightly.20191221": "81.0.3994.0",
+ "9.0.0-nightly.20191222": "81.0.3994.0",
+ "9.0.0-nightly.20191223": "81.0.3994.0",
+ "9.0.0-nightly.20191224": "81.0.3994.0",
+ "9.0.0-nightly.20191225": "81.0.3994.0",
+ "9.0.0-nightly.20191226": "81.0.3994.0",
+ "9.0.0-nightly.20191228": "81.0.3994.0",
+ "9.0.0-nightly.20191229": "81.0.3994.0",
+ "9.0.0-nightly.20191230": "81.0.3994.0",
+ "9.0.0-nightly.20191231": "81.0.3994.0",
+ "9.0.0-nightly.20200101": "81.0.3994.0",
+ "9.0.0-nightly.20200103": "81.0.3994.0",
+ "9.0.0-nightly.20200104": "81.0.3994.0",
+ "9.0.0-nightly.20200105": "81.0.3994.0",
+ "9.0.0-nightly.20200106": "81.0.3994.0",
+ "9.0.0-nightly.20200108": "81.0.3994.0",
+ "9.0.0-nightly.20200109": "81.0.3994.0",
+ "9.0.0-nightly.20200110": "81.0.3994.0",
+ "9.0.0-nightly.20200111": "81.0.3994.0",
+ "9.0.0-nightly.20200113": "81.0.3994.0",
+ "9.0.0-nightly.20200115": "81.0.3994.0",
+ "9.0.0-nightly.20200116": "81.0.3994.0",
+ "9.0.0-nightly.20200117": "81.0.3994.0",
+ "9.0.0-nightly.20200119": "81.0.4030.0",
+ "9.0.0-nightly.20200121": "81.0.4030.0",
+ "9.0.0": "83.0.4103.64",
+ "9.0.1": "83.0.4103.94",
+ "9.0.2": "83.0.4103.94",
+ "9.0.3": "83.0.4103.100",
+ "9.0.4": "83.0.4103.104",
+ "9.0.5": "83.0.4103.119",
+ "9.1.0": "83.0.4103.122",
+ "9.1.1": "83.0.4103.122",
+ "9.1.2": "83.0.4103.122",
+ "9.2.0": "83.0.4103.122",
+ "9.2.1": "83.0.4103.122",
+ "9.3.0": "83.0.4103.122",
+ "9.3.1": "83.0.4103.122",
+ "9.3.2": "83.0.4103.122",
+ "9.3.3": "83.0.4103.122",
+ "9.3.4": "83.0.4103.122",
+ "9.3.5": "83.0.4103.122",
+ "9.4.0": "83.0.4103.122",
+ "9.4.1": "83.0.4103.122",
+ "9.4.2": "83.0.4103.122",
+ "9.4.3": "83.0.4103.122",
+ "9.4.4": "83.0.4103.122",
+ "10.0.0-beta.1": "84.0.4129.0",
+ "10.0.0-beta.2": "84.0.4129.0",
+ "10.0.0-beta.3": "85.0.4161.2",
+ "10.0.0-beta.4": "85.0.4161.2",
+ "10.0.0-beta.8": "85.0.4181.1",
+ "10.0.0-beta.9": "85.0.4181.1",
+ "10.0.0-beta.10": "85.0.4183.19",
+ "10.0.0-beta.11": "85.0.4183.20",
+ "10.0.0-beta.12": "85.0.4183.26",
+ "10.0.0-beta.13": "85.0.4183.39",
+ "10.0.0-beta.14": "85.0.4183.39",
+ "10.0.0-beta.15": "85.0.4183.39",
+ "10.0.0-beta.17": "85.0.4183.39",
+ "10.0.0-beta.19": "85.0.4183.39",
+ "10.0.0-beta.20": "85.0.4183.39",
+ "10.0.0-beta.21": "85.0.4183.39",
+ "10.0.0-beta.23": "85.0.4183.70",
+ "10.0.0-beta.24": "85.0.4183.78",
+ "10.0.0-beta.25": "85.0.4183.80",
+ "10.0.0-nightly.20200209": "82.0.4050.0",
+ "10.0.0-nightly.20200210": "82.0.4050.0",
+ "10.0.0-nightly.20200211": "82.0.4050.0",
+ "10.0.0-nightly.20200216": "82.0.4050.0",
+ "10.0.0-nightly.20200217": "82.0.4050.0",
+ "10.0.0-nightly.20200218": "82.0.4050.0",
+ "10.0.0-nightly.20200221": "82.0.4050.0",
+ "10.0.0-nightly.20200222": "82.0.4050.0",
+ "10.0.0-nightly.20200223": "82.0.4050.0",
+ "10.0.0-nightly.20200226": "82.0.4050.0",
+ "10.0.0-nightly.20200303": "82.0.4050.0",
+ "10.0.0-nightly.20200304": "82.0.4076.0",
+ "10.0.0-nightly.20200305": "82.0.4076.0",
+ "10.0.0-nightly.20200306": "82.0.4076.0",
+ "10.0.0-nightly.20200309": "82.0.4076.0",
+ "10.0.0-nightly.20200310": "82.0.4076.0",
+ "10.0.0-nightly.20200311": "82.0.4083.0",
+ "10.0.0-nightly.20200316": "83.0.4086.0",
+ "10.0.0-nightly.20200317": "83.0.4087.0",
+ "10.0.0-nightly.20200318": "83.0.4087.0",
+ "10.0.0-nightly.20200320": "83.0.4087.0",
+ "10.0.0-nightly.20200323": "83.0.4087.0",
+ "10.0.0-nightly.20200324": "83.0.4087.0",
+ "10.0.0-nightly.20200325": "83.0.4087.0",
+ "10.0.0-nightly.20200326": "83.0.4087.0",
+ "10.0.0-nightly.20200327": "83.0.4087.0",
+ "10.0.0-nightly.20200330": "83.0.4087.0",
+ "10.0.0-nightly.20200331": "83.0.4087.0",
+ "10.0.0-nightly.20200401": "83.0.4087.0",
+ "10.0.0-nightly.20200402": "83.0.4087.0",
+ "10.0.0-nightly.20200403": "83.0.4087.0",
+ "10.0.0-nightly.20200406": "83.0.4087.0",
+ "10.0.0-nightly.20200408": "83.0.4095.0",
+ "10.0.0-nightly.20200410": "83.0.4095.0",
+ "10.0.0-nightly.20200413": "83.0.4095.0",
+ "10.0.0-nightly.20200414": "84.0.4114.0",
+ "10.0.0-nightly.20200415": "84.0.4115.0",
+ "10.0.0-nightly.20200416": "84.0.4115.0",
+ "10.0.0-nightly.20200417": "84.0.4115.0",
+ "10.0.0-nightly.20200422": "84.0.4121.0",
+ "10.0.0-nightly.20200423": "84.0.4121.0",
+ "10.0.0-nightly.20200427": "84.0.4125.0",
+ "10.0.0-nightly.20200428": "84.0.4125.0",
+ "10.0.0-nightly.20200429": "84.0.4125.0",
+ "10.0.0-nightly.20200430": "84.0.4125.0",
+ "10.0.0-nightly.20200501": "84.0.4129.0",
+ "10.0.0-nightly.20200504": "84.0.4129.0",
+ "10.0.0-nightly.20200505": "84.0.4129.0",
+ "10.0.0-nightly.20200506": "84.0.4129.0",
+ "10.0.0-nightly.20200507": "84.0.4129.0",
+ "10.0.0-nightly.20200508": "84.0.4129.0",
+ "10.0.0-nightly.20200511": "84.0.4129.0",
+ "10.0.0-nightly.20200512": "84.0.4129.0",
+ "10.0.0-nightly.20200513": "84.0.4129.0",
+ "10.0.0-nightly.20200514": "84.0.4129.0",
+ "10.0.0-nightly.20200515": "84.0.4129.0",
+ "10.0.0-nightly.20200518": "84.0.4129.0",
+ "10.0.0-nightly.20200519": "84.0.4129.0",
+ "10.0.0-nightly.20200520": "84.0.4129.0",
+ "10.0.0-nightly.20200521": "84.0.4129.0",
+ "10.0.0": "85.0.4183.84",
+ "10.0.1": "85.0.4183.86",
+ "10.1.0": "85.0.4183.87",
+ "10.1.1": "85.0.4183.93",
+ "10.1.2": "85.0.4183.98",
+ "10.1.3": "85.0.4183.121",
+ "10.1.4": "85.0.4183.121",
+ "10.1.5": "85.0.4183.121",
+ "10.1.6": "85.0.4183.121",
+ "10.1.7": "85.0.4183.121",
+ "10.2.0": "85.0.4183.121",
+ "10.3.0": "85.0.4183.121",
+ "10.3.1": "85.0.4183.121",
+ "10.3.2": "85.0.4183.121",
+ "10.4.0": "85.0.4183.121",
+ "10.4.1": "85.0.4183.121",
+ "10.4.2": "85.0.4183.121",
+ "10.4.3": "85.0.4183.121",
+ "10.4.4": "85.0.4183.121",
+ "10.4.5": "85.0.4183.121",
+ "10.4.6": "85.0.4183.121",
+ "10.4.7": "85.0.4183.121",
+ "11.0.0-beta.1": "86.0.4234.0",
+ "11.0.0-beta.3": "86.0.4234.0",
+ "11.0.0-beta.4": "86.0.4234.0",
+ "11.0.0-beta.5": "86.0.4234.0",
+ "11.0.0-beta.6": "86.0.4234.0",
+ "11.0.0-beta.7": "86.0.4234.0",
+ "11.0.0-beta.8": "87.0.4251.1",
+ "11.0.0-beta.9": "87.0.4251.1",
+ "11.0.0-beta.11": "87.0.4251.1",
+ "11.0.0-beta.12": "87.0.4280.11",
+ "11.0.0-beta.13": "87.0.4280.11",
+ "11.0.0-beta.16": "87.0.4280.27",
+ "11.0.0-beta.17": "87.0.4280.27",
+ "11.0.0-beta.18": "87.0.4280.27",
+ "11.0.0-beta.19": "87.0.4280.27",
+ "11.0.0-beta.20": "87.0.4280.40",
+ "11.0.0-beta.22": "87.0.4280.47",
+ "11.0.0-beta.23": "87.0.4280.47",
+ "11.0.0-nightly.20200525": "84.0.4129.0",
+ "11.0.0-nightly.20200526": "84.0.4129.0",
+ "11.0.0-nightly.20200529": "85.0.4156.0",
+ "11.0.0-nightly.20200602": "85.0.4162.0",
+ "11.0.0-nightly.20200603": "85.0.4162.0",
+ "11.0.0-nightly.20200604": "85.0.4162.0",
+ "11.0.0-nightly.20200609": "85.0.4162.0",
+ "11.0.0-nightly.20200610": "85.0.4162.0",
+ "11.0.0-nightly.20200611": "85.0.4162.0",
+ "11.0.0-nightly.20200615": "85.0.4162.0",
+ "11.0.0-nightly.20200616": "85.0.4162.0",
+ "11.0.0-nightly.20200617": "85.0.4162.0",
+ "11.0.0-nightly.20200618": "85.0.4162.0",
+ "11.0.0-nightly.20200619": "85.0.4162.0",
+ "11.0.0-nightly.20200701": "85.0.4179.0",
+ "11.0.0-nightly.20200702": "85.0.4179.0",
+ "11.0.0-nightly.20200703": "85.0.4179.0",
+ "11.0.0-nightly.20200706": "85.0.4179.0",
+ "11.0.0-nightly.20200707": "85.0.4179.0",
+ "11.0.0-nightly.20200708": "85.0.4179.0",
+ "11.0.0-nightly.20200709": "85.0.4179.0",
+ "11.0.0-nightly.20200716": "86.0.4203.0",
+ "11.0.0-nightly.20200717": "86.0.4203.0",
+ "11.0.0-nightly.20200720": "86.0.4203.0",
+ "11.0.0-nightly.20200721": "86.0.4203.0",
+ "11.0.0-nightly.20200723": "86.0.4209.0",
+ "11.0.0-nightly.20200724": "86.0.4209.0",
+ "11.0.0-nightly.20200729": "86.0.4209.0",
+ "11.0.0-nightly.20200730": "86.0.4209.0",
+ "11.0.0-nightly.20200731": "86.0.4209.0",
+ "11.0.0-nightly.20200803": "86.0.4209.0",
+ "11.0.0-nightly.20200804": "86.0.4209.0",
+ "11.0.0-nightly.20200805": "86.0.4209.0",
+ "11.0.0-nightly.20200811": "86.0.4209.0",
+ "11.0.0-nightly.20200812": "86.0.4209.0",
+ "11.0.0-nightly.20200822": "86.0.4234.0",
+ "11.0.0-nightly.20200824": "86.0.4234.0",
+ "11.0.0-nightly.20200825": "86.0.4234.0",
+ "11.0.0-nightly.20200826": "86.0.4234.0",
+ "11.0.0": "87.0.4280.60",
+ "11.0.1": "87.0.4280.60",
+ "11.0.2": "87.0.4280.67",
+ "11.0.3": "87.0.4280.67",
+ "11.0.4": "87.0.4280.67",
+ "11.0.5": "87.0.4280.88",
+ "11.1.0": "87.0.4280.88",
+ "11.1.1": "87.0.4280.88",
+ "11.2.0": "87.0.4280.141",
+ "11.2.1": "87.0.4280.141",
+ "11.2.2": "87.0.4280.141",
+ "11.2.3": "87.0.4280.141",
+ "11.3.0": "87.0.4280.141",
+ "11.4.0": "87.0.4280.141",
+ "11.4.1": "87.0.4280.141",
+ "11.4.2": "87.0.4280.141",
+ "11.4.3": "87.0.4280.141",
+ "11.4.4": "87.0.4280.141",
+ "11.4.5": "87.0.4280.141",
+ "11.4.6": "87.0.4280.141",
+ "11.4.7": "87.0.4280.141",
+ "11.4.8": "87.0.4280.141",
+ "11.4.9": "87.0.4280.141",
+ "11.4.10": "87.0.4280.141",
+ "11.4.11": "87.0.4280.141",
+ "11.4.12": "87.0.4280.141",
+ "11.5.0": "87.0.4280.141",
+ "12.0.0-beta.1": "89.0.4328.0",
+ "12.0.0-beta.3": "89.0.4328.0",
+ "12.0.0-beta.4": "89.0.4328.0",
+ "12.0.0-beta.5": "89.0.4328.0",
+ "12.0.0-beta.6": "89.0.4328.0",
+ "12.0.0-beta.7": "89.0.4328.0",
+ "12.0.0-beta.8": "89.0.4328.0",
+ "12.0.0-beta.9": "89.0.4328.0",
+ "12.0.0-beta.10": "89.0.4328.0",
+ "12.0.0-beta.11": "89.0.4328.0",
+ "12.0.0-beta.12": "89.0.4328.0",
+ "12.0.0-beta.14": "89.0.4328.0",
+ "12.0.0-beta.16": "89.0.4348.1",
+ "12.0.0-beta.18": "89.0.4348.1",
+ "12.0.0-beta.19": "89.0.4348.1",
+ "12.0.0-beta.20": "89.0.4348.1",
+ "12.0.0-beta.21": "89.0.4388.2",
+ "12.0.0-beta.22": "89.0.4388.2",
+ "12.0.0-beta.23": "89.0.4388.2",
+ "12.0.0-beta.24": "89.0.4388.2",
+ "12.0.0-beta.25": "89.0.4388.2",
+ "12.0.0-beta.26": "89.0.4388.2",
+ "12.0.0-beta.27": "89.0.4389.23",
+ "12.0.0-beta.28": "89.0.4389.23",
+ "12.0.0-beta.29": "89.0.4389.23",
+ "12.0.0-beta.30": "89.0.4389.58",
+ "12.0.0-beta.31": "89.0.4389.58",
+ "12.0.0-nightly.20200827": "86.0.4234.0",
+ "12.0.0-nightly.20200831": "86.0.4234.0",
+ "12.0.0-nightly.20200902": "86.0.4234.0",
+ "12.0.0-nightly.20200903": "86.0.4234.0",
+ "12.0.0-nightly.20200907": "86.0.4234.0",
+ "12.0.0-nightly.20200910": "86.0.4234.0",
+ "12.0.0-nightly.20200911": "86.0.4234.0",
+ "12.0.0-nightly.20200914": "86.0.4234.0",
+ "12.0.0-nightly.20201013": "87.0.4268.0",
+ "12.0.0-nightly.20201014": "87.0.4268.0",
+ "12.0.0-nightly.20201015": "87.0.4268.0",
+ "12.0.0-nightly.20201023": "88.0.4292.0",
+ "12.0.0-nightly.20201026": "88.0.4292.0",
+ "12.0.0-nightly.20201030": "88.0.4306.0",
+ "12.0.0-nightly.20201102": "88.0.4306.0",
+ "12.0.0-nightly.20201103": "88.0.4306.0",
+ "12.0.0-nightly.20201104": "88.0.4306.0",
+ "12.0.0-nightly.20201105": "88.0.4306.0",
+ "12.0.0-nightly.20201106": "88.0.4306.0",
+ "12.0.0-nightly.20201111": "88.0.4306.0",
+ "12.0.0-nightly.20201112": "88.0.4306.0",
+ "12.0.0-nightly.20201116": "88.0.4324.0",
+ "12.0.0": "89.0.4389.69",
+ "12.0.1": "89.0.4389.82",
+ "12.0.2": "89.0.4389.90",
+ "12.0.3": "89.0.4389.114",
+ "12.0.4": "89.0.4389.114",
+ "12.0.5": "89.0.4389.128",
+ "12.0.6": "89.0.4389.128",
+ "12.0.7": "89.0.4389.128",
+ "12.0.8": "89.0.4389.128",
+ "12.0.9": "89.0.4389.128",
+ "12.0.10": "89.0.4389.128",
+ "12.0.11": "89.0.4389.128",
+ "12.0.12": "89.0.4389.128",
+ "12.0.13": "89.0.4389.128",
+ "12.0.14": "89.0.4389.128",
+ "12.0.15": "89.0.4389.128",
+ "12.0.16": "89.0.4389.128",
+ "12.0.17": "89.0.4389.128",
+ "12.0.18": "89.0.4389.128",
+ "12.1.0": "89.0.4389.128",
+ "12.1.1": "89.0.4389.128",
+ "12.1.2": "89.0.4389.128",
+ "12.2.0": "89.0.4389.128",
+ "12.2.1": "89.0.4389.128",
+ "12.2.2": "89.0.4389.128",
+ "12.2.3": "89.0.4389.128",
+ "13.0.0-beta.2": "90.0.4402.0",
+ "13.0.0-beta.3": "90.0.4402.0",
+ "13.0.0-beta.4": "90.0.4415.0",
+ "13.0.0-beta.5": "90.0.4415.0",
+ "13.0.0-beta.6": "90.0.4415.0",
+ "13.0.0-beta.7": "90.0.4415.0",
+ "13.0.0-beta.8": "90.0.4415.0",
+ "13.0.0-beta.9": "90.0.4415.0",
+ "13.0.0-beta.11": "90.0.4415.0",
+ "13.0.0-beta.12": "90.0.4415.0",
+ "13.0.0-beta.13": "90.0.4415.0",
+ "13.0.0-beta.14": "91.0.4448.0",
+ "13.0.0-beta.16": "91.0.4448.0",
+ "13.0.0-beta.17": "91.0.4448.0",
+ "13.0.0-beta.18": "91.0.4448.0",
+ "13.0.0-beta.20": "91.0.4448.0",
+ "13.0.0-beta.21": "91.0.4472.33",
+ "13.0.0-beta.22": "91.0.4472.33",
+ "13.0.0-beta.23": "91.0.4472.33",
+ "13.0.0-beta.24": "91.0.4472.38",
+ "13.0.0-beta.26": "91.0.4472.38",
+ "13.0.0-beta.27": "91.0.4472.38",
+ "13.0.0-beta.28": "91.0.4472.38",
+ "13.0.0-nightly.20201119": "89.0.4328.0",
+ "13.0.0-nightly.20201123": "89.0.4328.0",
+ "13.0.0-nightly.20201124": "89.0.4328.0",
+ "13.0.0-nightly.20201126": "89.0.4328.0",
+ "13.0.0-nightly.20201127": "89.0.4328.0",
+ "13.0.0-nightly.20201130": "89.0.4328.0",
+ "13.0.0-nightly.20201201": "89.0.4328.0",
+ "13.0.0-nightly.20201202": "89.0.4328.0",
+ "13.0.0-nightly.20201203": "89.0.4328.0",
+ "13.0.0-nightly.20201204": "89.0.4328.0",
+ "13.0.0-nightly.20201207": "89.0.4328.0",
+ "13.0.0-nightly.20201208": "89.0.4328.0",
+ "13.0.0-nightly.20201209": "89.0.4328.0",
+ "13.0.0-nightly.20201210": "89.0.4328.0",
+ "13.0.0-nightly.20201211": "89.0.4328.0",
+ "13.0.0-nightly.20201214": "89.0.4328.0",
+ "13.0.0-nightly.20201215": "89.0.4349.0",
+ "13.0.0-nightly.20201216": "89.0.4349.0",
+ "13.0.0-nightly.20201221": "89.0.4349.0",
+ "13.0.0-nightly.20201222": "89.0.4349.0",
+ "13.0.0-nightly.20201223": "89.0.4359.0",
+ "13.0.0-nightly.20210104": "89.0.4359.0",
+ "13.0.0-nightly.20210108": "89.0.4359.0",
+ "13.0.0-nightly.20210111": "89.0.4359.0",
+ "13.0.0-nightly.20210113": "89.0.4386.0",
+ "13.0.0-nightly.20210114": "89.0.4386.0",
+ "13.0.0-nightly.20210118": "89.0.4386.0",
+ "13.0.0-nightly.20210122": "89.0.4386.0",
+ "13.0.0-nightly.20210125": "89.0.4386.0",
+ "13.0.0-nightly.20210127": "89.0.4389.0",
+ "13.0.0-nightly.20210128": "89.0.4389.0",
+ "13.0.0-nightly.20210129": "89.0.4389.0",
+ "13.0.0-nightly.20210201": "89.0.4389.0",
+ "13.0.0-nightly.20210202": "89.0.4389.0",
+ "13.0.0-nightly.20210203": "89.0.4389.0",
+ "13.0.0-nightly.20210205": "89.0.4389.0",
+ "13.0.0-nightly.20210208": "89.0.4389.0",
+ "13.0.0-nightly.20210209": "89.0.4389.0",
+ "13.0.0-nightly.20210210": "90.0.4402.0",
+ "13.0.0-nightly.20210211": "90.0.4402.0",
+ "13.0.0-nightly.20210212": "90.0.4402.0",
+ "13.0.0-nightly.20210216": "90.0.4402.0",
+ "13.0.0-nightly.20210217": "90.0.4402.0",
+ "13.0.0-nightly.20210218": "90.0.4402.0",
+ "13.0.0-nightly.20210219": "90.0.4402.0",
+ "13.0.0-nightly.20210222": "90.0.4402.0",
+ "13.0.0-nightly.20210225": "90.0.4402.0",
+ "13.0.0-nightly.20210226": "90.0.4402.0",
+ "13.0.0-nightly.20210301": "90.0.4402.0",
+ "13.0.0-nightly.20210302": "90.0.4402.0",
+ "13.0.0-nightly.20210303": "90.0.4402.0",
+ "13.0.0": "91.0.4472.69",
+ "13.0.1": "91.0.4472.69",
+ "13.1.0": "91.0.4472.77",
+ "13.1.1": "91.0.4472.77",
+ "13.1.2": "91.0.4472.77",
+ "13.1.3": "91.0.4472.106",
+ "13.1.4": "91.0.4472.106",
+ "13.1.5": "91.0.4472.124",
+ "13.1.6": "91.0.4472.124",
+ "13.1.7": "91.0.4472.124",
+ "13.1.8": "91.0.4472.164",
+ "13.1.9": "91.0.4472.164",
+ "13.2.0": "91.0.4472.164",
+ "13.2.1": "91.0.4472.164",
+ "13.2.2": "91.0.4472.164",
+ "13.2.3": "91.0.4472.164",
+ "13.3.0": "91.0.4472.164",
+ "13.4.0": "91.0.4472.164",
+ "13.5.0": "91.0.4472.164",
+ "13.5.1": "91.0.4472.164",
+ "13.5.2": "91.0.4472.164",
+ "13.6.0": "91.0.4472.164",
+ "13.6.1": "91.0.4472.164",
+ "13.6.2": "91.0.4472.164",
+ "14.0.0-beta.1": "92.0.4511.0",
+ "14.0.0-beta.2": "92.0.4511.0",
+ "14.0.0-beta.3": "92.0.4511.0",
+ "14.0.0-beta.5": "93.0.4536.0",
+ "14.0.0-beta.6": "93.0.4536.0",
+ "14.0.0-beta.7": "93.0.4536.0",
+ "14.0.0-beta.8": "93.0.4536.0",
+ "14.0.0-beta.9": "93.0.4539.0",
+ "14.0.0-beta.10": "93.0.4539.0",
+ "14.0.0-beta.11": "93.0.4557.4",
+ "14.0.0-beta.12": "93.0.4557.4",
+ "14.0.0-beta.13": "93.0.4566.0",
+ "14.0.0-beta.14": "93.0.4566.0",
+ "14.0.0-beta.15": "93.0.4566.0",
+ "14.0.0-beta.16": "93.0.4566.0",
+ "14.0.0-beta.17": "93.0.4566.0",
+ "14.0.0-beta.18": "93.0.4577.15",
+ "14.0.0-beta.19": "93.0.4577.15",
+ "14.0.0-beta.20": "93.0.4577.15",
+ "14.0.0-beta.21": "93.0.4577.15",
+ "14.0.0-beta.22": "93.0.4577.25",
+ "14.0.0-beta.23": "93.0.4577.25",
+ "14.0.0-beta.24": "93.0.4577.51",
+ "14.0.0-beta.25": "93.0.4577.51",
+ "14.0.0-nightly.20210304": "90.0.4402.0",
+ "14.0.0-nightly.20210305": "90.0.4415.0",
+ "14.0.0-nightly.20210308": "90.0.4415.0",
+ "14.0.0-nightly.20210309": "90.0.4415.0",
+ "14.0.0-nightly.20210311": "90.0.4415.0",
+ "14.0.0-nightly.20210315": "90.0.4415.0",
+ "14.0.0-nightly.20210316": "90.0.4415.0",
+ "14.0.0-nightly.20210317": "90.0.4415.0",
+ "14.0.0-nightly.20210318": "90.0.4415.0",
+ "14.0.0-nightly.20210319": "90.0.4415.0",
+ "14.0.0-nightly.20210323": "90.0.4415.0",
+ "14.0.0-nightly.20210324": "90.0.4415.0",
+ "14.0.0-nightly.20210325": "90.0.4415.0",
+ "14.0.0-nightly.20210326": "90.0.4415.0",
+ "14.0.0-nightly.20210329": "90.0.4415.0",
+ "14.0.0-nightly.20210330": "90.0.4415.0",
+ "14.0.0-nightly.20210331": "91.0.4448.0",
+ "14.0.0-nightly.20210401": "91.0.4448.0",
+ "14.0.0-nightly.20210402": "91.0.4448.0",
+ "14.0.0-nightly.20210406": "91.0.4448.0",
+ "14.0.0-nightly.20210407": "91.0.4448.0",
+ "14.0.0-nightly.20210408": "91.0.4448.0",
+ "14.0.0-nightly.20210409": "91.0.4448.0",
+ "14.0.0-nightly.20210413": "91.0.4448.0",
+ "14.0.0-nightly.20210426": "92.0.4475.0",
+ "14.0.0-nightly.20210427": "92.0.4475.0",
+ "14.0.0-nightly.20210430": "92.0.4488.0",
+ "14.0.0-nightly.20210503": "92.0.4488.0",
+ "14.0.0-nightly.20210505": "92.0.4496.0",
+ "14.0.0-nightly.20210506": "92.0.4498.0",
+ "14.0.0-nightly.20210507": "92.0.4499.0",
+ "14.0.0-nightly.20210510": "92.0.4499.0",
+ "14.0.0-nightly.20210511": "92.0.4499.0",
+ "14.0.0-nightly.20210512": "92.0.4499.0",
+ "14.0.0-nightly.20210513": "92.0.4499.0",
+ "14.0.0-nightly.20210514": "92.0.4505.0",
+ "14.0.0-nightly.20210517": "92.0.4505.0",
+ "14.0.0-nightly.20210518": "92.0.4505.0",
+ "14.0.0-nightly.20210519": "92.0.4505.0",
+ "14.0.0-nightly.20210520": "92.0.4511.0",
+ "14.0.0-nightly.20210523": "92.0.4511.0",
+ "14.0.0-nightly.20210524": "92.0.4511.0",
+ "14.0.0": "93.0.4577.58",
+ "14.0.1": "93.0.4577.63",
+ "14.0.2": "93.0.4577.82",
+ "14.1.0": "93.0.4577.82",
+ "14.1.1": "93.0.4577.82",
+ "14.2.0": "93.0.4577.82",
+ "14.2.1": "93.0.4577.82",
+ "15.0.0-alpha.1": "93.0.4566.0",
+ "15.0.0-alpha.2": "93.0.4566.0",
+ "15.0.0-alpha.3": "94.0.4584.0",
+ "15.0.0-alpha.4": "94.0.4584.0",
+ "15.0.0-alpha.5": "94.0.4584.0",
+ "15.0.0-alpha.6": "94.0.4584.0",
+ "15.0.0-alpha.7": "94.0.4590.2",
+ "15.0.0-alpha.8": "94.0.4590.2",
+ "15.0.0-alpha.9": "94.0.4590.2",
+ "15.0.0-alpha.10": "94.0.4606.12",
+ "15.0.0-beta.1": "94.0.4606.20",
+ "15.0.0-beta.2": "94.0.4606.20",
+ "15.0.0-beta.3": "94.0.4606.31",
+ "15.0.0-beta.4": "94.0.4606.31",
+ "15.0.0-beta.5": "94.0.4606.31",
+ "15.0.0-beta.6": "94.0.4606.31",
+ "15.0.0-beta.7": "94.0.4606.31",
+ "15.0.0-nightly.20210527": "92.0.4511.0",
+ "15.0.0-nightly.20210528": "92.0.4511.0",
+ "15.0.0-nightly.20210531": "92.0.4511.0",
+ "15.0.0-nightly.20210601": "92.0.4511.0",
+ "15.0.0-nightly.20210602": "92.0.4511.0",
+ "15.0.0-nightly.20210603": "93.0.4530.0",
+ "15.0.0-nightly.20210604": "93.0.4530.0",
+ "15.0.0-nightly.20210608": "93.0.4535.0",
+ "15.0.0-nightly.20210609": "93.0.4536.0",
+ "15.0.0-nightly.20210610": "93.0.4536.0",
+ "15.0.0-nightly.20210611": "93.0.4536.0",
+ "15.0.0-nightly.20210614": "93.0.4536.0",
+ "15.0.0-nightly.20210615": "93.0.4536.0",
+ "15.0.0-nightly.20210616": "93.0.4536.0",
+ "15.0.0-nightly.20210617": "93.0.4539.0",
+ "15.0.0-nightly.20210618": "93.0.4539.0",
+ "15.0.0-nightly.20210621": "93.0.4539.0",
+ "15.0.0-nightly.20210622": "93.0.4539.0",
+ "15.0.0-nightly.20210623": "93.0.4550.0",
+ "15.0.0-nightly.20210624": "93.0.4550.0",
+ "15.0.0-nightly.20210625": "93.0.4552.0",
+ "15.0.0-nightly.20210628": "93.0.4552.0",
+ "15.0.0-nightly.20210629": "93.0.4552.0",
+ "15.0.0-nightly.20210630": "93.0.4558.0",
+ "15.0.0-nightly.20210701": "93.0.4558.0",
+ "15.0.0-nightly.20210702": "93.0.4558.0",
+ "15.0.0-nightly.20210705": "93.0.4558.0",
+ "15.0.0-nightly.20210706": "93.0.4566.0",
+ "15.0.0-nightly.20210707": "93.0.4566.0",
+ "15.0.0-nightly.20210708": "93.0.4566.0",
+ "15.0.0-nightly.20210709": "93.0.4566.0",
+ "15.0.0-nightly.20210712": "93.0.4566.0",
+ "15.0.0-nightly.20210713": "93.0.4566.0",
+ "15.0.0-nightly.20210714": "93.0.4566.0",
+ "15.0.0-nightly.20210715": "93.0.4566.0",
+ "15.0.0-nightly.20210716": "93.0.4566.0",
+ "15.0.0-nightly.20210719": "93.0.4566.0",
+ "15.0.0-nightly.20210720": "93.0.4566.0",
+ "15.0.0-nightly.20210721": "93.0.4566.0",
+ "15.0.0": "94.0.4606.51",
+ "15.1.0": "94.0.4606.61",
+ "15.1.1": "94.0.4606.61",
+ "15.1.2": "94.0.4606.71",
+ "15.2.0": "94.0.4606.81",
+ "15.3.0": "94.0.4606.81",
+ "15.3.1": "94.0.4606.81",
+ "15.3.2": "94.0.4606.81",
+ "16.0.0-alpha.1": "95.0.4629.0",
+ "16.0.0-alpha.2": "95.0.4629.0",
+ "16.0.0-alpha.3": "95.0.4629.0",
+ "16.0.0-alpha.4": "95.0.4629.0",
+ "16.0.0-alpha.5": "95.0.4629.0",
+ "16.0.0-alpha.6": "95.0.4629.0",
+ "16.0.0-alpha.7": "95.0.4629.0",
+ "16.0.0-alpha.8": "96.0.4647.0",
+ "16.0.0-alpha.9": "96.0.4647.0",
+ "16.0.0-beta.1": "96.0.4647.0",
+ "16.0.0-beta.2": "96.0.4647.0",
+ "16.0.0-beta.3": "96.0.4647.0",
+ "16.0.0-beta.4": "96.0.4664.18",
+ "16.0.0-beta.5": "96.0.4664.18",
+ "16.0.0-beta.6": "96.0.4664.27",
+ "16.0.0-beta.7": "96.0.4664.27",
+ "16.0.0-beta.8": "96.0.4664.35",
+ "16.0.0-beta.9": "96.0.4664.35",
+ "16.0.0-nightly.20210722": "93.0.4566.0",
+ "16.0.0-nightly.20210723": "93.0.4566.0",
+ "16.0.0-nightly.20210726": "93.0.4566.0",
+ "16.0.0-nightly.20210727": "94.0.4584.0",
+ "16.0.0-nightly.20210728": "94.0.4584.0",
+ "16.0.0-nightly.20210729": "94.0.4584.0",
+ "16.0.0-nightly.20210730": "94.0.4584.0",
+ "16.0.0-nightly.20210802": "94.0.4584.0",
+ "16.0.0-nightly.20210803": "94.0.4584.0",
+ "16.0.0-nightly.20210804": "94.0.4584.0",
+ "16.0.0-nightly.20210805": "94.0.4584.0",
+ "16.0.0-nightly.20210806": "94.0.4584.0",
+ "16.0.0-nightly.20210809": "94.0.4584.0",
+ "16.0.0-nightly.20210810": "94.0.4584.0",
+ "16.0.0-nightly.20210811": "94.0.4584.0",
+ "16.0.0-nightly.20210812": "94.0.4590.2",
+ "16.0.0-nightly.20210813": "94.0.4590.2",
+ "16.0.0-nightly.20210816": "94.0.4590.2",
+ "16.0.0-nightly.20210817": "94.0.4590.2",
+ "16.0.0-nightly.20210818": "94.0.4590.2",
+ "16.0.0-nightly.20210819": "94.0.4590.2",
+ "16.0.0-nightly.20210820": "94.0.4590.2",
+ "16.0.0-nightly.20210823": "94.0.4590.2",
+ "16.0.0-nightly.20210824": "95.0.4612.5",
+ "16.0.0-nightly.20210825": "95.0.4612.5",
+ "16.0.0-nightly.20210826": "95.0.4612.5",
+ "16.0.0-nightly.20210827": "95.0.4612.5",
+ "16.0.0-nightly.20210830": "95.0.4612.5",
+ "16.0.0-nightly.20210831": "95.0.4612.5",
+ "16.0.0-nightly.20210901": "95.0.4612.5",
+ "16.0.0-nightly.20210902": "95.0.4629.0",
+ "16.0.0-nightly.20210903": "95.0.4629.0",
+ "16.0.0-nightly.20210906": "95.0.4629.0",
+ "16.0.0-nightly.20210907": "95.0.4629.0",
+ "16.0.0-nightly.20210908": "95.0.4629.0",
+ "16.0.0-nightly.20210909": "95.0.4629.0",
+ "16.0.0-nightly.20210910": "95.0.4629.0",
+ "16.0.0-nightly.20210913": "95.0.4629.0",
+ "16.0.0-nightly.20210914": "95.0.4629.0",
+ "16.0.0-nightly.20210915": "95.0.4629.0",
+ "16.0.0-nightly.20210916": "95.0.4629.0",
+ "16.0.0-nightly.20210917": "95.0.4629.0",
+ "16.0.0-nightly.20210920": "95.0.4629.0",
+ "16.0.0-nightly.20210921": "95.0.4629.0",
+ "16.0.0-nightly.20210922": "95.0.4629.0",
+ "16.0.0": "96.0.4664.45",
+ "16.0.1": "96.0.4664.45",
+ "16.0.2": "96.0.4664.55",
+ "17.0.0-alpha.1": "96.0.4664.4",
+ "17.0.0-alpha.2": "96.0.4664.4",
+ "17.0.0-alpha.3": "96.0.4664.4",
+ "17.0.0-alpha.4": "98.0.4706.0",
+ "17.0.0-nightly.20210923": "95.0.4629.0",
+ "17.0.0-nightly.20210924": "95.0.4629.0",
+ "17.0.0-nightly.20210927": "95.0.4629.0",
+ "17.0.0-nightly.20210928": "95.0.4629.0",
+ "17.0.0-nightly.20210929": "95.0.4629.0",
+ "17.0.0-nightly.20210930": "95.0.4629.0",
+ "17.0.0-nightly.20211001": "95.0.4629.0",
+ "17.0.0-nightly.20211004": "95.0.4629.0",
+ "17.0.0-nightly.20211005": "95.0.4629.0",
+ "17.0.0-nightly.20211006": "96.0.4647.0",
+ "17.0.0-nightly.20211007": "96.0.4647.0",
+ "17.0.0-nightly.20211008": "96.0.4647.0",
+ "17.0.0-nightly.20211011": "96.0.4647.0",
+ "17.0.0-nightly.20211012": "96.0.4647.0",
+ "17.0.0-nightly.20211013": "96.0.4647.0",
+ "17.0.0-nightly.20211014": "96.0.4647.0",
+ "17.0.0-nightly.20211015": "96.0.4647.0",
+ "17.0.0-nightly.20211018": "96.0.4647.0",
+ "17.0.0-nightly.20211019": "96.0.4647.0",
+ "17.0.0-nightly.20211020": "96.0.4647.0",
+ "17.0.0-nightly.20211021": "96.0.4647.0",
+ "17.0.0-nightly.20211022": "96.0.4664.4",
+ "17.0.0-nightly.20211025": "96.0.4664.4",
+ "17.0.0-nightly.20211026": "96.0.4664.4",
+ "17.0.0-nightly.20211027": "96.0.4664.4",
+ "17.0.0-nightly.20211028": "96.0.4664.4",
+ "17.0.0-nightly.20211029": "96.0.4664.4",
+ "17.0.0-nightly.20211101": "96.0.4664.4",
+ "17.0.0-nightly.20211102": "96.0.4664.4",
+ "17.0.0-nightly.20211103": "96.0.4664.4",
+ "17.0.0-nightly.20211104": "96.0.4664.4",
+ "17.0.0-nightly.20211105": "96.0.4664.4",
+ "17.0.0-nightly.20211108": "96.0.4664.4",
+ "17.0.0-nightly.20211109": "96.0.4664.4",
+ "17.0.0-nightly.20211110": "96.0.4664.4",
+ "17.0.0-nightly.20211111": "96.0.4664.4",
+ "17.0.0-nightly.20211112": "96.0.4664.4",
+ "17.0.0-nightly.20211115": "96.0.4664.4",
+ "17.0.0-nightly.20211116": "96.0.4664.4",
+ "17.0.0-nightly.20211117": "96.0.4664.4",
+ "18.0.0-nightly.20211118": "96.0.4664.4",
+ "18.0.0-nightly.20211119": "96.0.4664.4",
+ "18.0.0-nightly.20211122": "96.0.4664.4",
+ "18.0.0-nightly.20211123": "96.0.4664.4",
+ "18.0.0-nightly.20211124": "98.0.4706.0",
+ "18.0.0-nightly.20211125": "98.0.4706.0",
+ "18.0.0-nightly.20211126": "98.0.4706.0"
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json
new file mode 100644
index 0000000000..e594825447
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json
@@ -0,0 +1 @@
+{"0.20.0":"39.0.2171.65","0.20.1":"39.0.2171.65","0.20.2":"39.0.2171.65","0.20.3":"39.0.2171.65","0.20.4":"39.0.2171.65","0.20.5":"39.0.2171.65","0.20.6":"39.0.2171.65","0.20.7":"39.0.2171.65","0.20.8":"39.0.2171.65","0.21.0":"40.0.2214.91","0.21.1":"40.0.2214.91","0.21.2":"40.0.2214.91","0.21.3":"41.0.2272.76","0.22.1":"41.0.2272.76","0.22.2":"41.0.2272.76","0.22.3":"41.0.2272.76","0.23.0":"41.0.2272.76","0.24.0":"41.0.2272.76","0.25.0":"42.0.2311.107","0.25.1":"42.0.2311.107","0.25.2":"42.0.2311.107","0.25.3":"42.0.2311.107","0.26.0":"42.0.2311.107","0.26.1":"42.0.2311.107","0.27.0":"42.0.2311.107","0.27.1":"42.0.2311.107","0.27.2":"43.0.2357.65","0.27.3":"43.0.2357.65","0.28.0":"43.0.2357.65","0.28.1":"43.0.2357.65","0.28.2":"43.0.2357.65","0.28.3":"43.0.2357.65","0.29.1":"43.0.2357.65","0.29.2":"43.0.2357.65","0.30.4":"44.0.2403.125","0.31.0":"44.0.2403.125","0.31.2":"45.0.2454.85","0.32.2":"45.0.2454.85","0.32.3":"45.0.2454.85","0.33.0":"45.0.2454.85","0.33.1":"45.0.2454.85","0.33.2":"45.0.2454.85","0.33.3":"45.0.2454.85","0.33.4":"45.0.2454.85","0.33.6":"45.0.2454.85","0.33.7":"45.0.2454.85","0.33.8":"45.0.2454.85","0.33.9":"45.0.2454.85","0.34.0":"45.0.2454.85","0.34.1":"45.0.2454.85","0.34.2":"45.0.2454.85","0.34.3":"45.0.2454.85","0.34.4":"45.0.2454.85","0.35.1":"45.0.2454.85","0.35.2":"45.0.2454.85","0.35.3":"45.0.2454.85","0.35.4":"45.0.2454.85","0.35.5":"45.0.2454.85","0.36.0":"47.0.2526.73","0.36.2":"47.0.2526.73","0.36.3":"47.0.2526.73","0.36.4":"47.0.2526.73","0.36.5":"47.0.2526.110","0.36.6":"47.0.2526.110","0.36.7":"47.0.2526.110","0.36.8":"47.0.2526.110","0.36.9":"47.0.2526.110","0.36.10":"47.0.2526.110","0.36.11":"47.0.2526.110","0.36.12":"47.0.2526.110","0.37.0":"49.0.2623.75","0.37.1":"49.0.2623.75","0.37.3":"49.0.2623.75","0.37.4":"49.0.2623.75","0.37.5":"49.0.2623.75","0.37.6":"49.0.2623.75","0.37.7":"49.0.2623.75","0.37.8":"49.0.2623.75","1.0.0":"49.0.2623.75","1.0.1":"49.0.2623.75","1.0.2":"49.0.2623.75","1.1.0":"50.0.2661.102","1.1.1":"50.0.2661.102","1.1.2":"50.0.2661.102","1.1.3":"50.0.2661.102","1.2.0":"51.0.2704.63","1.2.1":"51.0.2704.63","1.2.2":"51.0.2704.84","1.2.3":"51.0.2704.84","1.2.4":"51.0.2704.103","1.2.5":"51.0.2704.103","1.2.6":"51.0.2704.106","1.2.7":"51.0.2704.106","1.2.8":"51.0.2704.106","1.3.0":"52.0.2743.82","1.3.1":"52.0.2743.82","1.3.2":"52.0.2743.82","1.3.3":"52.0.2743.82","1.3.4":"52.0.2743.82","1.3.5":"52.0.2743.82","1.3.6":"52.0.2743.82","1.3.7":"52.0.2743.82","1.3.9":"52.0.2743.82","1.3.10":"52.0.2743.82","1.3.13":"52.0.2743.82","1.3.14":"52.0.2743.82","1.3.15":"52.0.2743.82","1.4.0":"53.0.2785.113","1.4.1":"53.0.2785.113","1.4.2":"53.0.2785.113","1.4.3":"53.0.2785.113","1.4.4":"53.0.2785.113","1.4.5":"53.0.2785.113","1.4.6":"53.0.2785.143","1.4.7":"53.0.2785.143","1.4.8":"53.0.2785.143","1.4.10":"53.0.2785.143","1.4.11":"53.0.2785.143","1.4.12":"54.0.2840.51","1.4.13":"53.0.2785.143","1.4.14":"53.0.2785.143","1.4.15":"53.0.2785.143","1.4.16":"53.0.2785.143","1.5.0":"54.0.2840.101","1.5.1":"54.0.2840.101","1.6.0":"56.0.2924.87","1.6.1":"56.0.2924.87","1.6.2":"56.0.2924.87","1.6.3":"56.0.2924.87","1.6.4":"56.0.2924.87","1.6.5":"56.0.2924.87","1.6.6":"56.0.2924.87","1.6.7":"56.0.2924.87","1.6.8":"56.0.2924.87","1.6.9":"56.0.2924.87","1.6.10":"56.0.2924.87","1.6.11":"56.0.2924.87","1.6.12":"56.0.2924.87","1.6.13":"56.0.2924.87","1.6.14":"56.0.2924.87","1.6.15":"56.0.2924.87","1.6.16":"56.0.2924.87","1.6.17":"56.0.2924.87","1.6.18":"56.0.2924.87","1.7.0":"58.0.3029.110","1.7.1":"58.0.3029.110","1.7.2":"58.0.3029.110","1.7.3":"58.0.3029.110","1.7.4":"58.0.3029.110","1.7.5":"58.0.3029.110","1.7.6":"58.0.3029.110","1.7.7":"58.0.3029.110","1.7.8":"58.0.3029.110","1.7.9":"58.0.3029.110","1.7.10":"58.0.3029.110","1.7.11":"58.0.3029.110","1.7.12":"58.0.3029.110","1.7.13":"58.0.3029.110","1.7.14":"58.0.3029.110","1.7.15":"58.0.3029.110","1.7.16":"58.0.3029.110","1.8.0":"59.0.3071.115","1.8.1":"59.0.3071.115","1.8.2-beta.1":"59.0.3071.115","1.8.2-beta.2":"59.0.3071.115","1.8.2-beta.3":"59.0.3071.115","1.8.2-beta.4":"59.0.3071.115","1.8.2-beta.5":"59.0.3071.115","1.8.2":"59.0.3071.115","1.8.3":"59.0.3071.115","1.8.4":"59.0.3071.115","1.8.5":"59.0.3071.115","1.8.6":"59.0.3071.115","1.8.7":"59.0.3071.115","1.8.8":"59.0.3071.115","2.0.0-beta.1":"61.0.3163.100","2.0.0-beta.2":"61.0.3163.100","2.0.0-beta.3":"61.0.3163.100","2.0.0-beta.4":"61.0.3163.100","2.0.0-beta.5":"61.0.3163.100","2.0.0-beta.6":"61.0.3163.100","2.0.0-beta.7":"61.0.3163.100","2.0.0-beta.8":"61.0.3163.100","2.0.0":"61.0.3163.100","2.0.1":"61.0.3163.100","2.0.2":"61.0.3163.100","2.0.3":"61.0.3163.100","2.0.4":"61.0.3163.100","2.0.5":"61.0.3163.100","2.0.6":"61.0.3163.100","2.0.7":"61.0.3163.100","2.0.8-nightly.20180819":"61.0.3163.100","2.0.8-nightly.20180820":"61.0.3163.100","2.0.8":"61.0.3163.100","2.0.9":"61.0.3163.100","2.0.10":"61.0.3163.100","2.0.11":"61.0.3163.100","2.0.12":"61.0.3163.100","2.0.13":"61.0.3163.100","2.0.14":"61.0.3163.100","2.0.15":"61.0.3163.100","2.0.16":"61.0.3163.100","2.0.17":"61.0.3163.100","2.0.18":"61.0.3163.100","2.1.0-unsupported.20180809":"61.0.3163.100","3.0.0-beta.1":"66.0.3359.181","3.0.0-beta.2":"66.0.3359.181","3.0.0-beta.3":"66.0.3359.181","3.0.0-beta.4":"66.0.3359.181","3.0.0-beta.5":"66.0.3359.181","3.0.0-beta.6":"66.0.3359.181","3.0.0-beta.7":"66.0.3359.181","3.0.0-beta.8":"66.0.3359.181","3.0.0-beta.9":"66.0.3359.181","3.0.0-beta.10":"66.0.3359.181","3.0.0-beta.11":"66.0.3359.181","3.0.0-beta.12":"66.0.3359.181","3.0.0-beta.13":"66.0.3359.181","3.0.0-nightly.20180818":"66.0.3359.181","3.0.0-nightly.20180821":"66.0.3359.181","3.0.0-nightly.20180823":"66.0.3359.181","3.0.0-nightly.20180904":"66.0.3359.181","3.0.0":"66.0.3359.181","3.0.1":"66.0.3359.181","3.0.2":"66.0.3359.181","3.0.3":"66.0.3359.181","3.0.4":"66.0.3359.181","3.0.5":"66.0.3359.181","3.0.6":"66.0.3359.181","3.0.7":"66.0.3359.181","3.0.8":"66.0.3359.181","3.0.9":"66.0.3359.181","3.0.10":"66.0.3359.181","3.0.11":"66.0.3359.181","3.0.12":"66.0.3359.181","3.0.13":"66.0.3359.181","3.0.14":"66.0.3359.181","3.0.15":"66.0.3359.181","3.0.16":"66.0.3359.181","3.1.0-beta.1":"66.0.3359.181","3.1.0-beta.2":"66.0.3359.181","3.1.0-beta.3":"66.0.3359.181","3.1.0-beta.4":"66.0.3359.181","3.1.0-beta.5":"66.0.3359.181","3.1.0":"66.0.3359.181","3.1.1":"66.0.3359.181","3.1.2":"66.0.3359.181","3.1.3":"66.0.3359.181","3.1.4":"66.0.3359.181","3.1.5":"66.0.3359.181","3.1.6":"66.0.3359.181","3.1.7":"66.0.3359.181","3.1.8":"66.0.3359.181","3.1.9":"66.0.3359.181","3.1.10":"66.0.3359.181","3.1.11":"66.0.3359.181","3.1.12":"66.0.3359.181","3.1.13":"66.0.3359.181","4.0.0-beta.1":"69.0.3497.106","4.0.0-beta.2":"69.0.3497.106","4.0.0-beta.3":"69.0.3497.106","4.0.0-beta.4":"69.0.3497.106","4.0.0-beta.5":"69.0.3497.106","4.0.0-beta.6":"69.0.3497.106","4.0.0-beta.7":"69.0.3497.106","4.0.0-beta.8":"69.0.3497.106","4.0.0-beta.9":"69.0.3497.106","4.0.0-beta.10":"69.0.3497.106","4.0.0-beta.11":"69.0.3497.106","4.0.0-nightly.20180817":"66.0.3359.181","4.0.0-nightly.20180819":"66.0.3359.181","4.0.0-nightly.20180821":"66.0.3359.181","4.0.0-nightly.20180929":"67.0.3396.99","4.0.0-nightly.20181006":"68.0.3440.128","4.0.0-nightly.20181010":"69.0.3497.106","4.0.0":"69.0.3497.106","4.0.1":"69.0.3497.106","4.0.2":"69.0.3497.106","4.0.3":"69.0.3497.106","4.0.4":"69.0.3497.106","4.0.5":"69.0.3497.106","4.0.6":"69.0.3497.106","4.0.7":"69.0.3497.128","4.0.8":"69.0.3497.128","4.1.0":"69.0.3497.128","4.1.1":"69.0.3497.128","4.1.2":"69.0.3497.128","4.1.3":"69.0.3497.128","4.1.4":"69.0.3497.128","4.1.5":"69.0.3497.128","4.2.0":"69.0.3497.128","4.2.1":"69.0.3497.128","4.2.2":"69.0.3497.128","4.2.3":"69.0.3497.128","4.2.4":"69.0.3497.128","4.2.5":"69.0.3497.128","4.2.6":"69.0.3497.128","4.2.7":"69.0.3497.128","4.2.8":"69.0.3497.128","4.2.9":"69.0.3497.128","4.2.10":"69.0.3497.128","4.2.11":"69.0.3497.128","4.2.12":"69.0.3497.128","5.0.0-beta.1":"72.0.3626.52","5.0.0-beta.2":"72.0.3626.52","5.0.0-beta.3":"73.0.3683.27","5.0.0-beta.4":"73.0.3683.54","5.0.0-beta.5":"73.0.3683.61","5.0.0-beta.6":"73.0.3683.84","5.0.0-beta.7":"73.0.3683.94","5.0.0-beta.8":"73.0.3683.104","5.0.0-beta.9":"73.0.3683.117","5.0.0-nightly.20190107":"70.0.3538.110","5.0.0-nightly.20190121":"71.0.3578.98","5.0.0-nightly.20190122":"71.0.3578.98","5.0.0":"73.0.3683.119","5.0.1":"73.0.3683.121","5.0.2":"73.0.3683.121","5.0.3":"73.0.3683.121","5.0.4":"73.0.3683.121","5.0.5":"73.0.3683.121","5.0.6":"73.0.3683.121","5.0.7":"73.0.3683.121","5.0.8":"73.0.3683.121","5.0.9":"73.0.3683.121","5.0.10":"73.0.3683.121","5.0.11":"73.0.3683.121","5.0.12":"73.0.3683.121","5.0.13":"73.0.3683.121","6.0.0-beta.1":"76.0.3774.1","6.0.0-beta.2":"76.0.3783.1","6.0.0-beta.3":"76.0.3783.1","6.0.0-beta.4":"76.0.3783.1","6.0.0-beta.5":"76.0.3805.4","6.0.0-beta.6":"76.0.3809.3","6.0.0-beta.7":"76.0.3809.22","6.0.0-beta.8":"76.0.3809.26","6.0.0-beta.9":"76.0.3809.26","6.0.0-beta.10":"76.0.3809.37","6.0.0-beta.11":"76.0.3809.42","6.0.0-beta.12":"76.0.3809.54","6.0.0-beta.13":"76.0.3809.60","6.0.0-beta.14":"76.0.3809.68","6.0.0-beta.15":"76.0.3809.74","6.0.0-nightly.20190212":"72.0.3626.107","6.0.0-nightly.20190213":"72.0.3626.110","6.0.0-nightly.20190311":"74.0.3724.8","6.0.0":"76.0.3809.88","6.0.1":"76.0.3809.102","6.0.2":"76.0.3809.110","6.0.3":"76.0.3809.126","6.0.4":"76.0.3809.131","6.0.5":"76.0.3809.136","6.0.6":"76.0.3809.138","6.0.7":"76.0.3809.139","6.0.8":"76.0.3809.146","6.0.9":"76.0.3809.146","6.0.10":"76.0.3809.146","6.0.11":"76.0.3809.146","6.0.12":"76.0.3809.146","6.1.0":"76.0.3809.146","6.1.1":"76.0.3809.146","6.1.2":"76.0.3809.146","6.1.3":"76.0.3809.146","6.1.4":"76.0.3809.146","6.1.5":"76.0.3809.146","6.1.6":"76.0.3809.146","6.1.7":"76.0.3809.146","6.1.8":"76.0.3809.146","6.1.9":"76.0.3809.146","6.1.10":"76.0.3809.146","6.1.11":"76.0.3809.146","6.1.12":"76.0.3809.146","7.0.0-beta.1":"78.0.3866.0","7.0.0-beta.2":"78.0.3866.0","7.0.0-beta.3":"78.0.3866.0","7.0.0-beta.4":"78.0.3896.6","7.0.0-beta.5":"78.0.3905.1","7.0.0-beta.6":"78.0.3905.1","7.0.0-beta.7":"78.0.3905.1","7.0.0-nightly.20190521":"76.0.3784.0","7.0.0-nightly.20190529":"76.0.3806.0","7.0.0-nightly.20190530":"76.0.3806.0","7.0.0-nightly.20190531":"76.0.3806.0","7.0.0-nightly.20190602":"76.0.3806.0","7.0.0-nightly.20190603":"76.0.3806.0","7.0.0-nightly.20190604":"77.0.3814.0","7.0.0-nightly.20190605":"77.0.3815.0","7.0.0-nightly.20190606":"77.0.3815.0","7.0.0-nightly.20190607":"77.0.3815.0","7.0.0-nightly.20190608":"77.0.3815.0","7.0.0-nightly.20190609":"77.0.3815.0","7.0.0-nightly.20190611":"77.0.3815.0","7.0.0-nightly.20190612":"77.0.3815.0","7.0.0-nightly.20190613":"77.0.3815.0","7.0.0-nightly.20190615":"77.0.3815.0","7.0.0-nightly.20190616":"77.0.3815.0","7.0.0-nightly.20190618":"77.0.3815.0","7.0.0-nightly.20190619":"77.0.3815.0","7.0.0-nightly.20190622":"77.0.3815.0","7.0.0-nightly.20190623":"77.0.3815.0","7.0.0-nightly.20190624":"77.0.3815.0","7.0.0-nightly.20190627":"77.0.3815.0","7.0.0-nightly.20190629":"77.0.3815.0","7.0.0-nightly.20190630":"77.0.3815.0","7.0.0-nightly.20190701":"77.0.3815.0","7.0.0-nightly.20190702":"77.0.3815.0","7.0.0-nightly.20190704":"77.0.3843.0","7.0.0-nightly.20190705":"77.0.3843.0","7.0.0-nightly.20190719":"77.0.3848.0","7.0.0-nightly.20190720":"77.0.3848.0","7.0.0-nightly.20190721":"77.0.3848.0","7.0.0-nightly.20190726":"77.0.3864.0","7.0.0-nightly.20190727":"78.0.3866.0","7.0.0-nightly.20190728":"78.0.3866.0","7.0.0-nightly.20190729":"78.0.3866.0","7.0.0-nightly.20190730":"78.0.3866.0","7.0.0-nightly.20190731":"78.0.3866.0","7.0.0":"78.0.3905.1","7.0.1":"78.0.3904.92","7.1.0":"78.0.3904.94","7.1.1":"78.0.3904.99","7.1.2":"78.0.3904.113","7.1.3":"78.0.3904.126","7.1.4":"78.0.3904.130","7.1.5":"78.0.3904.130","7.1.6":"78.0.3904.130","7.1.7":"78.0.3904.130","7.1.8":"78.0.3904.130","7.1.9":"78.0.3904.130","7.1.10":"78.0.3904.130","7.1.11":"78.0.3904.130","7.1.12":"78.0.3904.130","7.1.13":"78.0.3904.130","7.1.14":"78.0.3904.130","7.2.0":"78.0.3904.130","7.2.1":"78.0.3904.130","7.2.2":"78.0.3904.130","7.2.3":"78.0.3904.130","7.2.4":"78.0.3904.130","7.3.0":"78.0.3904.130","7.3.1":"78.0.3904.130","7.3.2":"78.0.3904.130","7.3.3":"78.0.3904.130","8.0.0-beta.1":"79.0.3931.0","8.0.0-beta.2":"79.0.3931.0","8.0.0-beta.3":"80.0.3955.0","8.0.0-beta.4":"80.0.3955.0","8.0.0-beta.5":"80.0.3987.14","8.0.0-beta.6":"80.0.3987.51","8.0.0-beta.7":"80.0.3987.59","8.0.0-beta.8":"80.0.3987.75","8.0.0-beta.9":"80.0.3987.75","8.0.0-nightly.20190801":"78.0.3866.0","8.0.0-nightly.20190802":"78.0.3866.0","8.0.0-nightly.20190803":"78.0.3871.0","8.0.0-nightly.20190806":"78.0.3871.0","8.0.0-nightly.20190807":"78.0.3871.0","8.0.0-nightly.20190808":"78.0.3871.0","8.0.0-nightly.20190809":"78.0.3871.0","8.0.0-nightly.20190810":"78.0.3871.0","8.0.0-nightly.20190811":"78.0.3871.0","8.0.0-nightly.20190812":"78.0.3871.0","8.0.0-nightly.20190813":"78.0.3871.0","8.0.0-nightly.20190814":"78.0.3871.0","8.0.0-nightly.20190815":"78.0.3871.0","8.0.0-nightly.20190816":"78.0.3881.0","8.0.0-nightly.20190817":"78.0.3881.0","8.0.0-nightly.20190818":"78.0.3881.0","8.0.0-nightly.20190819":"78.0.3881.0","8.0.0-nightly.20190820":"78.0.3881.0","8.0.0-nightly.20190824":"78.0.3892.0","8.0.0-nightly.20190825":"78.0.3892.0","8.0.0-nightly.20190827":"78.0.3892.0","8.0.0-nightly.20190828":"78.0.3892.0","8.0.0-nightly.20190830":"78.0.3892.0","8.0.0-nightly.20190901":"78.0.3892.0","8.0.0-nightly.20190902":"78.0.3892.0","8.0.0-nightly.20190907":"78.0.3892.0","8.0.0-nightly.20190909":"78.0.3892.0","8.0.0-nightly.20190910":"78.0.3892.0","8.0.0-nightly.20190911":"78.0.3892.0","8.0.0-nightly.20190913":"78.0.3892.0","8.0.0-nightly.20190914":"78.0.3892.0","8.0.0-nightly.20190915":"78.0.3892.0","8.0.0-nightly.20190917":"78.0.3892.0","8.0.0-nightly.20190919":"79.0.3915.0","8.0.0-nightly.20190920":"79.0.3915.0","8.0.0-nightly.20190923":"79.0.3919.0","8.0.0-nightly.20190924":"79.0.3919.0","8.0.0-nightly.20190926":"79.0.3919.0","8.0.0-nightly.20190929":"79.0.3919.0","8.0.0-nightly.20190930":"79.0.3919.0","8.0.0-nightly.20191001":"79.0.3919.0","8.0.0-nightly.20191004":"79.0.3919.0","8.0.0-nightly.20191005":"79.0.3919.0","8.0.0-nightly.20191006":"79.0.3919.0","8.0.0-nightly.20191009":"79.0.3919.0","8.0.0-nightly.20191011":"79.0.3919.0","8.0.0-nightly.20191012":"79.0.3919.0","8.0.0-nightly.20191017":"79.0.3919.0","8.0.0-nightly.20191019":"79.0.3931.0","8.0.0-nightly.20191020":"79.0.3931.0","8.0.0-nightly.20191021":"79.0.3931.0","8.0.0-nightly.20191023":"79.0.3931.0","8.0.0-nightly.20191101":"80.0.3952.0","8.0.0-nightly.20191105":"80.0.3952.0","8.0.0":"80.0.3987.86","8.0.1":"80.0.3987.86","8.0.2":"80.0.3987.86","8.0.3":"80.0.3987.134","8.1.0":"80.0.3987.137","8.1.1":"80.0.3987.141","8.2.0":"80.0.3987.158","8.2.1":"80.0.3987.163","8.2.2":"80.0.3987.163","8.2.3":"80.0.3987.163","8.2.4":"80.0.3987.165","8.2.5":"80.0.3987.165","8.3.0":"80.0.3987.165","8.3.1":"80.0.3987.165","8.3.2":"80.0.3987.165","8.3.3":"80.0.3987.165","8.3.4":"80.0.3987.165","8.4.0":"80.0.3987.165","8.4.1":"80.0.3987.165","8.5.0":"80.0.3987.165","8.5.1":"80.0.3987.165","8.5.2":"80.0.3987.165","8.5.3":"80.0.3987.163","8.5.4":"80.0.3987.163","8.5.5":"80.0.3987.163","9.0.0-beta.1":"82.0.4048.0","9.0.0-beta.2":"82.0.4048.0","9.0.0-beta.3":"82.0.4048.0","9.0.0-beta.4":"82.0.4048.0","9.0.0-beta.5":"82.0.4048.0","9.0.0-beta.6":"82.0.4058.2","9.0.0-beta.7":"82.0.4058.2","9.0.0-beta.9":"82.0.4058.2","9.0.0-beta.10":"82.0.4085.10","9.0.0-beta.12":"82.0.4085.14","9.0.0-beta.13":"82.0.4085.14","9.0.0-beta.14":"82.0.4085.27","9.0.0-beta.15":"83.0.4102.3","9.0.0-beta.16":"83.0.4102.3","9.0.0-beta.17":"83.0.4103.14","9.0.0-beta.18":"83.0.4103.16","9.0.0-beta.19":"83.0.4103.24","9.0.0-beta.20":"83.0.4103.26","9.0.0-beta.21":"83.0.4103.26","9.0.0-beta.22":"83.0.4103.34","9.0.0-beta.23":"83.0.4103.44","9.0.0-beta.24":"83.0.4103.45","9.0.0-nightly.20191121":"80.0.3954.0","9.0.0-nightly.20191122":"80.0.3954.0","9.0.0-nightly.20191123":"80.0.3954.0","9.0.0-nightly.20191124":"80.0.3954.0","9.0.0-nightly.20191129":"80.0.3954.0","9.0.0-nightly.20191130":"80.0.3954.0","9.0.0-nightly.20191201":"80.0.3954.0","9.0.0-nightly.20191202":"80.0.3954.0","9.0.0-nightly.20191203":"80.0.3954.0","9.0.0-nightly.20191204":"80.0.3954.0","9.0.0-nightly.20191210":"80.0.3954.0","9.0.0-nightly.20191220":"81.0.3994.0","9.0.0-nightly.20191221":"81.0.3994.0","9.0.0-nightly.20191222":"81.0.3994.0","9.0.0-nightly.20191223":"81.0.3994.0","9.0.0-nightly.20191224":"81.0.3994.0","9.0.0-nightly.20191225":"81.0.3994.0","9.0.0-nightly.20191226":"81.0.3994.0","9.0.0-nightly.20191228":"81.0.3994.0","9.0.0-nightly.20191229":"81.0.3994.0","9.0.0-nightly.20191230":"81.0.3994.0","9.0.0-nightly.20191231":"81.0.3994.0","9.0.0-nightly.20200101":"81.0.3994.0","9.0.0-nightly.20200103":"81.0.3994.0","9.0.0-nightly.20200104":"81.0.3994.0","9.0.0-nightly.20200105":"81.0.3994.0","9.0.0-nightly.20200106":"81.0.3994.0","9.0.0-nightly.20200108":"81.0.3994.0","9.0.0-nightly.20200109":"81.0.3994.0","9.0.0-nightly.20200110":"81.0.3994.0","9.0.0-nightly.20200111":"81.0.3994.0","9.0.0-nightly.20200113":"81.0.3994.0","9.0.0-nightly.20200115":"81.0.3994.0","9.0.0-nightly.20200116":"81.0.3994.0","9.0.0-nightly.20200117":"81.0.3994.0","9.0.0-nightly.20200119":"81.0.4030.0","9.0.0-nightly.20200121":"81.0.4030.0","9.0.0":"83.0.4103.64","9.0.1":"83.0.4103.94","9.0.2":"83.0.4103.94","9.0.3":"83.0.4103.100","9.0.4":"83.0.4103.104","9.0.5":"83.0.4103.119","9.1.0":"83.0.4103.122","9.1.1":"83.0.4103.122","9.1.2":"83.0.4103.122","9.2.0":"83.0.4103.122","9.2.1":"83.0.4103.122","9.3.0":"83.0.4103.122","9.3.1":"83.0.4103.122","9.3.2":"83.0.4103.122","9.3.3":"83.0.4103.122","9.3.4":"83.0.4103.122","9.3.5":"83.0.4103.122","9.4.0":"83.0.4103.122","9.4.1":"83.0.4103.122","9.4.2":"83.0.4103.122","9.4.3":"83.0.4103.122","9.4.4":"83.0.4103.122","10.0.0-beta.1":"84.0.4129.0","10.0.0-beta.2":"84.0.4129.0","10.0.0-beta.3":"85.0.4161.2","10.0.0-beta.4":"85.0.4161.2","10.0.0-beta.8":"85.0.4181.1","10.0.0-beta.9":"85.0.4181.1","10.0.0-beta.10":"85.0.4183.19","10.0.0-beta.11":"85.0.4183.20","10.0.0-beta.12":"85.0.4183.26","10.0.0-beta.13":"85.0.4183.39","10.0.0-beta.14":"85.0.4183.39","10.0.0-beta.15":"85.0.4183.39","10.0.0-beta.17":"85.0.4183.39","10.0.0-beta.19":"85.0.4183.39","10.0.0-beta.20":"85.0.4183.39","10.0.0-beta.21":"85.0.4183.39","10.0.0-beta.23":"85.0.4183.70","10.0.0-beta.24":"85.0.4183.78","10.0.0-beta.25":"85.0.4183.80","10.0.0-nightly.20200209":"82.0.4050.0","10.0.0-nightly.20200210":"82.0.4050.0","10.0.0-nightly.20200211":"82.0.4050.0","10.0.0-nightly.20200216":"82.0.4050.0","10.0.0-nightly.20200217":"82.0.4050.0","10.0.0-nightly.20200218":"82.0.4050.0","10.0.0-nightly.20200221":"82.0.4050.0","10.0.0-nightly.20200222":"82.0.4050.0","10.0.0-nightly.20200223":"82.0.4050.0","10.0.0-nightly.20200226":"82.0.4050.0","10.0.0-nightly.20200303":"82.0.4050.0","10.0.0-nightly.20200304":"82.0.4076.0","10.0.0-nightly.20200305":"82.0.4076.0","10.0.0-nightly.20200306":"82.0.4076.0","10.0.0-nightly.20200309":"82.0.4076.0","10.0.0-nightly.20200310":"82.0.4076.0","10.0.0-nightly.20200311":"82.0.4083.0","10.0.0-nightly.20200316":"83.0.4086.0","10.0.0-nightly.20200317":"83.0.4087.0","10.0.0-nightly.20200318":"83.0.4087.0","10.0.0-nightly.20200320":"83.0.4087.0","10.0.0-nightly.20200323":"83.0.4087.0","10.0.0-nightly.20200324":"83.0.4087.0","10.0.0-nightly.20200325":"83.0.4087.0","10.0.0-nightly.20200326":"83.0.4087.0","10.0.0-nightly.20200327":"83.0.4087.0","10.0.0-nightly.20200330":"83.0.4087.0","10.0.0-nightly.20200331":"83.0.4087.0","10.0.0-nightly.20200401":"83.0.4087.0","10.0.0-nightly.20200402":"83.0.4087.0","10.0.0-nightly.20200403":"83.0.4087.0","10.0.0-nightly.20200406":"83.0.4087.0","10.0.0-nightly.20200408":"83.0.4095.0","10.0.0-nightly.20200410":"83.0.4095.0","10.0.0-nightly.20200413":"83.0.4095.0","10.0.0-nightly.20200414":"84.0.4114.0","10.0.0-nightly.20200415":"84.0.4115.0","10.0.0-nightly.20200416":"84.0.4115.0","10.0.0-nightly.20200417":"84.0.4115.0","10.0.0-nightly.20200422":"84.0.4121.0","10.0.0-nightly.20200423":"84.0.4121.0","10.0.0-nightly.20200427":"84.0.4125.0","10.0.0-nightly.20200428":"84.0.4125.0","10.0.0-nightly.20200429":"84.0.4125.0","10.0.0-nightly.20200430":"84.0.4125.0","10.0.0-nightly.20200501":"84.0.4129.0","10.0.0-nightly.20200504":"84.0.4129.0","10.0.0-nightly.20200505":"84.0.4129.0","10.0.0-nightly.20200506":"84.0.4129.0","10.0.0-nightly.20200507":"84.0.4129.0","10.0.0-nightly.20200508":"84.0.4129.0","10.0.0-nightly.20200511":"84.0.4129.0","10.0.0-nightly.20200512":"84.0.4129.0","10.0.0-nightly.20200513":"84.0.4129.0","10.0.0-nightly.20200514":"84.0.4129.0","10.0.0-nightly.20200515":"84.0.4129.0","10.0.0-nightly.20200518":"84.0.4129.0","10.0.0-nightly.20200519":"84.0.4129.0","10.0.0-nightly.20200520":"84.0.4129.0","10.0.0-nightly.20200521":"84.0.4129.0","10.0.0":"85.0.4183.84","10.0.1":"85.0.4183.86","10.1.0":"85.0.4183.87","10.1.1":"85.0.4183.93","10.1.2":"85.0.4183.98","10.1.3":"85.0.4183.121","10.1.4":"85.0.4183.121","10.1.5":"85.0.4183.121","10.1.6":"85.0.4183.121","10.1.7":"85.0.4183.121","10.2.0":"85.0.4183.121","10.3.0":"85.0.4183.121","10.3.1":"85.0.4183.121","10.3.2":"85.0.4183.121","10.4.0":"85.0.4183.121","10.4.1":"85.0.4183.121","10.4.2":"85.0.4183.121","10.4.3":"85.0.4183.121","10.4.4":"85.0.4183.121","10.4.5":"85.0.4183.121","10.4.6":"85.0.4183.121","10.4.7":"85.0.4183.121","11.0.0-beta.1":"86.0.4234.0","11.0.0-beta.3":"86.0.4234.0","11.0.0-beta.4":"86.0.4234.0","11.0.0-beta.5":"86.0.4234.0","11.0.0-beta.6":"86.0.4234.0","11.0.0-beta.7":"86.0.4234.0","11.0.0-beta.8":"87.0.4251.1","11.0.0-beta.9":"87.0.4251.1","11.0.0-beta.11":"87.0.4251.1","11.0.0-beta.12":"87.0.4280.11","11.0.0-beta.13":"87.0.4280.11","11.0.0-beta.16":"87.0.4280.27","11.0.0-beta.17":"87.0.4280.27","11.0.0-beta.18":"87.0.4280.27","11.0.0-beta.19":"87.0.4280.27","11.0.0-beta.20":"87.0.4280.40","11.0.0-beta.22":"87.0.4280.47","11.0.0-beta.23":"87.0.4280.47","11.0.0-nightly.20200525":"84.0.4129.0","11.0.0-nightly.20200526":"84.0.4129.0","11.0.0-nightly.20200529":"85.0.4156.0","11.0.0-nightly.20200602":"85.0.4162.0","11.0.0-nightly.20200603":"85.0.4162.0","11.0.0-nightly.20200604":"85.0.4162.0","11.0.0-nightly.20200609":"85.0.4162.0","11.0.0-nightly.20200610":"85.0.4162.0","11.0.0-nightly.20200611":"85.0.4162.0","11.0.0-nightly.20200615":"85.0.4162.0","11.0.0-nightly.20200616":"85.0.4162.0","11.0.0-nightly.20200617":"85.0.4162.0","11.0.0-nightly.20200618":"85.0.4162.0","11.0.0-nightly.20200619":"85.0.4162.0","11.0.0-nightly.20200701":"85.0.4179.0","11.0.0-nightly.20200702":"85.0.4179.0","11.0.0-nightly.20200703":"85.0.4179.0","11.0.0-nightly.20200706":"85.0.4179.0","11.0.0-nightly.20200707":"85.0.4179.0","11.0.0-nightly.20200708":"85.0.4179.0","11.0.0-nightly.20200709":"85.0.4179.0","11.0.0-nightly.20200716":"86.0.4203.0","11.0.0-nightly.20200717":"86.0.4203.0","11.0.0-nightly.20200720":"86.0.4203.0","11.0.0-nightly.20200721":"86.0.4203.0","11.0.0-nightly.20200723":"86.0.4209.0","11.0.0-nightly.20200724":"86.0.4209.0","11.0.0-nightly.20200729":"86.0.4209.0","11.0.0-nightly.20200730":"86.0.4209.0","11.0.0-nightly.20200731":"86.0.4209.0","11.0.0-nightly.20200803":"86.0.4209.0","11.0.0-nightly.20200804":"86.0.4209.0","11.0.0-nightly.20200805":"86.0.4209.0","11.0.0-nightly.20200811":"86.0.4209.0","11.0.0-nightly.20200812":"86.0.4209.0","11.0.0-nightly.20200822":"86.0.4234.0","11.0.0-nightly.20200824":"86.0.4234.0","11.0.0-nightly.20200825":"86.0.4234.0","11.0.0-nightly.20200826":"86.0.4234.0","11.0.0":"87.0.4280.60","11.0.1":"87.0.4280.60","11.0.2":"87.0.4280.67","11.0.3":"87.0.4280.67","11.0.4":"87.0.4280.67","11.0.5":"87.0.4280.88","11.1.0":"87.0.4280.88","11.1.1":"87.0.4280.88","11.2.0":"87.0.4280.141","11.2.1":"87.0.4280.141","11.2.2":"87.0.4280.141","11.2.3":"87.0.4280.141","11.3.0":"87.0.4280.141","11.4.0":"87.0.4280.141","11.4.1":"87.0.4280.141","11.4.2":"87.0.4280.141","11.4.3":"87.0.4280.141","11.4.4":"87.0.4280.141","11.4.5":"87.0.4280.141","11.4.6":"87.0.4280.141","11.4.7":"87.0.4280.141","11.4.8":"87.0.4280.141","11.4.9":"87.0.4280.141","11.4.10":"87.0.4280.141","11.4.11":"87.0.4280.141","11.4.12":"87.0.4280.141","11.5.0":"87.0.4280.141","12.0.0-beta.1":"89.0.4328.0","12.0.0-beta.3":"89.0.4328.0","12.0.0-beta.4":"89.0.4328.0","12.0.0-beta.5":"89.0.4328.0","12.0.0-beta.6":"89.0.4328.0","12.0.0-beta.7":"89.0.4328.0","12.0.0-beta.8":"89.0.4328.0","12.0.0-beta.9":"89.0.4328.0","12.0.0-beta.10":"89.0.4328.0","12.0.0-beta.11":"89.0.4328.0","12.0.0-beta.12":"89.0.4328.0","12.0.0-beta.14":"89.0.4328.0","12.0.0-beta.16":"89.0.4348.1","12.0.0-beta.18":"89.0.4348.1","12.0.0-beta.19":"89.0.4348.1","12.0.0-beta.20":"89.0.4348.1","12.0.0-beta.21":"89.0.4388.2","12.0.0-beta.22":"89.0.4388.2","12.0.0-beta.23":"89.0.4388.2","12.0.0-beta.24":"89.0.4388.2","12.0.0-beta.25":"89.0.4388.2","12.0.0-beta.26":"89.0.4388.2","12.0.0-beta.27":"89.0.4389.23","12.0.0-beta.28":"89.0.4389.23","12.0.0-beta.29":"89.0.4389.23","12.0.0-beta.30":"89.0.4389.58","12.0.0-beta.31":"89.0.4389.58","12.0.0-nightly.20200827":"86.0.4234.0","12.0.0-nightly.20200831":"86.0.4234.0","12.0.0-nightly.20200902":"86.0.4234.0","12.0.0-nightly.20200903":"86.0.4234.0","12.0.0-nightly.20200907":"86.0.4234.0","12.0.0-nightly.20200910":"86.0.4234.0","12.0.0-nightly.20200911":"86.0.4234.0","12.0.0-nightly.20200914":"86.0.4234.0","12.0.0-nightly.20201013":"87.0.4268.0","12.0.0-nightly.20201014":"87.0.4268.0","12.0.0-nightly.20201015":"87.0.4268.0","12.0.0-nightly.20201023":"88.0.4292.0","12.0.0-nightly.20201026":"88.0.4292.0","12.0.0-nightly.20201030":"88.0.4306.0","12.0.0-nightly.20201102":"88.0.4306.0","12.0.0-nightly.20201103":"88.0.4306.0","12.0.0-nightly.20201104":"88.0.4306.0","12.0.0-nightly.20201105":"88.0.4306.0","12.0.0-nightly.20201106":"88.0.4306.0","12.0.0-nightly.20201111":"88.0.4306.0","12.0.0-nightly.20201112":"88.0.4306.0","12.0.0-nightly.20201116":"88.0.4324.0","12.0.0":"89.0.4389.69","12.0.1":"89.0.4389.82","12.0.2":"89.0.4389.90","12.0.3":"89.0.4389.114","12.0.4":"89.0.4389.114","12.0.5":"89.0.4389.128","12.0.6":"89.0.4389.128","12.0.7":"89.0.4389.128","12.0.8":"89.0.4389.128","12.0.9":"89.0.4389.128","12.0.10":"89.0.4389.128","12.0.11":"89.0.4389.128","12.0.12":"89.0.4389.128","12.0.13":"89.0.4389.128","12.0.14":"89.0.4389.128","12.0.15":"89.0.4389.128","12.0.16":"89.0.4389.128","12.0.17":"89.0.4389.128","12.0.18":"89.0.4389.128","12.1.0":"89.0.4389.128","12.1.1":"89.0.4389.128","12.1.2":"89.0.4389.128","12.2.0":"89.0.4389.128","12.2.1":"89.0.4389.128","12.2.2":"89.0.4389.128","12.2.3":"89.0.4389.128","13.0.0-beta.2":"90.0.4402.0","13.0.0-beta.3":"90.0.4402.0","13.0.0-beta.4":"90.0.4415.0","13.0.0-beta.5":"90.0.4415.0","13.0.0-beta.6":"90.0.4415.0","13.0.0-beta.7":"90.0.4415.0","13.0.0-beta.8":"90.0.4415.0","13.0.0-beta.9":"90.0.4415.0","13.0.0-beta.11":"90.0.4415.0","13.0.0-beta.12":"90.0.4415.0","13.0.0-beta.13":"90.0.4415.0","13.0.0-beta.14":"91.0.4448.0","13.0.0-beta.16":"91.0.4448.0","13.0.0-beta.17":"91.0.4448.0","13.0.0-beta.18":"91.0.4448.0","13.0.0-beta.20":"91.0.4448.0","13.0.0-beta.21":"91.0.4472.33","13.0.0-beta.22":"91.0.4472.33","13.0.0-beta.23":"91.0.4472.33","13.0.0-beta.24":"91.0.4472.38","13.0.0-beta.26":"91.0.4472.38","13.0.0-beta.27":"91.0.4472.38","13.0.0-beta.28":"91.0.4472.38","13.0.0-nightly.20201119":"89.0.4328.0","13.0.0-nightly.20201123":"89.0.4328.0","13.0.0-nightly.20201124":"89.0.4328.0","13.0.0-nightly.20201126":"89.0.4328.0","13.0.0-nightly.20201127":"89.0.4328.0","13.0.0-nightly.20201130":"89.0.4328.0","13.0.0-nightly.20201201":"89.0.4328.0","13.0.0-nightly.20201202":"89.0.4328.0","13.0.0-nightly.20201203":"89.0.4328.0","13.0.0-nightly.20201204":"89.0.4328.0","13.0.0-nightly.20201207":"89.0.4328.0","13.0.0-nightly.20201208":"89.0.4328.0","13.0.0-nightly.20201209":"89.0.4328.0","13.0.0-nightly.20201210":"89.0.4328.0","13.0.0-nightly.20201211":"89.0.4328.0","13.0.0-nightly.20201214":"89.0.4328.0","13.0.0-nightly.20201215":"89.0.4349.0","13.0.0-nightly.20201216":"89.0.4349.0","13.0.0-nightly.20201221":"89.0.4349.0","13.0.0-nightly.20201222":"89.0.4349.0","13.0.0-nightly.20201223":"89.0.4359.0","13.0.0-nightly.20210104":"89.0.4359.0","13.0.0-nightly.20210108":"89.0.4359.0","13.0.0-nightly.20210111":"89.0.4359.0","13.0.0-nightly.20210113":"89.0.4386.0","13.0.0-nightly.20210114":"89.0.4386.0","13.0.0-nightly.20210118":"89.0.4386.0","13.0.0-nightly.20210122":"89.0.4386.0","13.0.0-nightly.20210125":"89.0.4386.0","13.0.0-nightly.20210127":"89.0.4389.0","13.0.0-nightly.20210128":"89.0.4389.0","13.0.0-nightly.20210129":"89.0.4389.0","13.0.0-nightly.20210201":"89.0.4389.0","13.0.0-nightly.20210202":"89.0.4389.0","13.0.0-nightly.20210203":"89.0.4389.0","13.0.0-nightly.20210205":"89.0.4389.0","13.0.0-nightly.20210208":"89.0.4389.0","13.0.0-nightly.20210209":"89.0.4389.0","13.0.0-nightly.20210210":"90.0.4402.0","13.0.0-nightly.20210211":"90.0.4402.0","13.0.0-nightly.20210212":"90.0.4402.0","13.0.0-nightly.20210216":"90.0.4402.0","13.0.0-nightly.20210217":"90.0.4402.0","13.0.0-nightly.20210218":"90.0.4402.0","13.0.0-nightly.20210219":"90.0.4402.0","13.0.0-nightly.20210222":"90.0.4402.0","13.0.0-nightly.20210225":"90.0.4402.0","13.0.0-nightly.20210226":"90.0.4402.0","13.0.0-nightly.20210301":"90.0.4402.0","13.0.0-nightly.20210302":"90.0.4402.0","13.0.0-nightly.20210303":"90.0.4402.0","13.0.0":"91.0.4472.69","13.0.1":"91.0.4472.69","13.1.0":"91.0.4472.77","13.1.1":"91.0.4472.77","13.1.2":"91.0.4472.77","13.1.3":"91.0.4472.106","13.1.4":"91.0.4472.106","13.1.5":"91.0.4472.124","13.1.6":"91.0.4472.124","13.1.7":"91.0.4472.124","13.1.8":"91.0.4472.164","13.1.9":"91.0.4472.164","13.2.0":"91.0.4472.164","13.2.1":"91.0.4472.164","13.2.2":"91.0.4472.164","13.2.3":"91.0.4472.164","13.3.0":"91.0.4472.164","13.4.0":"91.0.4472.164","13.5.0":"91.0.4472.164","13.5.1":"91.0.4472.164","13.5.2":"91.0.4472.164","13.6.0":"91.0.4472.164","13.6.1":"91.0.4472.164","13.6.2":"91.0.4472.164","14.0.0-beta.1":"92.0.4511.0","14.0.0-beta.2":"92.0.4511.0","14.0.0-beta.3":"92.0.4511.0","14.0.0-beta.5":"93.0.4536.0","14.0.0-beta.6":"93.0.4536.0","14.0.0-beta.7":"93.0.4536.0","14.0.0-beta.8":"93.0.4536.0","14.0.0-beta.9":"93.0.4539.0","14.0.0-beta.10":"93.0.4539.0","14.0.0-beta.11":"93.0.4557.4","14.0.0-beta.12":"93.0.4557.4","14.0.0-beta.13":"93.0.4566.0","14.0.0-beta.14":"93.0.4566.0","14.0.0-beta.15":"93.0.4566.0","14.0.0-beta.16":"93.0.4566.0","14.0.0-beta.17":"93.0.4566.0","14.0.0-beta.18":"93.0.4577.15","14.0.0-beta.19":"93.0.4577.15","14.0.0-beta.20":"93.0.4577.15","14.0.0-beta.21":"93.0.4577.15","14.0.0-beta.22":"93.0.4577.25","14.0.0-beta.23":"93.0.4577.25","14.0.0-beta.24":"93.0.4577.51","14.0.0-beta.25":"93.0.4577.51","14.0.0-nightly.20210304":"90.0.4402.0","14.0.0-nightly.20210305":"90.0.4415.0","14.0.0-nightly.20210308":"90.0.4415.0","14.0.0-nightly.20210309":"90.0.4415.0","14.0.0-nightly.20210311":"90.0.4415.0","14.0.0-nightly.20210315":"90.0.4415.0","14.0.0-nightly.20210316":"90.0.4415.0","14.0.0-nightly.20210317":"90.0.4415.0","14.0.0-nightly.20210318":"90.0.4415.0","14.0.0-nightly.20210319":"90.0.4415.0","14.0.0-nightly.20210323":"90.0.4415.0","14.0.0-nightly.20210324":"90.0.4415.0","14.0.0-nightly.20210325":"90.0.4415.0","14.0.0-nightly.20210326":"90.0.4415.0","14.0.0-nightly.20210329":"90.0.4415.0","14.0.0-nightly.20210330":"90.0.4415.0","14.0.0-nightly.20210331":"91.0.4448.0","14.0.0-nightly.20210401":"91.0.4448.0","14.0.0-nightly.20210402":"91.0.4448.0","14.0.0-nightly.20210406":"91.0.4448.0","14.0.0-nightly.20210407":"91.0.4448.0","14.0.0-nightly.20210408":"91.0.4448.0","14.0.0-nightly.20210409":"91.0.4448.0","14.0.0-nightly.20210413":"91.0.4448.0","14.0.0-nightly.20210426":"92.0.4475.0","14.0.0-nightly.20210427":"92.0.4475.0","14.0.0-nightly.20210430":"92.0.4488.0","14.0.0-nightly.20210503":"92.0.4488.0","14.0.0-nightly.20210505":"92.0.4496.0","14.0.0-nightly.20210506":"92.0.4498.0","14.0.0-nightly.20210507":"92.0.4499.0","14.0.0-nightly.20210510":"92.0.4499.0","14.0.0-nightly.20210511":"92.0.4499.0","14.0.0-nightly.20210512":"92.0.4499.0","14.0.0-nightly.20210513":"92.0.4499.0","14.0.0-nightly.20210514":"92.0.4505.0","14.0.0-nightly.20210517":"92.0.4505.0","14.0.0-nightly.20210518":"92.0.4505.0","14.0.0-nightly.20210519":"92.0.4505.0","14.0.0-nightly.20210520":"92.0.4511.0","14.0.0-nightly.20210523":"92.0.4511.0","14.0.0-nightly.20210524":"92.0.4511.0","14.0.0":"93.0.4577.58","14.0.1":"93.0.4577.63","14.0.2":"93.0.4577.82","14.1.0":"93.0.4577.82","14.1.1":"93.0.4577.82","14.2.0":"93.0.4577.82","14.2.1":"93.0.4577.82","15.0.0-alpha.1":"93.0.4566.0","15.0.0-alpha.2":"93.0.4566.0","15.0.0-alpha.3":"94.0.4584.0","15.0.0-alpha.4":"94.0.4584.0","15.0.0-alpha.5":"94.0.4584.0","15.0.0-alpha.6":"94.0.4584.0","15.0.0-alpha.7":"94.0.4590.2","15.0.0-alpha.8":"94.0.4590.2","15.0.0-alpha.9":"94.0.4590.2","15.0.0-alpha.10":"94.0.4606.12","15.0.0-beta.1":"94.0.4606.20","15.0.0-beta.2":"94.0.4606.20","15.0.0-beta.3":"94.0.4606.31","15.0.0-beta.4":"94.0.4606.31","15.0.0-beta.5":"94.0.4606.31","15.0.0-beta.6":"94.0.4606.31","15.0.0-beta.7":"94.0.4606.31","15.0.0-nightly.20210527":"92.0.4511.0","15.0.0-nightly.20210528":"92.0.4511.0","15.0.0-nightly.20210531":"92.0.4511.0","15.0.0-nightly.20210601":"92.0.4511.0","15.0.0-nightly.20210602":"92.0.4511.0","15.0.0-nightly.20210603":"93.0.4530.0","15.0.0-nightly.20210604":"93.0.4530.0","15.0.0-nightly.20210608":"93.0.4535.0","15.0.0-nightly.20210609":"93.0.4536.0","15.0.0-nightly.20210610":"93.0.4536.0","15.0.0-nightly.20210611":"93.0.4536.0","15.0.0-nightly.20210614":"93.0.4536.0","15.0.0-nightly.20210615":"93.0.4536.0","15.0.0-nightly.20210616":"93.0.4536.0","15.0.0-nightly.20210617":"93.0.4539.0","15.0.0-nightly.20210618":"93.0.4539.0","15.0.0-nightly.20210621":"93.0.4539.0","15.0.0-nightly.20210622":"93.0.4539.0","15.0.0-nightly.20210623":"93.0.4550.0","15.0.0-nightly.20210624":"93.0.4550.0","15.0.0-nightly.20210625":"93.0.4552.0","15.0.0-nightly.20210628":"93.0.4552.0","15.0.0-nightly.20210629":"93.0.4552.0","15.0.0-nightly.20210630":"93.0.4558.0","15.0.0-nightly.20210701":"93.0.4558.0","15.0.0-nightly.20210702":"93.0.4558.0","15.0.0-nightly.20210705":"93.0.4558.0","15.0.0-nightly.20210706":"93.0.4566.0","15.0.0-nightly.20210707":"93.0.4566.0","15.0.0-nightly.20210708":"93.0.4566.0","15.0.0-nightly.20210709":"93.0.4566.0","15.0.0-nightly.20210712":"93.0.4566.0","15.0.0-nightly.20210713":"93.0.4566.0","15.0.0-nightly.20210714":"93.0.4566.0","15.0.0-nightly.20210715":"93.0.4566.0","15.0.0-nightly.20210716":"93.0.4566.0","15.0.0-nightly.20210719":"93.0.4566.0","15.0.0-nightly.20210720":"93.0.4566.0","15.0.0-nightly.20210721":"93.0.4566.0","15.0.0":"94.0.4606.51","15.1.0":"94.0.4606.61","15.1.1":"94.0.4606.61","15.1.2":"94.0.4606.71","15.2.0":"94.0.4606.81","15.3.0":"94.0.4606.81","15.3.1":"94.0.4606.81","15.3.2":"94.0.4606.81","16.0.0-alpha.1":"95.0.4629.0","16.0.0-alpha.2":"95.0.4629.0","16.0.0-alpha.3":"95.0.4629.0","16.0.0-alpha.4":"95.0.4629.0","16.0.0-alpha.5":"95.0.4629.0","16.0.0-alpha.6":"95.0.4629.0","16.0.0-alpha.7":"95.0.4629.0","16.0.0-alpha.8":"96.0.4647.0","16.0.0-alpha.9":"96.0.4647.0","16.0.0-beta.1":"96.0.4647.0","16.0.0-beta.2":"96.0.4647.0","16.0.0-beta.3":"96.0.4647.0","16.0.0-beta.4":"96.0.4664.18","16.0.0-beta.5":"96.0.4664.18","16.0.0-beta.6":"96.0.4664.27","16.0.0-beta.7":"96.0.4664.27","16.0.0-beta.8":"96.0.4664.35","16.0.0-beta.9":"96.0.4664.35","16.0.0-nightly.20210722":"93.0.4566.0","16.0.0-nightly.20210723":"93.0.4566.0","16.0.0-nightly.20210726":"93.0.4566.0","16.0.0-nightly.20210727":"94.0.4584.0","16.0.0-nightly.20210728":"94.0.4584.0","16.0.0-nightly.20210729":"94.0.4584.0","16.0.0-nightly.20210730":"94.0.4584.0","16.0.0-nightly.20210802":"94.0.4584.0","16.0.0-nightly.20210803":"94.0.4584.0","16.0.0-nightly.20210804":"94.0.4584.0","16.0.0-nightly.20210805":"94.0.4584.0","16.0.0-nightly.20210806":"94.0.4584.0","16.0.0-nightly.20210809":"94.0.4584.0","16.0.0-nightly.20210810":"94.0.4584.0","16.0.0-nightly.20210811":"94.0.4584.0","16.0.0-nightly.20210812":"94.0.4590.2","16.0.0-nightly.20210813":"94.0.4590.2","16.0.0-nightly.20210816":"94.0.4590.2","16.0.0-nightly.20210817":"94.0.4590.2","16.0.0-nightly.20210818":"94.0.4590.2","16.0.0-nightly.20210819":"94.0.4590.2","16.0.0-nightly.20210820":"94.0.4590.2","16.0.0-nightly.20210823":"94.0.4590.2","16.0.0-nightly.20210824":"95.0.4612.5","16.0.0-nightly.20210825":"95.0.4612.5","16.0.0-nightly.20210826":"95.0.4612.5","16.0.0-nightly.20210827":"95.0.4612.5","16.0.0-nightly.20210830":"95.0.4612.5","16.0.0-nightly.20210831":"95.0.4612.5","16.0.0-nightly.20210901":"95.0.4612.5","16.0.0-nightly.20210902":"95.0.4629.0","16.0.0-nightly.20210903":"95.0.4629.0","16.0.0-nightly.20210906":"95.0.4629.0","16.0.0-nightly.20210907":"95.0.4629.0","16.0.0-nightly.20210908":"95.0.4629.0","16.0.0-nightly.20210909":"95.0.4629.0","16.0.0-nightly.20210910":"95.0.4629.0","16.0.0-nightly.20210913":"95.0.4629.0","16.0.0-nightly.20210914":"95.0.4629.0","16.0.0-nightly.20210915":"95.0.4629.0","16.0.0-nightly.20210916":"95.0.4629.0","16.0.0-nightly.20210917":"95.0.4629.0","16.0.0-nightly.20210920":"95.0.4629.0","16.0.0-nightly.20210921":"95.0.4629.0","16.0.0-nightly.20210922":"95.0.4629.0","16.0.0":"96.0.4664.45","16.0.1":"96.0.4664.45","16.0.2":"96.0.4664.55","17.0.0-alpha.1":"96.0.4664.4","17.0.0-alpha.2":"96.0.4664.4","17.0.0-alpha.3":"96.0.4664.4","17.0.0-alpha.4":"98.0.4706.0","17.0.0-nightly.20210923":"95.0.4629.0","17.0.0-nightly.20210924":"95.0.4629.0","17.0.0-nightly.20210927":"95.0.4629.0","17.0.0-nightly.20210928":"95.0.4629.0","17.0.0-nightly.20210929":"95.0.4629.0","17.0.0-nightly.20210930":"95.0.4629.0","17.0.0-nightly.20211001":"95.0.4629.0","17.0.0-nightly.20211004":"95.0.4629.0","17.0.0-nightly.20211005":"95.0.4629.0","17.0.0-nightly.20211006":"96.0.4647.0","17.0.0-nightly.20211007":"96.0.4647.0","17.0.0-nightly.20211008":"96.0.4647.0","17.0.0-nightly.20211011":"96.0.4647.0","17.0.0-nightly.20211012":"96.0.4647.0","17.0.0-nightly.20211013":"96.0.4647.0","17.0.0-nightly.20211014":"96.0.4647.0","17.0.0-nightly.20211015":"96.0.4647.0","17.0.0-nightly.20211018":"96.0.4647.0","17.0.0-nightly.20211019":"96.0.4647.0","17.0.0-nightly.20211020":"96.0.4647.0","17.0.0-nightly.20211021":"96.0.4647.0","17.0.0-nightly.20211022":"96.0.4664.4","17.0.0-nightly.20211025":"96.0.4664.4","17.0.0-nightly.20211026":"96.0.4664.4","17.0.0-nightly.20211027":"96.0.4664.4","17.0.0-nightly.20211028":"96.0.4664.4","17.0.0-nightly.20211029":"96.0.4664.4","17.0.0-nightly.20211101":"96.0.4664.4","17.0.0-nightly.20211102":"96.0.4664.4","17.0.0-nightly.20211103":"96.0.4664.4","17.0.0-nightly.20211104":"96.0.4664.4","17.0.0-nightly.20211105":"96.0.4664.4","17.0.0-nightly.20211108":"96.0.4664.4","17.0.0-nightly.20211109":"96.0.4664.4","17.0.0-nightly.20211110":"96.0.4664.4","17.0.0-nightly.20211111":"96.0.4664.4","17.0.0-nightly.20211112":"96.0.4664.4","17.0.0-nightly.20211115":"96.0.4664.4","17.0.0-nightly.20211116":"96.0.4664.4","17.0.0-nightly.20211117":"96.0.4664.4","18.0.0-nightly.20211118":"96.0.4664.4","18.0.0-nightly.20211119":"96.0.4664.4","18.0.0-nightly.20211122":"96.0.4664.4","18.0.0-nightly.20211123":"96.0.4664.4","18.0.0-nightly.20211124":"98.0.4706.0","18.0.0-nightly.20211125":"98.0.4706.0","18.0.0-nightly.20211126":"98.0.4706.0"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/index.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/index.js
new file mode 100644
index 0000000000..1818281fab
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/index.js
@@ -0,0 +1,36 @@
+var versions = require('./versions');
+var fullVersions = require('./full-versions');
+var chromiumVersions = require('./chromium-versions');
+var fullChromiumVersions = require('./full-chromium-versions');
+
+var electronToChromium = function (query) {
+ var number = getQueryString(query);
+ return number.split('.').length > 2 ? fullVersions[number] : versions[number] || undefined;
+};
+
+var chromiumToElectron = function (query) {
+ var number = getQueryString(query);
+ return number.split('.').length > 2 ? fullChromiumVersions[number] : chromiumVersions[number] || undefined;
+};
+
+var electronToBrowserList = function (query) {
+ var number = getQueryString(query);
+ return versions[number] ? "Chrome >= " + versions[number] : undefined;
+};
+
+var getQueryString = function (query) {
+ var number = query;
+ if (query === 1) { number = "1.0" }
+ if (typeof query === 'number') { number += ''; }
+ return number;
+};
+
+module.exports = {
+ versions: versions,
+ fullVersions: fullVersions,
+ chromiumVersions: chromiumVersions,
+ fullChromiumVersions: fullChromiumVersions,
+ electronToChromium: electronToChromium,
+ electronToBrowserList: electronToBrowserList,
+ chromiumToElectron: chromiumToElectron
+};
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json
new file mode 100644
index 0000000000..e86a943860
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "electron-to-chromium",
+ "version": "1.4.4",
+ "description": "Provides a list of electron-to-chromium version mappings",
+ "main": "index.js",
+ "files": [
+ "versions.js",
+ "full-versions.js",
+ "chromium-versions.js",
+ "full-chromium-versions.js",
+ "versions.json",
+ "full-versions.json",
+ "chromium-versions.json",
+ "full-chromium-versions.json",
+ "LICENSE"
+ ],
+ "scripts": {
+ "build": "node build.js",
+ "update": "node automated-update.js",
+ "test": "nyc ava --verbose",
+ "report": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/kilian/electron-to-chromium/"
+ },
+ "keywords": [
+ "electron",
+ "chrome",
+ "browserlist"
+ ],
+ "author": "Kilian Valkhof",
+ "license": "ISC",
+ "devDependencies": {
+ "ava": "^3.8.2",
+ "codecov": "^3.8.0",
+ "electron-releases": "^3.868.0",
+ "nyc": "^15.1.0",
+ "request": "^2.65.0",
+ "shelljs": "^0.8.4"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js
new file mode 100644
index 0000000000..b8464297fd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js
@@ -0,0 +1,84 @@
+module.exports = {
+ "0.20": "39",
+ "0.21": "41",
+ "0.22": "41",
+ "0.23": "41",
+ "0.24": "41",
+ "0.25": "42",
+ "0.26": "42",
+ "0.27": "43",
+ "0.28": "43",
+ "0.29": "43",
+ "0.30": "44",
+ "0.31": "45",
+ "0.32": "45",
+ "0.33": "45",
+ "0.34": "45",
+ "0.35": "45",
+ "0.36": "47",
+ "0.37": "49",
+ "1.0": "49",
+ "1.1": "50",
+ "1.2": "51",
+ "1.3": "52",
+ "1.4": "53",
+ "1.5": "54",
+ "1.6": "56",
+ "1.7": "58",
+ "1.8": "59",
+ "2.0": "61",
+ "2.1": "61",
+ "3.0": "66",
+ "3.1": "66",
+ "4.0": "69",
+ "4.1": "69",
+ "4.2": "69",
+ "5.0": "73",
+ "6.0": "76",
+ "6.1": "76",
+ "7.0": "78",
+ "7.1": "78",
+ "7.2": "78",
+ "7.3": "78",
+ "8.0": "80",
+ "8.1": "80",
+ "8.2": "80",
+ "8.3": "80",
+ "8.4": "80",
+ "8.5": "80",
+ "9.0": "83",
+ "9.1": "83",
+ "9.2": "83",
+ "9.3": "83",
+ "9.4": "83",
+ "10.0": "85",
+ "10.1": "85",
+ "10.2": "85",
+ "10.3": "85",
+ "10.4": "85",
+ "11.0": "87",
+ "11.1": "87",
+ "11.2": "87",
+ "11.3": "87",
+ "11.4": "87",
+ "11.5": "87",
+ "12.0": "89",
+ "12.1": "89",
+ "12.2": "89",
+ "13.0": "91",
+ "13.1": "91",
+ "13.2": "91",
+ "13.3": "91",
+ "13.4": "91",
+ "13.5": "91",
+ "13.6": "91",
+ "14.0": "93",
+ "14.1": "93",
+ "14.2": "93",
+ "15.0": "94",
+ "15.1": "94",
+ "15.2": "94",
+ "15.3": "94",
+ "16.0": "96",
+ "17.0": "98"
+}; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json
new file mode 100644
index 0000000000..38d2ee3b88
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json
@@ -0,0 +1 @@
+{"0.20":"39","0.21":"41","0.22":"41","0.23":"41","0.24":"41","0.25":"42","0.26":"42","0.27":"43","0.28":"43","0.29":"43","0.30":"44","0.31":"45","0.32":"45","0.33":"45","0.34":"45","0.35":"45","0.36":"47","0.37":"49","1.0":"49","1.1":"50","1.2":"51","1.3":"52","1.4":"53","1.5":"54","1.6":"56","1.7":"58","1.8":"59","2.0":"61","2.1":"61","3.0":"66","3.1":"66","4.0":"69","4.1":"69","4.2":"69","5.0":"73","6.0":"76","6.1":"76","7.0":"78","7.1":"78","7.2":"78","7.3":"78","8.0":"80","8.1":"80","8.2":"80","8.3":"80","8.4":"80","8.5":"80","9.0":"83","9.1":"83","9.2":"83","9.3":"83","9.4":"83","10.0":"85","10.1":"85","10.2":"85","10.3":"85","10.4":"85","11.0":"87","11.1":"87","11.2":"87","11.3":"87","11.4":"87","11.5":"87","12.0":"89","12.1":"89","12.2":"89","13.0":"91","13.1":"91","13.2":"91","13.3":"91","13.4":"91","13.5":"91","13.6":"91","14.0":"93","14.1":"93","14.2":"93","15.0":"94","15.1":"94","15.2":"94","15.3":"94","16.0":"96","17.0":"98"} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/escalade/dist/index.js b/tools/node_modules/eslint/node_modules/escalade/dist/index.js
new file mode 100644
index 0000000000..ad236c4920
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/dist/index.js
@@ -0,0 +1,22 @@
+const { dirname, resolve } = require('path');
+const { readdir, stat } = require('fs');
+const { promisify } = require('util');
+
+const toStats = promisify(stat);
+const toRead = promisify(readdir);
+
+module.exports = async function (start, callback) {
+ let dir = resolve('.', start);
+ let tmp, stats = await toStats(dir);
+
+ if (!stats.isDirectory()) {
+ dir = dirname(dir);
+ }
+
+ while (true) {
+ tmp = await callback(dir, await toRead(dir));
+ if (tmp) return resolve(dir, tmp);
+ dir = dirname(tmp = dir);
+ if (tmp === dir) break;
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/escalade/dist/index.mjs b/tools/node_modules/eslint/node_modules/escalade/dist/index.mjs
new file mode 100644
index 0000000000..bf95be0342
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/dist/index.mjs
@@ -0,0 +1,22 @@
+import { dirname, resolve } from 'path';
+import { readdir, stat } from 'fs';
+import { promisify } from 'util';
+
+const toStats = promisify(stat);
+const toRead = promisify(readdir);
+
+export default async function (start, callback) {
+ let dir = resolve('.', start);
+ let tmp, stats = await toStats(dir);
+
+ if (!stats.isDirectory()) {
+ dir = dirname(dir);
+ }
+
+ while (true) {
+ tmp = await callback(dir, await toRead(dir));
+ if (tmp) return resolve(dir, tmp);
+ dir = dirname(tmp = dir);
+ if (tmp === dir) break;
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/escalade/license b/tools/node_modules/eslint/node_modules/escalade/license
new file mode 100644
index 0000000000..fa6089faba
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/escalade/package.json b/tools/node_modules/eslint/node_modules/escalade/package.json
new file mode 100644
index 0000000000..0d1bfce981
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/package.json
@@ -0,0 +1,61 @@
+{
+ "name": "escalade",
+ "version": "3.1.1",
+ "repository": "lukeed/escalade",
+ "description": "A tiny (183B to 210B) and fast utility to ascend parent directories",
+ "module": "dist/index.mjs",
+ "main": "dist/index.js",
+ "types": "index.d.ts",
+ "license": "MIT",
+ "author": {
+ "name": "Luke Edwards",
+ "email": "luke.edwards05@gmail.com",
+ "url": "https://lukeed.com"
+ },
+ "exports": {
+ ".": [
+ {
+ "import": "./dist/index.mjs",
+ "require": "./dist/index.js"
+ },
+ "./dist/index.js"
+ ],
+ "./sync": [
+ {
+ "import": "./sync/index.mjs",
+ "require": "./sync/index.js"
+ },
+ "./sync/index.js"
+ ]
+ },
+ "files": [
+ "*.d.ts",
+ "dist",
+ "sync"
+ ],
+ "modes": {
+ "sync": "src/sync.js",
+ "default": "src/async.js"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "scripts": {
+ "build": "bundt",
+ "pretest": "npm run build",
+ "test": "uvu -r esm test -i fixtures"
+ },
+ "keywords": [
+ "find",
+ "parent",
+ "parents",
+ "directory",
+ "search",
+ "walk"
+ ],
+ "devDependencies": {
+ "bundt": "1.1.1",
+ "esm": "3.2.25",
+ "uvu": "0.3.3"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/escalade/readme.md b/tools/node_modules/eslint/node_modules/escalade/readme.md
new file mode 100644
index 0000000000..4e2195c1bb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/readme.md
@@ -0,0 +1,211 @@
+# escalade [![CI](https://github.com/lukeed/escalade/workflows/CI/badge.svg)](https://github.com/lukeed/escalade/actions) [![codecov](https://badgen.now.sh/codecov/c/github/lukeed/escalade)](https://codecov.io/gh/lukeed/escalade)
+
+> A tiny (183B to 210B) and [fast](#benchmarks) utility to ascend parent directories
+
+With [escalade](https://en.wikipedia.org/wiki/Escalade), you can scale parent directories until you've found what you're looking for.<br>Given an input file or directory, `escalade` will continue executing your callback function until either:
+
+1) the callback returns a truthy value
+2) `escalade` has reached the system root directory (eg, `/`)
+
+> **Important:**<br>Please note that `escalade` only deals with direct ancestry – it will not dive into parents' sibling directories.
+
+---
+
+**Notice:** As of v3.1.0, `escalade` now includes [Deno support](http://deno.land/x/escalade)! Please see [Deno Usage](#deno) below.
+
+---
+
+## Install
+
+```
+$ npm install --save escalade
+```
+
+
+## Modes
+
+There are two "versions" of `escalade` available:
+
+#### "async"
+> **Node.js:** >= 8.x<br>
+> **Size (gzip):** 210 bytes<br>
+> **Availability:** [CommonJS](https://unpkg.com/escalade/dist/index.js), [ES Module](https://unpkg.com/escalade/dist/index.mjs)
+
+This is the primary/default mode. It makes use of `async`/`await` and [`util.promisify`](https://nodejs.org/api/util.html#util_util_promisify_original).
+
+#### "sync"
+> **Node.js:** >= 6.x<br>
+> **Size (gzip):** 183 bytes<br>
+> **Availability:** [CommonJS](https://unpkg.com/escalade/sync/index.js), [ES Module](https://unpkg.com/escalade/sync/index.mjs)
+
+This is the opt-in mode, ideal for scenarios where `async` usage cannot be supported.
+
+
+## Usage
+
+***Example Structure***
+
+```
+/Users/lukeed
+ └── oss
+ ├── license
+ └── escalade
+ ├── package.json
+ └── test
+ └── fixtures
+ ├── index.js
+ └── foobar
+ └── demo.js
+```
+
+***Example Usage***
+
+```js
+//~> demo.js
+import { join } from 'path';
+import escalade from 'escalade';
+
+const input = join(__dirname, 'demo.js');
+// or: const input = __dirname;
+
+const pkg = await escalade(input, (dir, names) => {
+ console.log('~> dir:', dir);
+ console.log('~> names:', names);
+ console.log('---');
+
+ if (names.includes('package.json')) {
+ // will be resolved into absolute
+ return 'package.json';
+ }
+});
+
+//~> dir: /Users/lukeed/oss/escalade/test/fixtures/foobar
+//~> names: ['demo.js']
+//---
+//~> dir: /Users/lukeed/oss/escalade/test/fixtures
+//~> names: ['index.js', 'foobar']
+//---
+//~> dir: /Users/lukeed/oss/escalade/test
+//~> names: ['fixtures']
+//---
+//~> dir: /Users/lukeed/oss/escalade
+//~> names: ['package.json', 'test']
+//---
+
+console.log(pkg);
+//=> /Users/lukeed/oss/escalade/package.json
+
+// Now search for "missing123.txt"
+// (Assume it doesn't exist anywhere!)
+const missing = await escalade(input, (dir, names) => {
+ console.log('~> dir:', dir);
+ return names.includes('missing123.txt') && 'missing123.txt';
+});
+
+//~> dir: /Users/lukeed/oss/escalade/test/fixtures/foobar
+//~> dir: /Users/lukeed/oss/escalade/test/fixtures
+//~> dir: /Users/lukeed/oss/escalade/test
+//~> dir: /Users/lukeed/oss/escalade
+//~> dir: /Users/lukeed/oss
+//~> dir: /Users/lukeed
+//~> dir: /Users
+//~> dir: /
+
+console.log(missing);
+//=> undefined
+```
+
+> **Note:** To run the above example with "sync" mode, import from `escalade/sync` and remove the `await` keyword.
+
+
+## API
+
+### escalade(input, callback)
+Returns: `string|void` or `Promise<string|void>`
+
+When your `callback` locates a file, `escalade` will resolve/return with an absolute path.<br>
+If your `callback` was never satisfied, then `escalade` will resolve/return with nothing (undefined).
+
+> **Important:**<br>The `sync` and `async` versions share the same API.<br>The **only** difference is that `sync` is not Promise-based.
+
+#### input
+Type: `string`
+
+The path from which to start ascending.
+
+This may be a file or a directory path.<br>However, when `input` is a file, `escalade` will begin with its parent directory.
+
+> **Important:** Unless given an absolute path, `input` will be resolved from `process.cwd()` location.
+
+#### callback
+Type: `Function`
+
+The callback to execute for each ancestry level. It always is given two arguments:
+
+1) `dir` - an absolute path of the current parent directory
+2) `names` - a list (`string[]`) of contents _relative to_ the `dir` parent
+
+> **Note:** The `names` list can contain names of files _and_ directories.
+
+When your callback returns a _falsey_ value, then `escalade` will continue with `dir`'s parent directory, re-invoking your callback with new argument values.
+
+When your callback returns a string, then `escalade` stops iteration immediately.<br>
+If the string is an absolute path, then it's left as is. Otherwise, the string is resolved into an absolute path _from_ the `dir` that housed the satisfying condition.
+
+> **Important:** Your `callback` can be a `Promise/AsyncFunction` when using the "async" version of `escalade`.
+
+## Benchmarks
+
+> Running on Node.js v10.13.0
+
+```
+# Load Time
+ find-up 3.891ms
+ escalade 0.485ms
+ escalade/sync 0.309ms
+
+# Levels: 6 (target = "foo.txt"):
+ find-up x 24,856 ops/sec ±6.46% (55 runs sampled)
+ escalade x 73,084 ops/sec ±4.23% (73 runs sampled)
+ find-up.sync x 3,663 ops/sec ±1.12% (83 runs sampled)
+ escalade/sync x 9,360 ops/sec ±0.62% (88 runs sampled)
+
+# Levels: 12 (target = "package.json"):
+ find-up x 29,300 ops/sec ±10.68% (70 runs sampled)
+ escalade x 73,685 ops/sec ± 5.66% (66 runs sampled)
+ find-up.sync x 1,707 ops/sec ± 0.58% (91 runs sampled)
+ escalade/sync x 4,667 ops/sec ± 0.68% (94 runs sampled)
+
+# Levels: 18 (target = "missing123.txt"):
+ find-up x 21,818 ops/sec ±17.37% (14 runs sampled)
+ escalade x 67,101 ops/sec ±21.60% (20 runs sampled)
+ find-up.sync x 1,037 ops/sec ± 2.86% (88 runs sampled)
+ escalade/sync x 1,248 ops/sec ± 0.50% (93 runs sampled)
+```
+
+## Deno
+
+As of v3.1.0, `escalade` is available on the Deno registry.
+
+Please note that the [API](#api) is identical and that there are still [two modes](#modes) from which to choose:
+
+```ts
+// Choose "async" mode
+import escalade from 'https://deno.land/escalade/async.ts';
+
+// Choose "sync" mode
+import escalade from 'https://deno.land/escalade/sync.ts';
+```
+
+> **Important:** The `allow-read` permission is required!
+
+
+## Related
+
+- [premove](https://github.com/lukeed/premove) - A tiny (247B) utility to remove items recursively
+- [totalist](https://github.com/lukeed/totalist) - A tiny (195B to 224B) utility to recursively list all (total) files in a directory
+- [mk-dirs](https://github.com/lukeed/mk-dirs) - A tiny (420B) utility to make a directory and its parents, recursively
+
+## License
+
+MIT © [Luke Edwards](https://lukeed.com)
diff --git a/tools/node_modules/eslint/node_modules/escalade/sync/index.js b/tools/node_modules/eslint/node_modules/escalade/sync/index.js
new file mode 100644
index 0000000000..902cc46cd9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/sync/index.js
@@ -0,0 +1,18 @@
+const { dirname, resolve } = require('path');
+const { readdirSync, statSync } = require('fs');
+
+module.exports = function (start, callback) {
+ let dir = resolve('.', start);
+ let tmp, stats = statSync(dir);
+
+ if (!stats.isDirectory()) {
+ dir = dirname(dir);
+ }
+
+ while (true) {
+ tmp = callback(dir, readdirSync(dir));
+ if (tmp) return resolve(dir, tmp);
+ dir = dirname(tmp = dir);
+ if (tmp === dir) break;
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/escalade/sync/index.mjs b/tools/node_modules/eslint/node_modules/escalade/sync/index.mjs
new file mode 100644
index 0000000000..3cdc5bd1fe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/escalade/sync/index.mjs
@@ -0,0 +1,18 @@
+import { dirname, resolve } from 'path';
+import { readdirSync, statSync } from 'fs';
+
+export default function (start, callback) {
+ let dir = resolve('.', start);
+ let tmp, stats = statSync(dir);
+
+ if (!stats.isDirectory()) {
+ dir = dirname(dir);
+ }
+
+ while (true) {
+ tmp = callback(dir, readdirSync(dir));
+ if (tmp) return resolve(dir, tmp);
+ dir = dirname(tmp = dir);
+ if (tmp === dir) break;
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/eslint b/tools/node_modules/eslint/node_modules/eslint
new file mode 120000
index 0000000000..a96aa0ea9d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint
@@ -0,0 +1 @@
+.. \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/LICENSE b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/LICENSE
new file mode 100644
index 0000000000..cf5a5995af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright JS Foundation and other contributors, https://js.foundation
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md
new file mode 100644
index 0000000000..fd8767b753
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/README.md
@@ -0,0 +1,362 @@
+# eslint-plugin-markdown
+
+[![npm Version](https://img.shields.io/npm/v/eslint-plugin-markdown.svg)](https://www.npmjs.com/package/eslint-plugin-markdown)
+[![Build Status](https://img.shields.io/github/workflow/status/eslint/eslint-plugin-markdown/CI/main.svg)](https://github.com/eslint/eslint-plugin-markdown/actions)
+
+Lint JS, JSX, TypeScript, and more inside Markdown.
+
+<img
+ src="screenshot.png"
+ height="142"
+ width="432"
+ alt="A JS code snippet in a Markdown editor has red squiggly underlines. A tooltip explains the problem."
+/>
+
+## Usage
+
+### Installing
+
+Install the plugin alongside ESLint v6 or greater:
+
+```sh
+npm install --save-dev eslint eslint-plugin-markdown
+```
+
+### Configuring
+
+Extending the `plugin:markdown/recommended` config will enable the Markdown processor on all `.md` files:
+
+```js
+// .eslintrc.js
+module.exports = {
+ extends: "plugin:markdown/recommended"
+};
+```
+
+#### Advanced Configuration
+
+Add the plugin to your `.eslintrc` and use the `processor` option in an `overrides` entry to enable the plugin's `markdown/markdown` processor on Markdown files.
+Each fenced code block inside a Markdown document has a virtual filename appended to the Markdown file's path.
+The virtual filename's extension will match the fenced code block's syntax tag, so for example, <code>```js</code> code blocks in <code>README.md</code> would match <code>README.md/*.js</code>.
+[`overrides` glob patterns](https://eslint.org/docs/user-guide/configuring#configuration-based-on-glob-patterns) for these virtual filenames can customize configuration for code blocks without affecting regular code.
+For more information on configuring processors, refer to the [ESLint documentation](https://eslint.org/docs/user-guide/configuring#specifying-processor).
+
+```js
+// .eslintrc.js
+module.exports = {
+ // 1. Add the plugin.
+ plugins: ["markdown"],
+ overrides: [
+ {
+ // 2. Enable the Markdown processor for all .md files.
+ files: ["**/*.md"],
+ processor: "markdown/markdown"
+ },
+ {
+ // 3. Optionally, customize the configuration ESLint uses for ```js
+ // fenced code blocks inside .md files.
+ files: ["**/*.md/*.js"],
+ // ...
+ rules: {
+ // ...
+ }
+ }
+ ]
+};
+```
+
+#### Frequently-Disabled Rules
+
+Some rules that catch mistakes in regular code are less helpful in documentation.
+For example, `no-undef` would flag variables that are declared outside of a code snippet because they aren't relevant to the example.
+The `plugin:markdown/recommended` config disables these rules in Markdown files:
+
+- [`no-undef`](https://eslint.org/docs/rules/no-undef)
+- [`no-unused-expressions`](https://eslint.org/docs/rules/no-unused-expressions)
+- [`no-unused-vars`](https://eslint.org/docs/rules/no-unused-vars)
+- [`padded-blocks`](https://eslint.org/docs/rules/padded-blocks)
+
+Use [`overrides` glob patterns](https://eslint.org/docs/user-guide/configuring#configuration-based-on-glob-patterns) to disable more rules just for Markdown code blocks:
+
+```js
+module.exports = {
+ // ...
+ overrides: [
+ // ...
+ {
+ // 1. Target ```js code blocks in .md files.
+ files: ["**/*.md/*.js"],
+ rules: {
+ // 2. Disable other rules.
+ "no-console": "off",
+ "import/no-unresolved": "off"
+ }
+ }
+ ]
+};
+```
+
+#### Strict Mode
+
+`"use strict"` directives in every code block would be annoying.
+The `plugin:markdown/recommended` config enables the [`impliedStrict` parser option](https://eslint.org/docs/user-guide/configuring#specifying-parser-options) and disables the [`strict` rule](https://eslint.org/docs/rules/strict) in Markdown files.
+This opts into strict mode parsing without repeated `"use strict"` directives.
+
+#### Unsatisfiable Rules
+
+Markdown code blocks are not real files, so ESLint's file-format rules do not apply.
+The `plugin:markdown/recommended` config disables these rules in Markdown files:
+
+- [`eol-last`](https://eslint.org/docs/rules/eol-last): The Markdown parser trims trailing newlines from code blocks.
+- [`unicode-bom`](https://eslint.org/docs/rules/unicode-bom): Markdown code blocks do not have Unicode Byte Order Marks.
+
+#### Migrating from `eslint-plugin-markdown` v1
+
+`eslint-plugin-markdown` v1 used an older version of ESLint's processor API.
+The Markdown processor automatically ran on `.md`, `.mkdn`, `.mdown`, and `.markdown` files, and it only extracted fenced code blocks marked with `js`, `javascript`, `jsx`, or `node` syntax.
+Configuration specifically for fenced code blocks went inside an `overrides` entry with a `files` pattern matching the containing Markdown document's filename that applied to all fenced code blocks inside the file.
+
+```js
+// .eslintrc.js for eslint-plugin-markdown v1
+module.exports = {
+ plugins: ["markdown"],
+ overrides: [
+ {
+ files: ["**/*.md"],
+ // In v1, configuration for fenced code blocks went inside an
+ // `overrides` entry with a .md pattern, for example:
+ parserOptions: {
+ ecmaFeatures: {
+ impliedStrict: true
+ }
+ },
+ rules: {
+ "no-console": "off"
+ }
+ }
+ ]
+};
+```
+
+[RFC3](https://github.com/eslint/rfcs/blob/master/designs/2018-processors-improvements/README.md) designed a new processor API to remove these limitations, and the new API was [implemented](https://github.com/eslint/eslint/pull/11552) as part of ESLint v6.
+`eslint-plugin-markdown` v2 uses this new API.
+
+```bash
+$ npm install --save-dev eslint@latest eslint-plugin-markdown@latest
+```
+
+All of the Markdown file extensions that were previously hard-coded are now fully configurable in `.eslintrc.js`.
+Use the new `processor` option to apply the `markdown/markdown` processor on any Markdown documents matching a `files` pattern.
+Each fenced code block inside a Markdown document has a virtual filename appended to the Markdown file's path.
+The virtual filename's extension will match the fenced code block's syntax tag, so for example, <code>```js</code> code blocks in <code>README.md</code> would match <code>README.md/*.js</code>.
+
+```js
+// eslintrc.js for eslint-plugin-markdown v2
+module.exports = {
+ plugins: ["markdown"],
+ overrides: [
+ {
+ // In v2, explicitly apply eslint-plugin-markdown's `markdown`
+ // processor on any Markdown files you want to lint.
+ files: ["**/*.md"],
+ processor: "markdown/markdown"
+ },
+ {
+ // In v2, configuration for fenced code blocks is separate from the
+ // containing Markdown file. Each code block has a virtual filename
+ // appended to the Markdown file's path.
+ files: ["**/*.md/*.js"],
+ // Configuration for fenced code blocks goes with the override for
+ // the code block's virtual filename, for example:
+ parserOptions: {
+ ecmaFeatures: {
+ impliedStrict: true
+ }
+ },
+ rules: {
+ "no-console": "off"
+ }
+ }
+ ]
+};
+```
+
+If you need to precisely mimic the behavior of v1 with the hard-coded Markdown extensions and fenced code block syntaxes, you can use those as glob patterns in `overrides[].files`:
+
+```js
+// eslintrc.js for v2 mimicking v1 behavior
+module.exports = {
+ plugins: ["markdown"],
+ overrides: [
+ {
+ files: ["**/*.{md,mkdn,mdown,markdown}"],
+ processor: "markdown/markdown"
+ },
+ {
+ files: ["**/*.{md,mkdn,mdown,markdown}/*.{js,javascript,jsx,node}"]
+ // ...
+ }
+ ]
+};
+```
+
+### Running
+
+#### ESLint v7
+
+You can run ESLint as usual and do not need to use the `--ext` option.
+ESLint v7 [automatically lints file extensions specified in `overrides[].files` patterns in config files](https://github.com/eslint/rfcs/blob/0253e3a95511c65d622eaa387eb73f824249b467/designs/2019-additional-lint-targets/README.md).
+
+#### ESLint v6
+
+Use the [`--ext` option](https://eslint.org/docs/user-guide/command-line-interface#ext) to include `.js` and `.md` extensions in ESLint's file search:
+
+```sh
+eslint --ext js,md .
+```
+
+### Autofixing
+
+With this plugin, [ESLint's `--fix` option](https://eslint.org/docs/user-guide/command-line-interface#fixing-problems) can automatically fix some issues in your Markdown fenced code blocks.
+To enable this, pass the `--fix` flag when you run ESLint:
+
+```bash
+eslint --fix .
+```
+
+## What Gets Linted?
+
+With this plugin, ESLint will lint [fenced code blocks](https://help.github.com/articles/github-flavored-markdown/#fenced-code-blocks) in your Markdown documents:
+
+````markdown
+```js
+// This gets linted
+var answer = 6 * 7;
+console.log(answer);
+```
+
+Here is some regular Markdown text that will be ignored.
+
+```js
+// This also gets linted
+
+/* eslint quotes: [2, "double"] */
+
+function hello() {
+ console.log("Hello, world!");
+}
+hello();
+```
+
+```jsx
+// This can be linted too if you add `.jsx` files to `overrides` in ESLint v7
+// or pass `--ext jsx` in ESLint v6.
+var div = <div className="jsx"></div>;
+```
+````
+
+Blocks that don't specify a syntax are ignored:
+
+````markdown
+```
+This is plain text and doesn't get linted.
+```
+````
+
+Unless a fenced code block's syntax appears as a file extension in `overrides[].files` in ESLint v7, it will be ignored.
+If using ESLint v6, you must also include the extension with the `--ext` option.
+
+````markdown
+```python
+print("This doesn't get linted either.")
+```
+````
+
+## Configuration Comments
+
+The processor will convert HTML comments immediately preceding a code block into JavaScript block comments and insert them at the beginning of the source code that it passes to ESLint.
+This permits configuring ESLint via configuration comments while keeping the configuration comments themselves hidden when the markdown is rendered.
+Comment bodies are passed through unmodified, so the plugin supports any [configuration comments](http://eslint.org/docs/user-guide/configuring) supported by ESLint itself.
+
+This example enables the `browser` environment, disables the `no-alert` rule, and configures the `quotes` rule to prefer single quotes:
+
+````markdown
+<!-- eslint-env browser -->
+<!-- eslint-disable no-alert -->
+<!-- eslint quotes: ["error", "single"] -->
+
+```js
+alert('Hello, world!');
+```
+````
+
+Each code block in a file is linted separately, so configuration comments apply only to the code block that immediately follows.
+
+````markdown
+Assuming `no-alert` is enabled in `.eslintrc`, the first code block will have no error from `no-alert`:
+
+<!-- eslint-env browser -->
+<!-- eslint-disable no-alert -->
+
+```js
+alert("Hello, world!");
+```
+
+But the next code block will have an error from `no-alert`:
+
+<!-- eslint-env browser -->
+
+```js
+alert("Hello, world!");
+```
+````
+
+### Skipping Blocks
+
+Sometimes it can be useful to have code blocks marked with `js` even though they don't contain valid JavaScript syntax, such as commented JSON blobs that need `js` syntax highlighting.
+Standard `eslint-disable` comments only silence rule reporting, but ESLint still reports any syntax errors it finds.
+In cases where a code block should not even be parsed, insert a non-standard `<!-- eslint-skip -->` comment before the block, and this plugin will hide the following block from ESLint.
+Neither rule nor syntax errors will be reported.
+
+````markdown
+There are comments in this JSON, so we use `js` syntax for better
+highlighting. Skip the block to prevent warnings about invalid syntax.
+
+<!-- eslint-skip -->
+
+```js
+{
+ // This code block is hidden from ESLint.
+ "hello": "world"
+}
+```
+
+```js
+console.log("This code block is linted normally.");
+```
+````
+
+## Editor Integrations
+
+### VSCode
+
+[`vscode-eslint`](https://github.com/microsoft/vscode-eslint) has built-in support for the Markdown processor.
+
+### Atom
+
+The [`linter-eslint`](https://atom.io/packages/linter-eslint) package allows for linting within the [Atom IDE](https://atom.io/).
+
+In order to see `eslint-plugin-markdown` work its magic within Markdown code blocks in your Atom editor, you can go to `linter-eslint`'s settings and within "List of scopes to run ESLint on...", add the cursor scope "source.gfm".
+
+However, this reports a problem when viewing Markdown which does not have configuration, so you may wish to use the cursor scope "source.embedded.js", but note that `eslint-plugin-markdown` configuration comments and skip directives won't work in this context.
+
+## Contributing
+
+```sh
+$ git clone https://github.com/eslint/eslint-plugin-markdown.git
+$ cd eslint-plugin-markdown
+$ npm install
+$ npm test
+```
+
+This project follows the [ESLint contribution guidelines](http://eslint.org/docs/developer-guide/contributing/).
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/index.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/index.js
new file mode 100644
index 0000000000..1638f11ee3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/index.js
@@ -0,0 +1,8 @@
+/**
+ * @fileoverview Exports the processor.
+ * @author Brandon Mills
+ */
+
+"use strict";
+
+module.exports = require("./lib");
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js
new file mode 100644
index 0000000000..d66a7ddda6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/index.js
@@ -0,0 +1,60 @@
+/**
+ * @fileoverview Enables the processor for Markdown file extensions.
+ * @author Brandon Mills
+ */
+
+"use strict";
+
+const processor = require("./processor");
+
+module.exports = {
+ configs: {
+ recommended: {
+ plugins: ["markdown"],
+ overrides: [
+ {
+ files: ["*.md"],
+ processor: "markdown/markdown"
+ },
+ {
+ files: ["**/*.md/**"],
+ parserOptions: {
+ ecmaFeatures: {
+
+ // Adding a "use strict" directive at the top of
+ // every code block is tedious and distracting, so
+ // opt into strict mode parsing without the
+ // directive.
+ impliedStrict: true
+ }
+ },
+ rules: {
+
+ // The Markdown parser automatically trims trailing
+ // newlines from code blocks.
+ "eol-last": "off",
+
+ // In code snippets and examples, these rules are often
+ // counterproductive to clarity and brevity.
+ "no-undef": "off",
+ "no-unused-expressions": "off",
+ "no-unused-vars": "off",
+ "padded-blocks": "off",
+
+ // Adding a "use strict" directive at the top of every
+ // code block is tedious and distracting. The config
+ // opts into strict mode parsing without the directive.
+ strict: "off",
+
+ // The processor will not receive a Unicode Byte Order
+ // Mark from the Markdown parser.
+ "unicode-bom": "off"
+ }
+ }
+ ]
+ }
+ },
+ processors: {
+ markdown: processor
+ }
+};
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js
new file mode 100644
index 0000000000..63aa915906
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/lib/processor.js
@@ -0,0 +1,405 @@
+/**
+ * @fileoverview Processes Markdown files for consumption by ESLint.
+ * @author Brandon Mills
+ */
+
+/**
+ * @typedef {import('eslint/lib/shared/types').LintMessage} Message
+ *
+ * @typedef {Object} ASTNode
+ * @property {string} type
+ * @property {string} [lang]
+ *
+ * @typedef {Object} RangeMap
+ * @property {number} indent Number of code block indent characters trimmed from
+ * the beginning of the line during extraction.
+ * @property {number} js Offset from the start of the code block's range in the
+ * extracted JS.
+ * @property {number} md Offset from the start of the code block's range in the
+ * original Markdown.
+ *
+ * @typedef {Object} BlockBase
+ * @property {string} baseIndentText
+ * @property {string[]} comments
+ * @property {RangeMap[]} rangeMap
+ *
+ * @typedef {ASTNode & BlockBase} Block
+ */
+
+"use strict";
+
+const parse = require("mdast-util-from-markdown");
+
+const UNSATISFIABLE_RULES = [
+ "eol-last", // The Markdown parser strips trailing newlines in code fences
+ "unicode-bom" // Code blocks will begin in the middle of Markdown files
+];
+const SUPPORTS_AUTOFIX = true;
+
+/**
+ * @type {Map<string, Block[]>}
+ */
+const blocksCache = new Map();
+
+/**
+ * Performs a depth-first traversal of the Markdown AST.
+ * @param {ASTNode} node A Markdown AST node.
+ * @param {{[key: string]: (node: ASTNode) => void}} callbacks A map of node types to callbacks.
+ * @returns {void}
+ */
+function traverse(node, callbacks) {
+ if (callbacks[node.type]) {
+ callbacks[node.type](node);
+ } else {
+ callbacks["*"]();
+ }
+
+ if (typeof node.children !== "undefined") {
+ for (let i = 0; i < node.children.length; i++) {
+ traverse(node.children[i], callbacks);
+ }
+ }
+}
+
+/**
+ * Extracts `eslint-*` or `global` comments from HTML comments if present.
+ * @param {string} html The text content of an HTML AST node.
+ * @returns {string} The comment's text without the opening and closing tags or
+ * an empty string if the text is not an ESLint HTML comment.
+ */
+function getComment(html) {
+ const commentStart = "<!--";
+ const commentEnd = "-->";
+ const regex = /^(eslint\b|global\s)/u;
+
+ if (
+ html.slice(0, commentStart.length) !== commentStart ||
+ html.slice(-commentEnd.length) !== commentEnd
+ ) {
+ return "";
+ }
+
+ const comment = html.slice(commentStart.length, -commentEnd.length);
+
+ if (!regex.test(comment.trim())) {
+ return "";
+ }
+
+ return comment;
+}
+
+// Before a code block, blockquote characters (`>`) are also considered
+// "whitespace".
+const leadingWhitespaceRegex = /^[>\s]*/u;
+
+/**
+ * Gets the offset for the first column of the node's first line in the
+ * original source text.
+ * @param {ASTNode} node A Markdown code block AST node.
+ * @returns {number} The offset for the first column of the node's first line.
+ */
+function getBeginningOfLineOffset(node) {
+ return node.position.start.offset - node.position.start.column + 1;
+}
+
+/**
+ * Gets the leading text, typically whitespace with possible blockquote chars,
+ * used to indent a code block.
+ * @param {string} text The text of the file.
+ * @param {ASTNode} node A Markdown code block AST node.
+ * @returns {string} The text from the start of the first line to the opening
+ * fence of the code block.
+ */
+function getIndentText(text, node) {
+ return leadingWhitespaceRegex.exec(
+ text.slice(getBeginningOfLineOffset(node))
+ )[0];
+}
+
+/**
+ * When applying fixes, the postprocess step needs to know how to map fix ranges
+ * from their location in the linted JS to the original offset in the Markdown.
+ * Configuration comments and indentation trimming both complicate this process.
+ *
+ * Configuration comments appear in the linted JS but not in the Markdown code
+ * block. Fixes to configuration comments would cause undefined behavior and
+ * should be ignored during postprocessing. Fixes to actual code after
+ * configuration comments need to be mapped back to the code block after
+ * removing any offset due to configuration comments.
+ *
+ * Fenced code blocks can be indented by up to three spaces at the opening
+ * fence. Inside of a list, for example, this indent can be in addition to the
+ * indent already required for list item children. Leading whitespace inside
+ * indented code blocks is trimmed up to the level of the opening fence and does
+ * not appear in the linted code. Further, lines can have less leading
+ * whitespace than the opening fence, so not all lines are guaranteed to have
+ * the same column offset as the opening fence.
+ *
+ * The source code of a non-configuration-comment line in the linted JS is a
+ * suffix of the corresponding line in the Markdown code block. There are no
+ * differences within the line, so the mapping need only provide the offset
+ * delta at the beginning of each line.
+ * @param {string} text The text of the file.
+ * @param {ASTNode} node A Markdown code block AST node.
+ * @param {string[]} comments List of configuration comment strings that will be
+ * inserted at the beginning of the code block.
+ * @returns {RangeMap[]} A list of offset-based adjustments, where lookups are
+ * done based on the `js` key, which represents the range in the linted JS,
+ * and the `md` key is the offset delta that, when added to the JS range,
+ * returns the corresponding location in the original Markdown source.
+ */
+function getBlockRangeMap(text, node, comments) {
+
+ /*
+ * The parser sets the fenced code block's start offset to wherever content
+ * should normally begin (typically the first column of the line, but more
+ * inside a list item, for example). The code block's opening fence may be
+ * further indented by up to three characters. If the code block has
+ * additional indenting, the opening fence's first backtick may be up to
+ * three whitespace characters after the start offset.
+ */
+ const startOffset = getBeginningOfLineOffset(node);
+
+ /*
+ * Extract the Markdown source to determine the leading whitespace for each
+ * line.
+ */
+ const code = text.slice(startOffset, node.position.end.offset);
+ const lines = code.split("\n");
+
+ /*
+ * The parser trims leading whitespace from each line of code within the
+ * fenced code block up to the opening fence's first backtick. The first
+ * backtick's column is the AST node's starting column plus any additional
+ * indentation.
+ */
+ const baseIndent = getIndentText(text, node).length;
+
+ /*
+ * Track the length of any inserted configuration comments at the beginning
+ * of the linted JS and start the JS offset lookup keys at this index.
+ */
+ const commentLength = comments.reduce((len, comment) => len + comment.length + 1, 0);
+
+ /*
+ * In case there are configuration comments, initialize the map so that the
+ * first lookup index is always 0. If there are no configuration comments,
+ * the lookup index will also be 0, and the lookup should always go to the
+ * last range that matches, skipping this initialization entry.
+ */
+ const rangeMap = [{
+ indent: baseIndent,
+ js: 0,
+ md: 0
+ }];
+
+ // Start the JS offset after any configuration comments.
+ let jsOffset = commentLength;
+
+ /*
+ * Start the Markdown offset at the beginning of the block's first line of
+ * actual code. The first line of the block is always the opening fence, so
+ * the code begins on the second line.
+ */
+ let mdOffset = startOffset + lines[0].length + 1;
+
+ /*
+ * For each line, determine how much leading whitespace was trimmed due to
+ * indentation. Increase the JS lookup offset by the length of the line
+ * post-trimming and the Markdown offset by the total line length.
+ */
+ for (let i = 0; i + 1 < lines.length; i++) {
+ const line = lines[i + 1];
+ const leadingWhitespaceLength = leadingWhitespaceRegex.exec(line)[0].length;
+
+ // The parser trims leading whitespace up to the level of the opening
+ // fence, so keep any additional indentation beyond that.
+ const trimLength = Math.min(baseIndent, leadingWhitespaceLength);
+
+ rangeMap.push({
+ indent: trimLength,
+ js: jsOffset,
+
+ // Advance `trimLength` character from the beginning of the Markdown
+ // line to the beginning of the equivalent JS line, then compute the
+ // delta.
+ md: mdOffset + trimLength - jsOffset
+ });
+
+ // Accumulate the current line in the offsets, and don't forget the
+ // newline.
+ mdOffset += line.length + 1;
+ jsOffset += line.length - trimLength + 1;
+ }
+
+ return rangeMap;
+}
+
+/**
+ * Extracts lintable code blocks from Markdown text.
+ * @param {string} text The text of the file.
+ * @param {string} filename The filename of the file
+ * @returns {Array<{ filename: string, text: string }>} Source code blocks to lint.
+ */
+function preprocess(text, filename) {
+ const ast = parse(text);
+ const blocks = [];
+
+ blocksCache.set(filename, blocks);
+
+ /**
+ * During the depth-first traversal, keep track of any sequences of HTML
+ * comment nodes containing `eslint-*` or `global` comments. If a code
+ * block immediately follows such a sequence, insert the comments at the
+ * top of the code block. Any non-ESLint comment or other node type breaks
+ * and empties the sequence.
+ * @type {string[]}
+ */
+ let htmlComments = [];
+
+ traverse(ast, {
+ "*"() {
+ htmlComments = [];
+ },
+ code(node) {
+ if (node.lang) {
+ const comments = [];
+
+ for (const comment of htmlComments) {
+ if (comment.trim() === "eslint-skip") {
+ htmlComments = [];
+ return;
+ }
+
+ comments.push(`/*${comment}*/`);
+ }
+
+ htmlComments = [];
+
+ blocks.push({
+ ...node,
+ baseIndentText: getIndentText(text, node),
+ comments,
+ rangeMap: getBlockRangeMap(text, node, comments)
+ });
+ }
+ },
+ html(node) {
+ const comment = getComment(node.value);
+
+ if (comment) {
+ htmlComments.push(comment);
+ } else {
+ htmlComments = [];
+ }
+ }
+ });
+
+ return blocks.map((block, index) => ({
+ filename: `${index}.${block.lang.trim().split(" ")[0]}`,
+ text: [
+ ...block.comments,
+ block.value,
+ ""
+ ].join("\n")
+ }));
+}
+
+/**
+ * Creates a map function that adjusts messages in a code block.
+ * @param {Block} block A code block.
+ * @returns {(message: Message) => Message} A function that adjusts messages in a code block.
+ */
+function adjustBlock(block) {
+ const leadingCommentLines = block.comments.reduce((count, comment) => count + comment.split("\n").length, 0);
+
+ const blockStart = block.position.start.line;
+
+ /**
+ * Adjusts ESLint messages to point to the correct location in the Markdown.
+ * @param {Message} message A message from ESLint.
+ * @returns {Message} The same message, but adjusted to the correct location.
+ */
+ return function adjustMessage(message) {
+ if (!Number.isInteger(message.line)) {
+ return {
+ ...message,
+ line: blockStart,
+ column: block.position.start.column
+ };
+ }
+
+ const lineInCode = message.line - leadingCommentLines;
+
+ if (lineInCode < 1) {
+ return null;
+ }
+
+ const out = {
+ line: lineInCode + blockStart,
+ column: message.column + block.rangeMap[lineInCode].indent
+ };
+
+ if (Number.isInteger(message.endLine)) {
+ out.endLine = message.endLine - leadingCommentLines + blockStart;
+ }
+
+ const adjustedFix = {};
+
+ if (message.fix) {
+ adjustedFix.fix = {
+ range: message.fix.range.map(range => {
+
+ // Advance through the block's range map to find the last
+ // matching range by finding the first range too far and
+ // then going back one.
+ let i = 1;
+
+ while (i < block.rangeMap.length && block.rangeMap[i].js <= range) {
+ i++;
+ }
+
+ // Apply the mapping delta for this range.
+ return range + block.rangeMap[i - 1].md;
+ }),
+ text: message.fix.text.replace(/\n/gu, `\n${block.baseIndentText}`)
+ };
+ }
+
+ return { ...message, ...out, ...adjustedFix };
+ };
+}
+
+/**
+ * Excludes unsatisfiable rules from the list of messages.
+ * @param {Message} message A message from the linter.
+ * @returns {boolean} True if the message should be included in output.
+ */
+function excludeUnsatisfiableRules(message) {
+ return message && UNSATISFIABLE_RULES.indexOf(message.ruleId) < 0;
+}
+
+/**
+ * Transforms generated messages for output.
+ * @param {Array<Message[]>} messages An array containing one array of messages
+ * for each code block returned from `preprocess`.
+ * @param {string} filename The filename of the file
+ * @returns {Message[]} A flattened array of messages with mapped locations.
+ */
+function postprocess(messages, filename) {
+ const blocks = blocksCache.get(filename);
+
+ blocksCache.delete(filename);
+
+ return [].concat(...messages.map((group, i) => {
+ const adjust = adjustBlock(blocks[i]);
+
+ return group.map(adjust).filter(excludeUnsatisfiableRules);
+ }));
+}
+
+module.exports = {
+ preprocess,
+ postprocess,
+ supportsAutofix: SUPPORTS_AUTOFIX
+};
diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json
new file mode 100644
index 0000000000..d1a5020872
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/eslint-plugin-markdown/package.json
@@ -0,0 +1,58 @@
+{
+ "name": "eslint-plugin-markdown",
+ "version": "2.2.1",
+ "description": "An ESLint plugin to lint JavaScript in Markdown code fences.",
+ "license": "MIT",
+ "author": {
+ "name": "Brandon Mills",
+ "url": "https://github.com/btmills"
+ },
+ "repository": "eslint/eslint-plugin-markdown",
+ "bugs": {
+ "url": "https://github.com/eslint/eslint-plugin-markdown/issues"
+ },
+ "homepage": "https://github.com/eslint/eslint-plugin-markdown#readme",
+ "keywords": [
+ "eslint",
+ "eslintplugin",
+ "markdown",
+ "lint",
+ "linter"
+ ],
+ "scripts": {
+ "lint": "eslint --ext js,md .",
+ "prepare": "node ./npm-prepare.js",
+ "test": "npm run lint && npm run test-cov",
+ "test-cov": "nyc _mocha -- -c tests/{examples,lib}/**/*.js",
+ "generate-release": "eslint-generate-release",
+ "generate-alpharelease": "eslint-generate-prerelease alpha",
+ "generate-betarelease": "eslint-generate-prerelease beta",
+ "generate-rcrelease": "eslint-generate-prerelease rc",
+ "publish-release": "eslint-publish-release"
+ },
+ "main": "index.js",
+ "files": [
+ "index.js",
+ "lib/index.js",
+ "lib/processor.js"
+ ],
+ "devDependencies": {
+ "chai": "^4.2.0",
+ "eslint": "^6.8.0",
+ "eslint-config-eslint": "^6.0.0",
+ "eslint-plugin-jsdoc": "^15.9.5",
+ "eslint-plugin-node": "^9.0.0",
+ "eslint-release": "^3.1.2",
+ "mocha": "^6.2.2",
+ "nyc": "^14.1.1"
+ },
+ "dependencies": {
+ "mdast-util-from-markdown": "^0.8.5"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ },
+ "engines": {
+ "node": "^8.10.0 || ^10.12.0 || >= 12.0.0"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/gensync/LICENSE b/tools/node_modules/eslint/node_modules/gensync/LICENSE
new file mode 100644
index 0000000000..af7f781f59
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/gensync/LICENSE
@@ -0,0 +1,7 @@
+Copyright 2018 Logan Smyth <loganfsmyth@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/gensync/README.md b/tools/node_modules/eslint/node_modules/gensync/README.md
new file mode 100644
index 0000000000..f68ce1a37b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/gensync/README.md
@@ -0,0 +1,196 @@
+# gensync
+
+This module allows for developers to write common code that can share
+implementation details, hiding whether an underlying request happens
+synchronously or asynchronously. This is in contrast with many current Node
+APIs which explicitly implement the same API twice, once with calls to
+synchronous functions, and once with asynchronous functions.
+
+Take for example `fs.readFile` and `fs.readFileSync`, if you're writing an API
+that loads a file and then performs a synchronous operation on the data, it
+can be frustrating to maintain two parallel functions.
+
+
+## Example
+
+```js
+const fs = require("fs");
+const gensync = require("gensync");
+
+const readFile = gensync({
+ sync: fs.readFileSync,
+ errback: fs.readFile,
+});
+
+const myOperation = gensync(function* (filename) {
+ const code = yield* readFile(filename, "utf8");
+
+ return "// some custom prefix\n" + code;
+});
+
+// Load and add the prefix synchronously:
+const result = myOperation.sync("./some-file.js");
+
+// Load and add the prefix asynchronously with promises:
+myOperation.async("./some-file.js").then(result => {
+
+});
+
+// Load and add the prefix asynchronously with promises:
+myOperation.errback("./some-file.js", (err, result) => {
+
+});
+```
+
+This could even be exposed as your official API by doing
+```js
+// Using the common 'Sync' suffix for sync functions, and 'Async' suffix for
+// promise-returning versions.
+exports.myOperationSync = myOperation.sync;
+exports.myOperationAsync = myOperation.async;
+exports.myOperation = myOperation.errback;
+```
+or potentially expose one of the async versions as the default, with a
+`.sync` property on the function to expose the synchronous version.
+```js
+module.exports = myOperation.errback;
+module.exports.sync = myOperation.sync;
+````
+
+
+## API
+
+### gensync(generatorFnOrOptions)
+
+Returns a function that can be "await"-ed in another `gensync` generator
+function, or executed via
+
+* `.sync(...args)` - Returns the computed value, or throws.
+* `.async(...args)` - Returns a promise for the computed value.
+* `.errback(...args, (err, result) => {})` - Calls the callback with the computed value, or error.
+
+
+#### Passed a generator
+
+Wraps the generator to populate the `.sync`/`.async`/`.errback` helpers above to
+allow for evaluation of the generator for the final value.
+
+##### Example
+
+```js
+const readFile = function* () {
+ return 42;
+};
+
+const readFileAndMore = gensync(function* (){
+ const val = yield* readFile();
+ return 42 + val;
+});
+
+// In general cases
+const code = readFileAndMore.sync("./file.js", "utf8");
+readFileAndMore.async("./file.js", "utf8").then(code => {})
+readFileAndMore.errback("./file.js", "utf8", (err, code) => {});
+
+// In a generator being called indirectly with .sync/.async/.errback
+const code = yield* readFileAndMore("./file.js", "utf8");
+```
+
+
+#### Passed an options object
+
+* `opts.sync`
+
+ Example: `(...args) => 4`
+
+ A function that will be called when `.sync()` is called on the `gensync()`
+ result, or when the result is passed to `yield*` in another generator that
+ is being run synchronously.
+
+ Also called for `.async()` calls if no async handlers are provided.
+
+* `opts.async`
+
+ Example: `async (...args) => 4`
+
+ A function that will be called when `.async()` or `.errback()` is called on
+ the `gensync()` result, or when the result is passed to `yield*` in another
+ generator that is being run asynchronously.
+
+* `opts.errback`
+
+ Example: `(...args, cb) => cb(null, 4)`
+
+ A function that will be called when `.async()` or `.errback()` is called on
+ the `gensync()` result, or when the result is passed to `yield*` in another
+ generator that is being run asynchronously.
+
+ This option allows for simpler compatibility with many existing Node APIs,
+ and also avoids introducing the extra even loop turns that promises introduce
+ to access the result value.
+
+* `opts.name`
+
+ Example: `"readFile"`
+
+ A string name to apply to the returned function. If no value is provided,
+ the name of `errback`/`async`/`sync` functions will be used, with any
+ `Sync` or `Async` suffix stripped off. If the callback is simply named
+ with ES6 inference (same name as the options property), the name is ignored.
+
+* `opts.arity`
+
+ Example: `4`
+
+ A number for the length to set on the returned function. If no value
+ is provided, the length will be carried over from the `sync` function's
+ `length` value.
+
+##### Example
+
+```js
+const readFile = gensync({
+ sync: fs.readFileSync,
+ errback: fs.readFile,
+});
+
+const code = readFile.sync("./file.js", "utf8");
+readFile.async("./file.js", "utf8").then(code => {})
+readFile.errback("./file.js", "utf8", (err, code) => {});
+```
+
+
+### gensync.all(iterable)
+
+`Promise.all`-like combinator that works with an iterable of generator objects
+that could be passed to `yield*` within a gensync generator.
+
+#### Example
+
+```js
+const loadFiles = gensync(function* () {
+ return yield* gensync.all([
+ readFile("./one.js"),
+ readFile("./two.js"),
+ readFile("./three.js"),
+ ]);
+});
+```
+
+
+### gensync.race(iterable)
+
+`Promise.race`-like combinator that works with an iterable of generator objects
+that could be passed to `yield*` within a gensync generator.
+
+#### Example
+
+```js
+const loadFiles = gensync(function* () {
+ return yield* gensync.race([
+ readFile("./one.js"),
+ readFile("./two.js"),
+ readFile("./three.js"),
+ ]);
+});
+```
diff --git a/tools/node_modules/eslint/node_modules/gensync/index.js b/tools/node_modules/eslint/node_modules/gensync/index.js
new file mode 100644
index 0000000000..ee0ea61659
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/gensync/index.js
@@ -0,0 +1,373 @@
+"use strict";
+
+// These use the global symbol registry so that multiple copies of this
+// library can work together in case they are not deduped.
+const GENSYNC_START = Symbol.for("gensync:v1:start");
+const GENSYNC_SUSPEND = Symbol.for("gensync:v1:suspend");
+
+const GENSYNC_EXPECTED_START = "GENSYNC_EXPECTED_START";
+const GENSYNC_EXPECTED_SUSPEND = "GENSYNC_EXPECTED_SUSPEND";
+const GENSYNC_OPTIONS_ERROR = "GENSYNC_OPTIONS_ERROR";
+const GENSYNC_RACE_NONEMPTY = "GENSYNC_RACE_NONEMPTY";
+const GENSYNC_ERRBACK_NO_CALLBACK = "GENSYNC_ERRBACK_NO_CALLBACK";
+
+module.exports = Object.assign(
+ function gensync(optsOrFn) {
+ let genFn = optsOrFn;
+ if (typeof optsOrFn !== "function") {
+ genFn = newGenerator(optsOrFn);
+ } else {
+ genFn = wrapGenerator(optsOrFn);
+ }
+
+ return Object.assign(genFn, makeFunctionAPI(genFn));
+ },
+ {
+ all: buildOperation({
+ name: "all",
+ arity: 1,
+ sync: function(args) {
+ const items = Array.from(args[0]);
+ return items.map(item => evaluateSync(item));
+ },
+ async: function(args, resolve, reject) {
+ const items = Array.from(args[0]);
+
+ if (items.length === 0) {
+ Promise.resolve().then(() => resolve([]));
+ return;
+ }
+
+ let count = 0;
+ const results = items.map(() => undefined);
+ items.forEach((item, i) => {
+ evaluateAsync(
+ item,
+ val => {
+ results[i] = val;
+ count += 1;
+
+ if (count === results.length) resolve(results);
+ },
+ reject
+ );
+ });
+ },
+ }),
+ race: buildOperation({
+ name: "race",
+ arity: 1,
+ sync: function(args) {
+ const items = Array.from(args[0]);
+ if (items.length === 0) {
+ throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY);
+ }
+
+ return evaluateSync(items[0]);
+ },
+ async: function(args, resolve, reject) {
+ const items = Array.from(args[0]);
+ if (items.length === 0) {
+ throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY);
+ }
+
+ for (const item of items) {
+ evaluateAsync(item, resolve, reject);
+ }
+ },
+ }),
+ }
+);
+
+/**
+ * Given a generator function, return the standard API object that executes
+ * the generator and calls the callbacks.
+ */
+function makeFunctionAPI(genFn) {
+ const fns = {
+ sync: function(...args) {
+ return evaluateSync(genFn.apply(this, args));
+ },
+ async: function(...args) {
+ return new Promise((resolve, reject) => {
+ evaluateAsync(genFn.apply(this, args), resolve, reject);
+ });
+ },
+ errback: function(...args) {
+ const cb = args.pop();
+ if (typeof cb !== "function") {
+ throw makeError(
+ "Asynchronous function called without callback",
+ GENSYNC_ERRBACK_NO_CALLBACK
+ );
+ }
+
+ let gen;
+ try {
+ gen = genFn.apply(this, args);
+ } catch (err) {
+ cb(err);
+ return;
+ }
+
+ evaluateAsync(gen, val => cb(undefined, val), err => cb(err));
+ },
+ };
+ return fns;
+}
+
+function assertTypeof(type, name, value, allowUndefined) {
+ if (
+ typeof value === type ||
+ (allowUndefined && typeof value === "undefined")
+ ) {
+ return;
+ }
+
+ let msg;
+ if (allowUndefined) {
+ msg = `Expected opts.${name} to be either a ${type}, or undefined.`;
+ } else {
+ msg = `Expected opts.${name} to be a ${type}.`;
+ }
+
+ throw makeError(msg, GENSYNC_OPTIONS_ERROR);
+}
+function makeError(msg, code) {
+ return Object.assign(new Error(msg), { code });
+}
+
+/**
+ * Given an options object, return a new generator that dispatches the
+ * correct handler based on sync or async execution.
+ */
+function newGenerator({ name, arity, sync, async, errback }) {
+ assertTypeof("string", "name", name, true /* allowUndefined */);
+ assertTypeof("number", "arity", arity, true /* allowUndefined */);
+ assertTypeof("function", "sync", sync);
+ assertTypeof("function", "async", async, true /* allowUndefined */);
+ assertTypeof("function", "errback", errback, true /* allowUndefined */);
+ if (async && errback) {
+ throw makeError(
+ "Expected one of either opts.async or opts.errback, but got _both_.",
+ GENSYNC_OPTIONS_ERROR
+ );
+ }
+
+ if (typeof name !== "string") {
+ let fnName;
+ if (errback && errback.name && errback.name !== "errback") {
+ fnName = errback.name;
+ }
+ if (async && async.name && async.name !== "async") {
+ fnName = async.name.replace(/Async$/, "");
+ }
+ if (sync && sync.name && sync.name !== "sync") {
+ fnName = sync.name.replace(/Sync$/, "");
+ }
+
+ if (typeof fnName === "string") {
+ name = fnName;
+ }
+ }
+
+ if (typeof arity !== "number") {
+ arity = sync.length;
+ }
+
+ return buildOperation({
+ name,
+ arity,
+ sync: function(args) {
+ return sync.apply(this, args);
+ },
+ async: function(args, resolve, reject) {
+ if (async) {
+ async.apply(this, args).then(resolve, reject);
+ } else if (errback) {
+ errback.call(this, ...args, (err, value) => {
+ if (err == null) resolve(value);
+ else reject(err);
+ });
+ } else {
+ resolve(sync.apply(this, args));
+ }
+ },
+ });
+}
+
+function wrapGenerator(genFn) {
+ return setFunctionMetadata(genFn.name, genFn.length, function(...args) {
+ return genFn.apply(this, args);
+ });
+}
+
+function buildOperation({ name, arity, sync, async }) {
+ return setFunctionMetadata(name, arity, function*(...args) {
+ const resume = yield GENSYNC_START;
+ if (!resume) {
+ // Break the tail call to avoid a bug in V8 v6.X with --harmony enabled.
+ const res = sync.call(this, args);
+ return res;
+ }
+
+ let result;
+ try {
+ async.call(
+ this,
+ args,
+ value => {
+ if (result) return;
+
+ result = { value };
+ resume();
+ },
+ err => {
+ if (result) return;
+
+ result = { err };
+ resume();
+ }
+ );
+ } catch (err) {
+ result = { err };
+ resume();
+ }
+
+ // Suspend until the callbacks run. Will resume synchronously if the
+ // callback was already called.
+ yield GENSYNC_SUSPEND;
+
+ if (result.hasOwnProperty("err")) {
+ throw result.err;
+ }
+
+ return result.value;
+ });
+}
+
+function evaluateSync(gen) {
+ let value;
+ while (!({ value } = gen.next()).done) {
+ assertStart(value, gen);
+ }
+ return value;
+}
+
+function evaluateAsync(gen, resolve, reject) {
+ (function step() {
+ try {
+ let value;
+ while (!({ value } = gen.next()).done) {
+ assertStart(value, gen);
+
+ // If this throws, it is considered to have broken the contract
+ // established for async handlers. If these handlers are called
+ // synchronously, it is also considered bad behavior.
+ let sync = true;
+ let didSyncResume = false;
+ const out = gen.next(() => {
+ if (sync) {
+ didSyncResume = true;
+ } else {
+ step();
+ }
+ });
+ sync = false;
+
+ assertSuspend(out, gen);
+
+ if (!didSyncResume) {
+ // Callback wasn't called synchronously, so break out of the loop
+ // and let it call 'step' later.
+ return;
+ }
+ }
+
+ return resolve(value);
+ } catch (err) {
+ return reject(err);
+ }
+ })();
+}
+
+function assertStart(value, gen) {
+ if (value === GENSYNC_START) return;
+
+ throwError(
+ gen,
+ makeError(
+ `Got unexpected yielded value in gensync generator: ${JSON.stringify(
+ value
+ )}. Did you perhaps mean to use 'yield*' instead of 'yield'?`,
+ GENSYNC_EXPECTED_START
+ )
+ );
+}
+function assertSuspend({ value, done }, gen) {
+ if (!done && value === GENSYNC_SUSPEND) return;
+
+ throwError(
+ gen,
+ makeError(
+ done
+ ? "Unexpected generator completion. If you get this, it is probably a gensync bug."
+ : `Expected GENSYNC_SUSPEND, got ${JSON.stringify(
+ value
+ )}. If you get this, it is probably a gensync bug.`,
+ GENSYNC_EXPECTED_SUSPEND
+ )
+ );
+}
+
+function throwError(gen, err) {
+ // Call `.throw` so that users can step in a debugger to easily see which
+ // 'yield' passed an unexpected value. If the `.throw` call didn't throw
+ // back to the generator, we explicitly do it to stop the error
+ // from being swallowed by user code try/catches.
+ if (gen.throw) gen.throw(err);
+ throw err;
+}
+
+function isIterable(value) {
+ return (
+ !!value &&
+ (typeof value === "object" || typeof value === "function") &&
+ !value[Symbol.iterator]
+ );
+}
+
+function setFunctionMetadata(name, arity, fn) {
+ if (typeof name === "string") {
+ // This should always work on the supported Node versions, but for the
+ // sake of users that are compiling to older versions, we check for
+ // configurability so we don't throw.
+ const nameDesc = Object.getOwnPropertyDescriptor(fn, "name");
+ if (!nameDesc || nameDesc.configurable) {
+ Object.defineProperty(
+ fn,
+ "name",
+ Object.assign(nameDesc || {}, {
+ configurable: true,
+ value: name,
+ })
+ );
+ }
+ }
+
+ if (typeof arity === "number") {
+ const lengthDesc = Object.getOwnPropertyDescriptor(fn, "length");
+ if (!lengthDesc || lengthDesc.configurable) {
+ Object.defineProperty(
+ fn,
+ "length",
+ Object.assign(lengthDesc || {}, {
+ configurable: true,
+ value: arity,
+ })
+ );
+ }
+ }
+
+ return fn;
+}
diff --git a/tools/node_modules/eslint/node_modules/gensync/index.js.flow b/tools/node_modules/eslint/node_modules/gensync/index.js.flow
new file mode 100644
index 0000000000..fa22e0bad9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/gensync/index.js.flow
@@ -0,0 +1,32 @@
+// @flow
+
+opaque type Next = Function | void;
+opaque type Yield = mixed;
+
+export type Gensync<Args, Return> = {
+ (...args: Args): Handler<Return>,
+ sync(...args: Args): Return,
+ async(...args: Args): Promise<Return>,
+ // ...args: [...Args, Callback]
+ errback(...args: any[]): void,
+};
+
+export type Handler<Return> = Generator<Yield, Return, Next>;
+export type Options<Args, Return> = {
+ sync(...args: Args): Return,
+ arity?: number,
+ name?: string,
+} & (
+ | { async?: (...args: Args) => Promise<Return> }
+ // ...args: [...Args, Callback]
+ | { errback(...args: any[]): void }
+);
+
+declare module.exports: {
+ <Args, Return>(
+ Options<Args, Return> | ((...args: Args) => Handler<Return>)
+ ): Gensync<Args, Return>,
+
+ all<Return>(Array<Handler<Return>>): Handler<Return[]>,
+ race<Return>(Array<Handler<Return>>): Handler<Return>,
+};
diff --git a/tools/node_modules/eslint/node_modules/gensync/package.json b/tools/node_modules/eslint/node_modules/gensync/package.json
new file mode 100644
index 0000000000..07f87570d8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/gensync/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "gensync",
+ "version": "1.0.0-beta.2",
+ "license": "MIT",
+ "description": "Allows users to use generators in order to write common functions that can be both sync or async.",
+ "main": "index.js",
+ "author": "Logan Smyth <loganfsmyth@gmail.com>",
+ "homepage": "https://github.com/loganfsmyth/gensync",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/loganfsmyth/gensync.git"
+ },
+ "scripts": {
+ "test": "jest"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "keywords": [
+ "async",
+ "sync",
+ "generators",
+ "async-await",
+ "callbacks"
+ ],
+ "devDependencies": {
+ "babel-core": "^6.26.3",
+ "babel-preset-env": "^1.6.1",
+ "eslint": "^4.19.1",
+ "eslint-config-prettier": "^2.9.0",
+ "eslint-plugin-node": "^6.0.1",
+ "eslint-plugin-prettier": "^2.6.0",
+ "flow-bin": "^0.71.0",
+ "jest": "^22.4.3",
+ "prettier": "^1.12.1"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/is-alphabetical/index.js b/tools/node_modules/eslint/node_modules/is-alphabetical/index.js
new file mode 100644
index 0000000000..26d3650ef0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphabetical/index.js
@@ -0,0 +1,14 @@
+'use strict'
+
+module.exports = alphabetical
+
+// Check if the given character code, or the character code at the first
+// character, is alphabetical.
+function alphabetical(character) {
+ var code = typeof character === 'string' ? character.charCodeAt(0) : character
+
+ return (
+ (code >= 97 && code <= 122) /* a-z */ ||
+ (code >= 65 && code <= 90) /* A-Z */
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/is-alphabetical/license b/tools/node_modules/eslint/node_modules/is-alphabetical/license
new file mode 100644
index 0000000000..8d8660d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphabetical/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/is-alphabetical/package.json b/tools/node_modules/eslint/node_modules/is-alphabetical/package.json
new file mode 100644
index 0000000000..c7764f2a09
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphabetical/package.json
@@ -0,0 +1,75 @@
+{
+ "name": "is-alphabetical",
+ "version": "1.0.4",
+ "description": "Check if a character is alphabetical",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "alphabetical"
+ ],
+ "repository": "wooorm/is-alphabetical",
+ "bugs": "https://github.com/wooorm/is-alphabetical/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "browserify": "^16.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify -s isAlphabetical -o is-alphabetical.js",
+ "build-mangle": "browserify -s isAlphabetical -p tinyify -o is-alphabetical.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "rules": {
+ "capitalized-comments": "off"
+ },
+ "ignores": [
+ "is-alphabetical.js"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/is-alphabetical/readme.md b/tools/node_modules/eslint/node_modules/is-alphabetical/readme.md
new file mode 100644
index 0000000000..2a6064b686
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphabetical/readme.md
@@ -0,0 +1,70 @@
+# is-alphabetical
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+Check if a character is alphabetical.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install is-alphabetical
+```
+
+## Use
+
+```js
+var alphabetical = require('is-alphabetical')
+
+alphabetical('a') // => true
+alphabetical('B') // => true
+alphabetical('0') // => false
+alphabetical('💩') // => false
+```
+
+## API
+
+### `alphabetical(character|code)`
+
+Check whether the given character code (`number`), or the character code at the
+first position (`string`), is alphabetical.
+
+## Related
+
+* [`is-decimal`](https://github.com/wooorm/is-decimal)
+* [`is-hexadecimal`](https://github.com/wooorm/is-hexadecimal)
+* [`is-alphanumerical`](https://github.com/wooorm/is-alphanumerical)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/is-alphabetical.svg
+
+[build]: https://travis-ci.org/wooorm/is-alphabetical
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/is-alphabetical.svg
+
+[coverage]: https://codecov.io/github/wooorm/is-alphabetical
+
+[downloads-badge]: https://img.shields.io/npm/dm/is-alphabetical.svg
+
+[downloads]: https://www.npmjs.com/package/is-alphabetical
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/is-alphabetical.svg
+
+[size]: https://bundlephobia.com/result?p=is-alphabetical
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
diff --git a/tools/node_modules/eslint/node_modules/is-alphanumerical/index.js b/tools/node_modules/eslint/node_modules/is-alphanumerical/index.js
new file mode 100644
index 0000000000..cd5edef3db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphanumerical/index.js
@@ -0,0 +1,12 @@
+'use strict'
+
+var alphabetical = require('is-alphabetical')
+var decimal = require('is-decimal')
+
+module.exports = alphanumerical
+
+// Check if the given character code, or the character code at the first
+// character, is alphanumerical.
+function alphanumerical(character) {
+ return alphabetical(character) || decimal(character)
+}
diff --git a/tools/node_modules/eslint/node_modules/is-alphanumerical/license b/tools/node_modules/eslint/node_modules/is-alphanumerical/license
new file mode 100644
index 0000000000..8d8660d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphanumerical/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/is-alphanumerical/package.json b/tools/node_modules/eslint/node_modules/is-alphanumerical/package.json
new file mode 100644
index 0000000000..edaa31e66f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphanumerical/package.json
@@ -0,0 +1,77 @@
+{
+ "name": "is-alphanumerical",
+ "version": "1.0.4",
+ "description": "Check if a character is alphanumerical",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "alphabetical",
+ "numerical",
+ "alphanumerical"
+ ],
+ "repository": "wooorm/is-alphanumerical",
+ "bugs": "https://github.com/wooorm/is-alphanumerical/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
+ ],
+ "dependencies": {
+ "is-alphabetical": "^1.0.0",
+ "is-decimal": "^1.0.0"
+ },
+ "devDependencies": {
+ "browserify": "^16.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isAlphanumerical -o is-alphanumerical.js",
+ "build-mangle": "browserify . -s isAlphanumerical -p tinyify -o is-alphanumerical.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "is-alphanumerical.js"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/is-alphanumerical/readme.md b/tools/node_modules/eslint/node_modules/is-alphanumerical/readme.md
new file mode 100644
index 0000000000..8496cad64e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-alphanumerical/readme.md
@@ -0,0 +1,71 @@
+# is-alphanumerical
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+Check if a character is alphanumerical (`[a-zA-Z0-9]`).
+
+## Install
+
+[npm][]:
+
+```sh
+npm install is-alphanumerical
+```
+
+## Use
+
+```js
+var alphanumerical = require('is-alphanumerical')
+
+alphanumerical('a') // => true
+alphanumerical('Z') // => true
+alphanumerical('0') // => true
+alphanumerical(' ') // => false
+alphanumerical('💩') // => false
+```
+
+## API
+
+### `alphanumerical(character)`
+
+Check whether the given character code (`number`), or the character code at the
+first position (`string`), is alphanumerical.
+
+## Related
+
+* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
+* [`is-decimal`](https://github.com/wooorm/is-decimal)
+* [`is-hexadecimal`](https://github.com/wooorm/is-hexadecimal)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/is-alphanumerical.svg
+
+[build]: https://travis-ci.org/wooorm/is-alphanumerical
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/is-alphanumerical.svg
+
+[coverage]: https://codecov.io/github/wooorm/is-alphanumerical
+
+[downloads-badge]: https://img.shields.io/npm/dm/is-alphanumerical.svg
+
+[downloads]: https://www.npmjs.com/package/is-alphanumerical
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/is-alphanumerical.svg
+
+[size]: https://bundlephobia.com/result?p=is-alphanumerical
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
diff --git a/tools/node_modules/eslint/node_modules/is-decimal/index.js b/tools/node_modules/eslint/node_modules/is-decimal/index.js
new file mode 100644
index 0000000000..a522104e5c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-decimal/index.js
@@ -0,0 +1,11 @@
+'use strict'
+
+module.exports = decimal
+
+// Check if the given character code, or the character code at the first
+// character, is decimal.
+function decimal(character) {
+ var code = typeof character === 'string' ? character.charCodeAt(0) : character
+
+ return code >= 48 && code <= 57 /* 0-9 */
+}
diff --git a/tools/node_modules/eslint/node_modules/is-decimal/license b/tools/node_modules/eslint/node_modules/is-decimal/license
new file mode 100644
index 0000000000..8d8660d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-decimal/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/is-decimal/package.json b/tools/node_modules/eslint/node_modules/is-decimal/package.json
new file mode 100644
index 0000000000..5589c2a4f1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-decimal/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "is-decimal",
+ "version": "1.0.4",
+ "description": "Check if a character is decimal",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "decimal"
+ ],
+ "repository": "wooorm/is-decimal",
+ "bugs": "https://github.com/wooorm/is-decimal/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "browserify": "^16.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isDecimal -o is-decimal.js",
+ "build-mangle": "browserify . -s isDecimal -p tinyify -o is-decimal.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "is-decimal.js"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/is-decimal/readme.md b/tools/node_modules/eslint/node_modules/is-decimal/readme.md
new file mode 100644
index 0000000000..d24a3d28c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-decimal/readme.md
@@ -0,0 +1,69 @@
+# is-decimal
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+Check if a character is decimal.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install is-decimal
+```
+
+## Use
+
+```js
+var decimal = require('is-decimal')
+
+decimal('0') // => true
+decimal('9') // => true
+decimal('a') // => false
+decimal('💩') // => false
+```
+
+## API
+
+### `decimal(character|code)`
+
+Check whether the given character code (`number`), or the character code at the
+first position (`string`), is decimal.
+
+## Related
+
+* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
+* [`is-hexadecimal`](https://github.com/wooorm/is-hexadecimal)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/is-decimal.svg
+
+[build]: https://travis-ci.org/wooorm/is-decimal
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/is-decimal.svg
+
+[coverage]: https://codecov.io/github/wooorm/is-decimal
+
+[downloads-badge]: https://img.shields.io/npm/dm/is-decimal.svg
+
+[downloads]: https://www.npmjs.com/package/is-decimal
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/is-decimal.svg
+
+[size]: https://bundlephobia.com/result?p=is-decimal
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
diff --git a/tools/node_modules/eslint/node_modules/is-hexadecimal/index.js b/tools/node_modules/eslint/node_modules/is-hexadecimal/index.js
new file mode 100644
index 0000000000..567c9d1c07
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-hexadecimal/index.js
@@ -0,0 +1,15 @@
+'use strict'
+
+module.exports = hexadecimal
+
+// Check if the given character code, or the character code at the first
+// character, is hexadecimal.
+function hexadecimal(character) {
+ var code = typeof character === 'string' ? character.charCodeAt(0) : character
+
+ return (
+ (code >= 97 /* a */ && code <= 102) /* z */ ||
+ (code >= 65 /* A */ && code <= 70) /* Z */ ||
+ (code >= 48 /* A */ && code <= 57) /* Z */
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/is-hexadecimal/license b/tools/node_modules/eslint/node_modules/is-hexadecimal/license
new file mode 100644
index 0000000000..8d8660d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-hexadecimal/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/is-hexadecimal/package.json b/tools/node_modules/eslint/node_modules/is-hexadecimal/package.json
new file mode 100644
index 0000000000..b8741fe102
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-hexadecimal/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "is-hexadecimal",
+ "version": "1.0.4",
+ "description": "Check if a character is hexadecimal",
+ "license": "MIT",
+ "keywords": [
+ "string",
+ "character",
+ "char",
+ "code",
+ "hexadecimal"
+ ],
+ "repository": "wooorm/is-hexadecimal",
+ "bugs": "https://github.com/wooorm/is-hexadecimal/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js"
+ ],
+ "dependencies": {},
+ "devDependencies": {
+ "browserify": "^16.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.js\" && xo --fix",
+ "build-bundle": "browserify . -s isHexadecimal -o is-hexadecimal.js",
+ "build-mangle": "browserify . -s isHexadecimal -p tinyify -o is-hexadecimal.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test": "npm run format && npm run build && npm run test-coverage"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "is-hexadecimal.js"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/is-hexadecimal/readme.md b/tools/node_modules/eslint/node_modules/is-hexadecimal/readme.md
new file mode 100644
index 0000000000..7c82b1b8d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/is-hexadecimal/readme.md
@@ -0,0 +1,70 @@
+# is-hexadecimal
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+Check if a character is hexadecimal.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install is-hexadecimal
+```
+
+## Use
+
+```js
+var hexadecimal = require('is-hexadecimal')
+
+hexadecimal('a') // => true
+hexadecimal('0') // => true
+hexadecimal('G') // => false
+hexadecimal('💩') // => false
+```
+
+## API
+
+### `hexadecimal(character|code)`
+
+Check whether the given character code (`number`), or the character code at the
+first position (`string`), is hexadecimal.
+
+## Related
+
+* [`is-alphabetical`](https://github.com/wooorm/is-alphabetical)
+* [`is-alphanumerical`](https://github.com/wooorm/is-alphabetical)
+* [`is-decimal`](https://github.com/wooorm/is-decimal)
+* [`is-whitespace-character`](https://github.com/wooorm/is-whitespace-character)
+* [`is-word-character`](https://github.com/wooorm/is-word-character)
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/is-hexadecimal.svg
+
+[build]: https://travis-ci.org/wooorm/is-hexadecimal
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/is-hexadecimal.svg
+
+[coverage]: https://codecov.io/github/wooorm/is-hexadecimal
+
+[downloads-badge]: https://img.shields.io/npm/dm/is-hexadecimal.svg
+
+[downloads]: https://www.npmjs.com/package/is-hexadecimal
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/is-hexadecimal.svg
+
+[size]: https://bundlephobia.com/result?p=is-hexadecimal
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
diff --git a/tools/node_modules/eslint/node_modules/js-tokens/LICENSE b/tools/node_modules/eslint/node_modules/js-tokens/LICENSE
new file mode 100644
index 0000000000..54aef52f3a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/js-tokens/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/js-tokens/README.md b/tools/node_modules/eslint/node_modules/js-tokens/README.md
new file mode 100644
index 0000000000..00cdf1634d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/js-tokens/README.md
@@ -0,0 +1,240 @@
+Overview [![Build Status](https://travis-ci.org/lydell/js-tokens.svg?branch=master)](https://travis-ci.org/lydell/js-tokens)
+========
+
+A regex that tokenizes JavaScript.
+
+```js
+var jsTokens = require("js-tokens").default
+
+var jsString = "var foo=opts.foo;\n..."
+
+jsString.match(jsTokens)
+// ["var", " ", "foo", "=", "opts", ".", "foo", ";", "\n", ...]
+```
+
+
+Installation
+============
+
+`npm install js-tokens`
+
+```js
+import jsTokens from "js-tokens"
+// or:
+var jsTokens = require("js-tokens").default
+```
+
+
+Usage
+=====
+
+### `jsTokens` ###
+
+A regex with the `g` flag that matches JavaScript tokens.
+
+The regex _always_ matches, even invalid JavaScript and the empty string.
+
+The next match is always directly after the previous.
+
+### `var token = matchToToken(match)` ###
+
+```js
+import {matchToToken} from "js-tokens"
+// or:
+var matchToToken = require("js-tokens").matchToToken
+```
+
+Takes a `match` returned by `jsTokens.exec(string)`, and returns a `{type:
+String, value: String}` object. The following types are available:
+
+- string
+- comment
+- regex
+- number
+- name
+- punctuator
+- whitespace
+- invalid
+
+Multi-line comments and strings also have a `closed` property indicating if the
+token was closed or not (see below).
+
+Comments and strings both come in several flavors. To distinguish them, check if
+the token starts with `//`, `/*`, `'`, `"` or `` ` ``.
+
+Names are ECMAScript IdentifierNames, that is, including both identifiers and
+keywords. You may use [is-keyword-js] to tell them apart.
+
+Whitespace includes both line terminators and other whitespace.
+
+[is-keyword-js]: https://github.com/crissdev/is-keyword-js
+
+
+ECMAScript support
+==================
+
+The intention is to always support the latest ECMAScript version whose feature
+set has been finalized.
+
+If adding support for a newer version requires changes, a new version with a
+major verion bump will be released.
+
+Currently, ECMAScript 2018 is supported.
+
+
+Invalid code handling
+=====================
+
+Unterminated strings are still matched as strings. JavaScript strings cannot
+contain (unescaped) newlines, so unterminated strings simply end at the end of
+the line. Unterminated template strings can contain unescaped newlines, though,
+so they go on to the end of input.
+
+Unterminated multi-line comments are also still matched as comments. They
+simply go on to the end of the input.
+
+Unterminated regex literals are likely matched as division and whatever is
+inside the regex.
+
+Invalid ASCII characters have their own capturing group.
+
+Invalid non-ASCII characters are treated as names, to simplify the matching of
+names (except unicode spaces which are treated as whitespace). Note: See also
+the [ES2018](#es2018) section.
+
+Regex literals may contain invalid regex syntax. They are still matched as
+regex literals. They may also contain repeated regex flags, to keep the regex
+simple.
+
+Strings may contain invalid escape sequences.
+
+
+Limitations
+===========
+
+Tokenizing JavaScript using regexes—in fact, _one single regex_—won’t be
+perfect. But that’s not the point either.
+
+You may compare jsTokens with [esprima] by using `esprima-compare.js`.
+See `npm run esprima-compare`!
+
+[esprima]: http://esprima.org/
+
+### Template string interpolation ###
+
+Template strings are matched as single tokens, from the starting `` ` `` to the
+ending `` ` ``, including interpolations (whose tokens are not matched
+individually).
+
+Matching template string interpolations requires recursive balancing of `{` and
+`}`—something that JavaScript regexes cannot do. Only one level of nesting is
+supported.
+
+### Division and regex literals collision ###
+
+Consider this example:
+
+```js
+var g = 9.82
+var number = bar / 2/g
+
+var regex = / 2/g
+```
+
+A human can easily understand that in the `number` line we’re dealing with
+division, and in the `regex` line we’re dealing with a regex literal. How come?
+Because humans can look at the whole code to put the `/` characters in context.
+A JavaScript regex cannot. It only sees forwards. (Well, ES2018 regexes can also
+look backwards. See the [ES2018](#es2018) section).
+
+When the `jsTokens` regex scans throught the above, it will see the following
+at the end of both the `number` and `regex` rows:
+
+```js
+/ 2/g
+```
+
+It is then impossible to know if that is a regex literal, or part of an
+expression dealing with division.
+
+Here is a similar case:
+
+```js
+foo /= 2/g
+foo(/= 2/g)
+```
+
+The first line divides the `foo` variable with `2/g`. The second line calls the
+`foo` function with the regex literal `/= 2/g`. Again, since `jsTokens` only
+sees forwards, it cannot tell the two cases apart.
+
+There are some cases where we _can_ tell division and regex literals apart,
+though.
+
+First off, we have the simple cases where there’s only one slash in the line:
+
+```js
+var foo = 2/g
+foo /= 2
+```
+
+Regex literals cannot contain newlines, so the above cases are correctly
+identified as division. Things are only problematic when there are more than
+one non-comment slash in a single line.
+
+Secondly, not every character is a valid regex flag.
+
+```js
+var number = bar / 2/e
+```
+
+The above example is also correctly identified as division, because `e` is not a
+valid regex flag. I initially wanted to future-proof by allowing `[a-zA-Z]*`
+(any letter) as flags, but it is not worth it since it increases the amount of
+ambigous cases. So only the standard `g`, `m`, `i`, `y` and `u` flags are
+allowed. This means that the above example will be identified as division as
+long as you don’t rename the `e` variable to some permutation of `gmiyus` 1 to 6
+characters long.
+
+Lastly, we can look _forward_ for information.
+
+- If the token following what looks like a regex literal is not valid after a
+ regex literal, but is valid in a division expression, then the regex literal
+ is treated as division instead. For example, a flagless regex cannot be
+ followed by a string, number or name, but all of those three can be the
+ denominator of a division.
+- Generally, if what looks like a regex literal is followed by an operator, the
+ regex literal is treated as division instead. This is because regexes are
+ seldomly used with operators (such as `+`, `*`, `&&` and `==`), but division
+ could likely be part of such an expression.
+
+Please consult the regex source and the test cases for precise information on
+when regex or division is matched (should you need to know). In short, you
+could sum it up as:
+
+If the end of a statement looks like a regex literal (even if it isn’t), it
+will be treated as one. Otherwise it should work as expected (if you write sane
+code).
+
+### ES2018 ###
+
+ES2018 added some nice regex improvements to the language.
+
+- [Unicode property escapes] should allow telling names and invalid non-ASCII
+ characters apart without blowing up the regex size.
+- [Lookbehind assertions] should allow matching telling division and regex
+ literals apart in more cases.
+- [Named capture groups] might simplify some things.
+
+These things would be nice to do, but are not critical. They probably have to
+wait until the oldest maintained Node.js LTS release supports those features.
+
+[Unicode property escapes]: http://2ality.com/2017/07/regexp-unicode-property-escapes.html
+[Lookbehind assertions]: http://2ality.com/2017/05/regexp-lookbehind-assertions.html
+[Named capture groups]: http://2ality.com/2017/05/regexp-named-capture-groups.html
+
+
+License
+=======
+
+[MIT](LICENSE).
diff --git a/tools/node_modules/eslint/node_modules/js-tokens/index.js b/tools/node_modules/eslint/node_modules/js-tokens/index.js
new file mode 100644
index 0000000000..b23a4a0e7f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/js-tokens/index.js
@@ -0,0 +1,23 @@
+// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell
+// License: MIT. (See LICENSE.)
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+})
+
+// This regex comes from regex.coffee, and is inserted here by generate-index.js
+// (run `npm run build`).
+exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g
+
+exports.matchToToken = function(match) {
+ var token = {type: "invalid", value: match[0], closed: undefined}
+ if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4])
+ else if (match[ 5]) token.type = "comment"
+ else if (match[ 6]) token.type = "comment", token.closed = !!match[7]
+ else if (match[ 8]) token.type = "regex"
+ else if (match[ 9]) token.type = "number"
+ else if (match[10]) token.type = "name"
+ else if (match[11]) token.type = "punctuator"
+ else if (match[12]) token.type = "whitespace"
+ return token
+}
diff --git a/tools/node_modules/eslint/node_modules/js-tokens/package.json b/tools/node_modules/eslint/node_modules/js-tokens/package.json
new file mode 100644
index 0000000000..66752fab27
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/js-tokens/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "js-tokens",
+ "version": "4.0.0",
+ "author": "Simon Lydell",
+ "license": "MIT",
+ "description": "A regex that tokenizes JavaScript.",
+ "keywords": [
+ "JavaScript",
+ "js",
+ "token",
+ "tokenize",
+ "regex"
+ ],
+ "files": [
+ "index.js"
+ ],
+ "repository": "lydell/js-tokens",
+ "scripts": {
+ "test": "mocha --ui tdd",
+ "esprima-compare": "node esprima-compare ./index.js everything.js/es5.js",
+ "build": "node generate-index.js",
+ "dev": "npm run build && npm test"
+ },
+ "devDependencies": {
+ "coffeescript": "2.1.1",
+ "esprima": "4.0.0",
+ "everything.js": "1.0.3",
+ "mocha": "5.0.0"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/jsesc/LICENSE-MIT.txt b/tools/node_modules/eslint/node_modules/jsesc/LICENSE-MIT.txt
new file mode 100644
index 0000000000..a41e0a7ef9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/jsesc/LICENSE-MIT.txt
@@ -0,0 +1,20 @@
+Copyright Mathias Bynens <https://mathiasbynens.be/>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/jsesc/README.md b/tools/node_modules/eslint/node_modules/jsesc/README.md
new file mode 100644
index 0000000000..aae2b13a19
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/jsesc/README.md
@@ -0,0 +1,421 @@
+# jsesc [![Build status](https://travis-ci.org/mathiasbynens/jsesc.svg?branch=master)](https://travis-ci.org/mathiasbynens/jsesc) [![Code coverage status](https://coveralls.io/repos/mathiasbynens/jsesc/badge.svg)](https://coveralls.io/r/mathiasbynens/jsesc) [![Dependency status](https://gemnasium.com/mathiasbynens/jsesc.svg)](https://gemnasium.com/mathiasbynens/jsesc)
+
+Given some data, _jsesc_ returns a stringified representation of that data. jsesc is similar to `JSON.stringify()` except:
+
+1. it outputs JavaScript instead of JSON [by default](#json), enabling support for data structures like ES6 maps and sets;
+2. it offers [many options](#api) to customize the output;
+3. its output is ASCII-safe [by default](#minimal), thanks to its use of [escape sequences](https://mathiasbynens.be/notes/javascript-escapes) where needed.
+
+For any input, jsesc generates the shortest possible valid printable-ASCII-only output. [Here’s an online demo.](https://mothereff.in/js-escapes)
+
+jsesc’s output can be used instead of `JSON.stringify`’s to avoid [mojibake](https://en.wikipedia.org/wiki/Mojibake) and other encoding issues, or even to [avoid errors](https://twitter.com/annevk/status/380000829643571200) when passing JSON-formatted data (which may contain U+2028 LINE SEPARATOR, U+2029 PARAGRAPH SEPARATOR, or [lone surrogates](https://esdiscuss.org/topic/code-points-vs-unicode-scalar-values#content-14)) to a JavaScript parser or an UTF-8 encoder.
+
+## Installation
+
+Via [npm](https://www.npmjs.com/):
+
+```bash
+npm install jsesc
+```
+
+In [Node.js](https://nodejs.org/):
+
+```js
+const jsesc = require('jsesc');
+```
+
+## API
+
+### `jsesc(value, options)`
+
+This function takes a value and returns an escaped version of the value where any characters that are not printable ASCII symbols are escaped using the shortest possible (but valid) [escape sequences for use in JavaScript strings](https://mathiasbynens.be/notes/javascript-escapes). The first supported value type is strings:
+
+```js
+jsesc('Ich ♥ Bücher');
+// → 'Ich \\u2665 B\\xFCcher'
+
+jsesc('foo 𝌆 bar');
+// → 'foo \\uD834\\uDF06 bar'
+```
+
+Instead of a string, the `value` can also be an array, an object, a map, a set, or a buffer. In such cases, `jsesc` returns a stringified version of the value where any characters that are not printable ASCII symbols are escaped in the same way.
+
+```js
+// Escaping an array
+jsesc([
+ 'Ich ♥ Bücher', 'foo 𝌆 bar'
+]);
+// → '[\'Ich \\u2665 B\\xFCcher\',\'foo \\uD834\\uDF06 bar\']'
+
+// Escaping an object
+jsesc({
+ 'Ich ♥ Bücher': 'foo 𝌆 bar'
+});
+// → '{\'Ich \\u2665 B\\xFCcher\':\'foo \\uD834\\uDF06 bar\'}'
+```
+
+The optional `options` argument accepts an object with the following options:
+
+#### `quotes`
+
+The default value for the `quotes` option is `'single'`. This means that any occurrences of `'` in the input string are escaped as `\'`, so that the output can be used in a string literal wrapped in single quotes.
+
+```js
+jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.');
+// → 'Lorem ipsum "dolor" sit \\\'amet\\\' etc.'
+
+jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.', {
+ 'quotes': 'single'
+});
+// → '`Lorem` ipsum "dolor" sit \\\'amet\\\' etc.'
+// → "`Lorem` ipsum \"dolor\" sit \\'amet\\' etc."
+```
+
+If you want to use the output as part of a string literal wrapped in double quotes, set the `quotes` option to `'double'`.
+
+```js
+jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.', {
+ 'quotes': 'double'
+});
+// → '`Lorem` ipsum \\"dolor\\" sit \'amet\' etc.'
+// → "`Lorem` ipsum \\\"dolor\\\" sit 'amet' etc."
+```
+
+If you want to use the output as part of a template literal (i.e. wrapped in backticks), set the `quotes` option to `'backtick'`.
+
+```js
+jsesc('`Lorem` ipsum "dolor" sit \'amet\' etc.', {
+ 'quotes': 'backtick'
+});
+// → '\\`Lorem\\` ipsum "dolor" sit \'amet\' etc.'
+// → "\\`Lorem\\` ipsum \"dolor\" sit 'amet' etc."
+// → `\\\`Lorem\\\` ipsum "dolor" sit 'amet' etc.`
+```
+
+This setting also affects the output for arrays and objects:
+
+```js
+jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
+ 'quotes': 'double'
+});
+// → '{"Ich \\u2665 B\\xFCcher":"foo \\uD834\\uDF06 bar"}'
+
+jsesc([ 'Ich ♥ Bücher', 'foo 𝌆 bar' ], {
+ 'quotes': 'double'
+});
+// → '["Ich \\u2665 B\\xFCcher","foo \\uD834\\uDF06 bar"]'
+```
+
+#### `numbers`
+
+The default value for the `numbers` option is `'decimal'`. This means that any numeric values are represented using decimal integer literals. Other valid options are `binary`, `octal`, and `hexadecimal`, which result in binary integer literals, octal integer literals, and hexadecimal integer literals, respectively.
+
+```js
+jsesc(42, {
+ 'numbers': 'binary'
+});
+// → '0b101010'
+
+jsesc(42, {
+ 'numbers': 'octal'
+});
+// → '0o52'
+
+jsesc(42, {
+ 'numbers': 'decimal'
+});
+// → '42'
+
+jsesc(42, {
+ 'numbers': 'hexadecimal'
+});
+// → '0x2A'
+```
+
+#### `wrap`
+
+The `wrap` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, the output is a valid JavaScript string literal wrapped in quotes. The type of quotes can be specified through the `quotes` setting.
+
+```js
+jsesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
+ 'quotes': 'single',
+ 'wrap': true
+});
+// → '\'Lorem ipsum "dolor" sit \\\'amet\\\' etc.\''
+// → "\'Lorem ipsum \"dolor\" sit \\\'amet\\\' etc.\'"
+
+jsesc('Lorem ipsum "dolor" sit \'amet\' etc.', {
+ 'quotes': 'double',
+ 'wrap': true
+});
+// → '"Lorem ipsum \\"dolor\\" sit \'amet\' etc."'
+// → "\"Lorem ipsum \\\"dolor\\\" sit \'amet\' etc.\""
+```
+
+#### `es6`
+
+The `es6` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, any astral Unicode symbols in the input are escaped using [ECMAScript 6 Unicode code point escape sequences](https://mathiasbynens.be/notes/javascript-escapes#unicode-code-point) instead of using separate escape sequences for each surrogate half. If backwards compatibility with ES5 environments is a concern, don’t enable this setting. If the `json` setting is enabled, the value for the `es6` setting is ignored (as if it was `false`).
+
+```js
+// By default, the `es6` option is disabled:
+jsesc('foo 𝌆 bar 💩 baz');
+// → 'foo \\uD834\\uDF06 bar \\uD83D\\uDCA9 baz'
+
+// To explicitly disable it:
+jsesc('foo 𝌆 bar 💩 baz', {
+ 'es6': false
+});
+// → 'foo \\uD834\\uDF06 bar \\uD83D\\uDCA9 baz'
+
+// To enable it:
+jsesc('foo 𝌆 bar 💩 baz', {
+ 'es6': true
+});
+// → 'foo \\u{1D306} bar \\u{1F4A9} baz'
+```
+
+#### `escapeEverything`
+
+The `escapeEverything` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, all the symbols in the output are escaped — even printable ASCII symbols.
+
+```js
+jsesc('lolwat"foo\'bar', {
+ 'escapeEverything': true
+});
+// → '\\x6C\\x6F\\x6C\\x77\\x61\\x74\\"\\x66\\x6F\\x6F\\\'\\x62\\x61\\x72'
+// → "\\x6C\\x6F\\x6C\\x77\\x61\\x74\\\"\\x66\\x6F\\x6F\\'\\x62\\x61\\x72"
+```
+
+This setting also affects the output for string literals within arrays and objects.
+
+#### `minimal`
+
+The `minimal` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, only a limited set of symbols in the output are escaped:
+
+* U+0000 `\0`
+* U+0008 `\b`
+* U+0009 `\t`
+* U+000A `\n`
+* U+000C `\f`
+* U+000D `\r`
+* U+005C `\\`
+* U+2028 `\u2028`
+* U+2029 `\u2029`
+* whatever symbol is being used for wrapping string literals (based on [the `quotes` option](#quotes))
+
+Note: with this option enabled, jsesc output is no longer guaranteed to be ASCII-safe.
+
+```js
+jsesc('foo\u2029bar\nbaz©qux𝌆flops', {
+ 'minimal': false
+});
+// → 'foo\\u2029bar\\nbaz©qux𝌆flops'
+```
+
+#### `isScriptContext`
+
+The `isScriptContext` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, occurrences of [`</script` and `</style`](https://mathiasbynens.be/notes/etago) in the output are escaped as `<\/script` and `<\/style`, and [`<!--`](https://mathiasbynens.be/notes/etago#comment-8) is escaped as `\x3C!--` (or `\u003C!--` when the `json` option is enabled). This setting is useful when jsesc’s output ends up as part of a `<script>` or `<style>` element in an HTML document.
+
+```js
+jsesc('foo</script>bar', {
+ 'isScriptContext': true
+});
+// → 'foo<\\/script>bar'
+```
+
+#### `compact`
+
+The `compact` option takes a boolean value (`true` or `false`), and defaults to `true` (enabled). When enabled, the output for arrays and objects is as compact as possible; it’s not formatted nicely.
+
+```js
+jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
+ 'compact': true // this is the default
+});
+// → '{\'Ich \u2665 B\xFCcher\':\'foo \uD834\uDF06 bar\'}'
+
+jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
+ 'compact': false
+});
+// → '{\n\t\'Ich \u2665 B\xFCcher\': \'foo \uD834\uDF06 bar\'\n}'
+
+jsesc([ 'Ich ♥ Bücher', 'foo 𝌆 bar' ], {
+ 'compact': false
+});
+// → '[\n\t\'Ich \u2665 B\xFCcher\',\n\t\'foo \uD834\uDF06 bar\'\n]'
+```
+
+This setting has no effect on the output for strings.
+
+#### `indent`
+
+The `indent` option takes a string value, and defaults to `'\t'`. When the `compact` setting is enabled (`true`), the value of the `indent` option is used to format the output for arrays and objects.
+
+```js
+jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
+ 'compact': false,
+ 'indent': '\t' // this is the default
+});
+// → '{\n\t\'Ich \u2665 B\xFCcher\': \'foo \uD834\uDF06 bar\'\n}'
+
+jsesc({ 'Ich ♥ Bücher': 'foo 𝌆 bar' }, {
+ 'compact': false,
+ 'indent': ' '
+});
+// → '{\n \'Ich \u2665 B\xFCcher\': \'foo \uD834\uDF06 bar\'\n}'
+
+jsesc([ 'Ich ♥ Bücher', 'foo 𝌆 bar' ], {
+ 'compact': false,
+ 'indent': ' '
+});
+// → '[\n \'Ich \u2665 B\xFCcher\',\n\ t\'foo \uD834\uDF06 bar\'\n]'
+```
+
+This setting has no effect on the output for strings.
+
+#### `indentLevel`
+
+The `indentLevel` option takes a numeric value, and defaults to `0`. It represents the current indentation level, i.e. the number of times the value of [the `indent` option](#indent) is repeated.
+
+```js
+jsesc(['a', 'b', 'c'], {
+ 'compact': false,
+ 'indentLevel': 1
+});
+// → '[\n\t\t\'a\',\n\t\t\'b\',\n\t\t\'c\'\n\t]'
+
+jsesc(['a', 'b', 'c'], {
+ 'compact': false,
+ 'indentLevel': 2
+});
+// → '[\n\t\t\t\'a\',\n\t\t\t\'b\',\n\t\t\t\'c\'\n\t\t]'
+```
+
+#### `json`
+
+The `json` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, the output is valid JSON. [Hexadecimal character escape sequences](https://mathiasbynens.be/notes/javascript-escapes#hexadecimal) and [the `\v` or `\0` escape sequences](https://mathiasbynens.be/notes/javascript-escapes#single) are not used. Setting `json: true` implies `quotes: 'double', wrap: true, es6: false`, although these values can still be overridden if needed — but in such cases, the output won’t be valid JSON anymore.
+
+```js
+jsesc('foo\x00bar\xFF\uFFFDbaz', {
+ 'json': true
+});
+// → '"foo\\u0000bar\\u00FF\\uFFFDbaz"'
+
+jsesc({ 'foo\x00bar\xFF\uFFFDbaz': 'foo\x00bar\xFF\uFFFDbaz' }, {
+ 'json': true
+});
+// → '{"foo\\u0000bar\\u00FF\\uFFFDbaz":"foo\\u0000bar\\u00FF\\uFFFDbaz"}'
+
+jsesc([ 'foo\x00bar\xFF\uFFFDbaz', 'foo\x00bar\xFF\uFFFDbaz' ], {
+ 'json': true
+});
+// → '["foo\\u0000bar\\u00FF\\uFFFDbaz","foo\\u0000bar\\u00FF\\uFFFDbaz"]'
+
+// Values that are acceptable in JSON but aren’t strings, arrays, or object
+// literals can’t be escaped, so they’ll just be preserved:
+jsesc([ 'foo\x00bar', [1, '©', { 'foo': true, 'qux': null }], 42 ], {
+ 'json': true
+});
+// → '["foo\\u0000bar",[1,"\\u00A9",{"foo":true,"qux":null}],42]'
+// Values that aren’t allowed in JSON are run through `JSON.stringify()`:
+jsesc([ undefined, -Infinity ], {
+ 'json': true
+});
+// → '[null,null]'
+```
+
+**Note:** Using this option on objects or arrays that contain non-string values relies on `JSON.stringify()`. For legacy environments like IE ≤ 7, use [a `JSON` polyfill](http://bestiejs.github.io/json3/).
+
+#### `lowercaseHex`
+
+The `lowercaseHex` option takes a boolean value (`true` or `false`), and defaults to `false` (disabled). When enabled, any alphabetical hexadecimal digits in escape sequences as well as any hexadecimal integer literals (see [the `numbers` option](#numbers)) in the output are in lowercase.
+
+```js
+jsesc('Ich ♥ Bücher', {
+ 'lowercaseHex': true
+});
+// → 'Ich \\u2665 B\\xfccher'
+// ^^
+
+jsesc(42, {
+ 'numbers': 'hexadecimal',
+ 'lowercaseHex': true
+});
+// → '0x2a'
+// ^^
+```
+
+### `jsesc.version`
+
+A string representing the semantic version number.
+
+### Using the `jsesc` binary
+
+To use the `jsesc` binary in your shell, simply install jsesc globally using npm:
+
+```bash
+npm install -g jsesc
+```
+
+After that you’re able to escape strings from the command line:
+
+```bash
+$ jsesc 'föo ♥ bår 𝌆 baz'
+f\xF6o \u2665 b\xE5r \uD834\uDF06 baz
+```
+
+To escape arrays or objects containing string values, use the `-o`/`--object` option:
+
+```bash
+$ jsesc --object '{ "föo": "♥", "bår": "𝌆 baz" }'
+{'f\xF6o':'\u2665','b\xE5r':'\uD834\uDF06 baz'}
+```
+
+To prettify the output in such cases, use the `-p`/`--pretty` option:
+
+```bash
+$ jsesc --pretty '{ "föo": "♥", "bår": "𝌆 baz" }'
+{
+ 'f\xF6o': '\u2665',
+ 'b\xE5r': '\uD834\uDF06 baz'
+}
+```
+
+For valid JSON output, use the `-j`/`--json` option:
+
+```bash
+$ jsesc --json --pretty '{ "föo": "♥", "bår": "𝌆 baz" }'
+{
+ "f\u00F6o": "\u2665",
+ "b\u00E5r": "\uD834\uDF06 baz"
+}
+```
+
+Read a local JSON file, escape any non-ASCII symbols, and save the result to a new file:
+
+```bash
+$ jsesc --json --object < data-raw.json > data-escaped.json
+```
+
+Or do the same with an online JSON file:
+
+```bash
+$ curl -sL "http://git.io/aorKgQ" | jsesc --json --object > data-escaped.json
+```
+
+See `jsesc --help` for the full list of options.
+
+## Support
+
+As of v2.0.0, jsesc supports Node.js v4+ only.
+
+Older versions (up to jsesc v1.3.0) support Chrome 27, Firefox 3, Safari 4, Opera 10, IE 6, Node.js v6.0.0, Narwhal 0.3.2, RingoJS 0.8-0.11, PhantomJS 1.9.0, and Rhino 1.7RC4. **Note:** Using the `json` option on objects or arrays that contain non-string values relies on `JSON.parse()`. For legacy environments like IE ≤ 7, use [a `JSON` polyfill](https://bestiejs.github.io/json3/).
+
+## Author
+
+| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") |
+|---|
+| [Mathias Bynens](https://mathiasbynens.be/) |
+
+## License
+
+This library is available under the [MIT](https://mths.be/mit) license.
diff --git a/tools/node_modules/eslint/node_modules/jsesc/bin/jsesc b/tools/node_modules/eslint/node_modules/jsesc/bin/jsesc
new file mode 100755
index 0000000000..e9a541db32
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/jsesc/bin/jsesc
@@ -0,0 +1,148 @@
+#!/usr/bin/env node
+(function() {
+
+ var fs = require('fs');
+ var stringEscape = require('../jsesc.js');
+ var strings = process.argv.splice(2);
+ var stdin = process.stdin;
+ var data;
+ var timeout;
+ var isObject = false;
+ var options = {};
+ var log = console.log;
+
+ var main = function() {
+ var option = strings[0];
+
+ if (/^(?:-h|--help|undefined)$/.test(option)) {
+ log(
+ 'jsesc v%s - https://mths.be/jsesc',
+ stringEscape.version
+ );
+ log([
+ '\nUsage:\n',
+ '\tjsesc [string]',
+ '\tjsesc [-s | --single-quotes] [string]',
+ '\tjsesc [-d | --double-quotes] [string]',
+ '\tjsesc [-w | --wrap] [string]',
+ '\tjsesc [-e | --escape-everything] [string]',
+ '\tjsesc [-t | --escape-etago] [string]',
+ '\tjsesc [-6 | --es6] [string]',
+ '\tjsesc [-l | --lowercase-hex] [string]',
+ '\tjsesc [-j | --json] [string]',
+ '\tjsesc [-o | --object] [stringified_object]', // `JSON.parse()` the argument
+ '\tjsesc [-p | --pretty] [string]', // `compact: false`
+ '\tjsesc [-v | --version]',
+ '\tjsesc [-h | --help]',
+ '\nExamples:\n',
+ '\tjsesc \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
+ '\tjsesc --json \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
+ '\tjsesc --json --escape-everything \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
+ '\tjsesc --double-quotes --wrap \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\'',
+ '\techo \'f\xF6o \u2665 b\xE5r \uD834\uDF06 baz\' | jsesc'
+ ].join('\n'));
+ return process.exit(1);
+ }
+
+ if (/^(?:-v|--version)$/.test(option)) {
+ log('v%s', stringEscape.version);
+ return process.exit(1);
+ }
+
+ strings.forEach(function(string) {
+ // Process options
+ if (/^(?:-s|--single-quotes)$/.test(string)) {
+ options.quotes = 'single';
+ return;
+ }
+ if (/^(?:-d|--double-quotes)$/.test(string)) {
+ options.quotes = 'double';
+ return;
+ }
+ if (/^(?:-w|--wrap)$/.test(string)) {
+ options.wrap = true;
+ return;
+ }
+ if (/^(?:-e|--escape-everything)$/.test(string)) {
+ options.escapeEverything = true;
+ return;
+ }
+ if (/^(?:-t|--escape-etago)$/.test(string)) {
+ options.escapeEtago = true;
+ return;
+ }
+ if (/^(?:-6|--es6)$/.test(string)) {
+ options.es6 = true;
+ return;
+ }
+ if (/^(?:-l|--lowercase-hex)$/.test(string)) {
+ options.lowercaseHex = true;
+ return;
+ }
+ if (/^(?:-j|--json)$/.test(string)) {
+ options.json = true;
+ return;
+ }
+ if (/^(?:-o|--object)$/.test(string)) {
+ isObject = true;
+ return;
+ }
+ if (/^(?:-p|--pretty)$/.test(string)) {
+ isObject = true;
+ options.compact = false;
+ return;
+ }
+
+ // Process string(s)
+ var result;
+ try {
+ if (isObject) {
+ string = JSON.parse(string);
+ }
+ result = stringEscape(string, options);
+ log(result);
+ } catch(error) {
+ log(error.message + '\n');
+ log('Error: failed to escape.');
+ log('If you think this is a bug in jsesc, please report it:');
+ log('https://github.com/mathiasbynens/jsesc/issues/new');
+ log(
+ '\nStack trace using jsesc@%s:\n',
+ stringEscape.version
+ );
+ log(error.stack);
+ return process.exit(1);
+ }
+ });
+ // Return with exit status 0 outside of the `forEach` loop, in case
+ // multiple strings were passed in.
+ return process.exit(0);
+
+ };
+
+ if (stdin.isTTY) {
+ // handle shell arguments
+ main();
+ } else {
+ // Either the script is called from within a non-TTY context,
+ // or `stdin` content is being piped in.
+ if (!process.stdout.isTTY) { // called from a non-TTY context
+ timeout = setTimeout(function() {
+ // if no piped data arrived after a while, handle shell arguments
+ main();
+ }, 250);
+ }
+
+ data = '';
+ stdin.on('data', function(chunk) {
+ clearTimeout(timeout);
+ data += chunk;
+ });
+ stdin.on('end', function() {
+ strings.push(data.trim());
+ main();
+ });
+ stdin.resume();
+ }
+
+}());
diff --git a/tools/node_modules/eslint/node_modules/jsesc/jsesc.js b/tools/node_modules/eslint/node_modules/jsesc/jsesc.js
new file mode 100644
index 0000000000..7b8b923614
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/jsesc/jsesc.js
@@ -0,0 +1,329 @@
+'use strict';
+
+const object = {};
+const hasOwnProperty = object.hasOwnProperty;
+const forOwn = (object, callback) => {
+ for (const key in object) {
+ if (hasOwnProperty.call(object, key)) {
+ callback(key, object[key]);
+ }
+ }
+};
+
+const extend = (destination, source) => {
+ if (!source) {
+ return destination;
+ }
+ forOwn(source, (key, value) => {
+ destination[key] = value;
+ });
+ return destination;
+};
+
+const forEach = (array, callback) => {
+ const length = array.length;
+ let index = -1;
+ while (++index < length) {
+ callback(array[index]);
+ }
+};
+
+const toString = object.toString;
+const isArray = Array.isArray;
+const isBuffer = Buffer.isBuffer;
+const isObject = (value) => {
+ // This is a very simple check, but it’s good enough for what we need.
+ return toString.call(value) == '[object Object]';
+};
+const isString = (value) => {
+ return typeof value == 'string' ||
+ toString.call(value) == '[object String]';
+};
+const isNumber = (value) => {
+ return typeof value == 'number' ||
+ toString.call(value) == '[object Number]';
+};
+const isFunction = (value) => {
+ return typeof value == 'function';
+};
+const isMap = (value) => {
+ return toString.call(value) == '[object Map]';
+};
+const isSet = (value) => {
+ return toString.call(value) == '[object Set]';
+};
+
+/*--------------------------------------------------------------------------*/
+
+// https://mathiasbynens.be/notes/javascript-escapes#single
+const singleEscapes = {
+ '"': '\\"',
+ '\'': '\\\'',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t'
+ // `\v` is omitted intentionally, because in IE < 9, '\v' == 'v'.
+ // '\v': '\\x0B'
+};
+const regexSingleEscape = /["'\\\b\f\n\r\t]/;
+
+const regexDigit = /[0-9]/;
+const regexWhitelist = /[ !#-&\(-\[\]-_a-~]/;
+
+const jsesc = (argument, options) => {
+ const increaseIndentation = () => {
+ oldIndent = indent;
+ ++options.indentLevel;
+ indent = options.indent.repeat(options.indentLevel)
+ };
+ // Handle options
+ const defaults = {
+ 'escapeEverything': false,
+ 'minimal': false,
+ 'isScriptContext': false,
+ 'quotes': 'single',
+ 'wrap': false,
+ 'es6': false,
+ 'json': false,
+ 'compact': true,
+ 'lowercaseHex': false,
+ 'numbers': 'decimal',
+ 'indent': '\t',
+ 'indentLevel': 0,
+ '__inline1__': false,
+ '__inline2__': false
+ };
+ const json = options && options.json;
+ if (json) {
+ defaults.quotes = 'double';
+ defaults.wrap = true;
+ }
+ options = extend(defaults, options);
+ if (
+ options.quotes != 'single' &&
+ options.quotes != 'double' &&
+ options.quotes != 'backtick'
+ ) {
+ options.quotes = 'single';
+ }
+ const quote = options.quotes == 'double' ?
+ '"' :
+ (options.quotes == 'backtick' ?
+ '`' :
+ '\''
+ );
+ const compact = options.compact;
+ const lowercaseHex = options.lowercaseHex;
+ let indent = options.indent.repeat(options.indentLevel);
+ let oldIndent = '';
+ const inline1 = options.__inline1__;
+ const inline2 = options.__inline2__;
+ const newLine = compact ? '' : '\n';
+ let result;
+ let isEmpty = true;
+ const useBinNumbers = options.numbers == 'binary';
+ const useOctNumbers = options.numbers == 'octal';
+ const useDecNumbers = options.numbers == 'decimal';
+ const useHexNumbers = options.numbers == 'hexadecimal';
+
+ if (json && argument && isFunction(argument.toJSON)) {
+ argument = argument.toJSON();
+ }
+
+ if (!isString(argument)) {
+ if (isMap(argument)) {
+ if (argument.size == 0) {
+ return 'new Map()';
+ }
+ if (!compact) {
+ options.__inline1__ = true;
+ options.__inline2__ = false;
+ }
+ return 'new Map(' + jsesc(Array.from(argument), options) + ')';
+ }
+ if (isSet(argument)) {
+ if (argument.size == 0) {
+ return 'new Set()';
+ }
+ return 'new Set(' + jsesc(Array.from(argument), options) + ')';
+ }
+ if (isBuffer(argument)) {
+ if (argument.length == 0) {
+ return 'Buffer.from([])';
+ }
+ return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';
+ }
+ if (isArray(argument)) {
+ result = [];
+ options.wrap = true;
+ if (inline1) {
+ options.__inline1__ = false;
+ options.__inline2__ = true;
+ }
+ if (!inline2) {
+ increaseIndentation();
+ }
+ forEach(argument, (value) => {
+ isEmpty = false;
+ if (inline2) {
+ options.__inline2__ = false;
+ }
+ result.push(
+ (compact || inline2 ? '' : indent) +
+ jsesc(value, options)
+ );
+ });
+ if (isEmpty) {
+ return '[]';
+ }
+ if (inline2) {
+ return '[' + result.join(', ') + ']';
+ }
+ return '[' + newLine + result.join(',' + newLine) + newLine +
+ (compact ? '' : oldIndent) + ']';
+ } else if (isNumber(argument)) {
+ if (json) {
+ // Some number values (e.g. `Infinity`) cannot be represented in JSON.
+ return JSON.stringify(argument);
+ }
+ if (useDecNumbers) {
+ return String(argument);
+ }
+ if (useHexNumbers) {
+ let hexadecimal = argument.toString(16);
+ if (!lowercaseHex) {
+ hexadecimal = hexadecimal.toUpperCase();
+ }
+ return '0x' + hexadecimal;
+ }
+ if (useBinNumbers) {
+ return '0b' + argument.toString(2);
+ }
+ if (useOctNumbers) {
+ return '0o' + argument.toString(8);
+ }
+ } else if (!isObject(argument)) {
+ if (json) {
+ // For some values (e.g. `undefined`, `function` objects),
+ // `JSON.stringify(value)` returns `undefined` (which isn’t valid
+ // JSON) instead of `'null'`.
+ return JSON.stringify(argument) || 'null';
+ }
+ return String(argument);
+ } else { // it’s an object
+ result = [];
+ options.wrap = true;
+ increaseIndentation();
+ forOwn(argument, (key, value) => {
+ isEmpty = false;
+ result.push(
+ (compact ? '' : indent) +
+ jsesc(key, options) + ':' +
+ (compact ? '' : ' ') +
+ jsesc(value, options)
+ );
+ });
+ if (isEmpty) {
+ return '{}';
+ }
+ return '{' + newLine + result.join(',' + newLine) + newLine +
+ (compact ? '' : oldIndent) + '}';
+ }
+ }
+
+ const string = argument;
+ // Loop over each code unit in the string and escape it
+ let index = -1;
+ const length = string.length;
+ result = '';
+ while (++index < length) {
+ const character = string.charAt(index);
+ if (options.es6) {
+ const first = string.charCodeAt(index);
+ if ( // check if it’s the start of a surrogate pair
+ first >= 0xD800 && first <= 0xDBFF && // high surrogate
+ length > index + 1 // there is a next code unit
+ ) {
+ const second = string.charCodeAt(index + 1);
+ if (second >= 0xDC00 && second <= 0xDFFF) { // low surrogate
+ // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
+ const codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
+ let hexadecimal = codePoint.toString(16);
+ if (!lowercaseHex) {
+ hexadecimal = hexadecimal.toUpperCase();
+ }
+ result += '\\u{' + hexadecimal + '}';
+ ++index;
+ continue;
+ }
+ }
+ }
+ if (!options.escapeEverything) {
+ if (regexWhitelist.test(character)) {
+ // It’s a printable ASCII character that is not `"`, `'` or `\`,
+ // so don’t escape it.
+ result += character;
+ continue;
+ }
+ if (character == '"') {
+ result += quote == character ? '\\"' : character;
+ continue;
+ }
+ if (character == '`') {
+ result += quote == character ? '\\`' : character;
+ continue;
+ }
+ if (character == '\'') {
+ result += quote == character ? '\\\'' : character;
+ continue;
+ }
+ }
+ if (
+ character == '\0' &&
+ !json &&
+ !regexDigit.test(string.charAt(index + 1))
+ ) {
+ result += '\\0';
+ continue;
+ }
+ if (regexSingleEscape.test(character)) {
+ // no need for a `hasOwnProperty` check here
+ result += singleEscapes[character];
+ continue;
+ }
+ const charCode = character.charCodeAt(0);
+ if (options.minimal && charCode != 0x2028 && charCode != 0x2029) {
+ result += character;
+ continue;
+ }
+ let hexadecimal = charCode.toString(16);
+ if (!lowercaseHex) {
+ hexadecimal = hexadecimal.toUpperCase();
+ }
+ const longhand = hexadecimal.length > 2 || json;
+ const escaped = '\\' + (longhand ? 'u' : 'x') +
+ ('0000' + hexadecimal).slice(longhand ? -4 : -2);
+ result += escaped;
+ continue;
+ }
+ if (options.wrap) {
+ result = quote + result + quote;
+ }
+ if (quote == '`') {
+ result = result.replace(/\$\{/g, '\\\$\{');
+ }
+ if (options.isScriptContext) {
+ // https://mathiasbynens.be/notes/etago
+ return result
+ .replace(/<\/(script|style)/gi, '<\\/$1')
+ .replace(/<!--/g, json ? '\\u003C!--' : '\\x3C!--');
+ }
+ return result;
+};
+
+jsesc.version = '2.5.2';
+
+module.exports = jsesc;
diff --git a/tools/node_modules/eslint/node_modules/jsesc/man/jsesc.1 b/tools/node_modules/eslint/node_modules/jsesc/man/jsesc.1
new file mode 100644
index 0000000000..2655ee7ae7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/jsesc/man/jsesc.1
@@ -0,0 +1,94 @@
+.Dd May 13, 2016
+.Dt jsesc 1
+.Sh NAME
+.Nm jsesc
+.Nd escape strings for use in JavaScript string literals
+.Sh SYNOPSIS
+.Nm
+.Op Fl s | -single-quotes Ar string
+.br
+.Op Fl d | -double-quotes Ar string
+.br
+.Op Fl w | -wrap Ar string
+.br
+.Op Fl e | -escape-everything Ar string
+.br
+.Op Fl 6 | -es6 Ar string
+.br
+.Op Fl l | -lowercase-hex Ar string
+.br
+.Op Fl j | -json Ar string
+.br
+.Op Fl p | -object Ar string
+.br
+.Op Fl p | -pretty Ar string
+.br
+.Op Fl v | -version
+.br
+.Op Fl h | -help
+.Sh DESCRIPTION
+.Nm
+escapes strings for use in JavaScript string literals while generating the shortest possible valid ASCII-only output.
+.Sh OPTIONS
+.Bl -ohang -offset
+.It Sy "-s, --single-quotes"
+Escape any occurrences of ' in the input string as \\', so that the output can be used in a JavaScript string literal wrapped in single quotes.
+.It Sy "-d, --double-quotes"
+Escape any occurrences of " in the input string as \\", so that the output can be used in a JavaScript string literal wrapped in double quotes.
+.It Sy "-w, --wrap"
+Make sure the output is a valid JavaScript string literal wrapped in quotes. The type of quotes can be specified using the
+.Ar -s | --single-quotes
+or
+.Ar -d | --double-quotes
+settings.
+.It Sy "-6, --es6"
+Escape any astral Unicode symbols using ECMAScript 6 Unicode code point escape sequences.
+.It Sy "-e, --escape-everything"
+Escape all the symbols in the output, even printable ASCII symbols.
+.It Sy "-j, --json"
+Make sure the output is valid JSON. Hexadecimal character escape sequences and the \\v or \\0 escape sequences will not be used. Setting this flag enables the
+.Ar -d | --double-quotes
+and
+.Ar -w | --wrap
+settings.
+.It Sy "-o, --object"
+Treat the input as a JavaScript object rather than a string. Accepted values are flat arrays containing only string values, and flat objects containing only string values.
+.It Sy "-p, --pretty"
+Pretty-print the output for objects, using whitespace to make it more readable. Setting this flag enables the
+.It Sy "-l, --lowercase-hex"
+Use lowercase for alphabetical hexadecimal digits in escape sequences.
+.Ar -o | --object
+setting.
+.It Sy "-v, --version"
+Print jsesc's version.
+.It Sy "-h, --help"
+Show the help screen.
+.El
+.Sh EXIT STATUS
+The
+.Nm jsesc
+utility exits with one of the following values:
+.Pp
+.Bl -tag -width flag -compact
+.It Li 0
+.Nm
+successfully escaped the given string and printed the result.
+.It Li 1
+.Nm
+wasn't instructed to escape anything (for example, the
+.Ar --help
+flag was set); or, an error occurred.
+.El
+.Sh EXAMPLES
+.Bl -ohang -offset
+.It Sy "jsesc 'foo bar baz'"
+Print an escaped version of the given string.
+.It Sy echo\ 'foo bar baz'\ |\ jsesc
+Print an escaped version of the string that gets piped in.
+.El
+.Sh BUGS
+jsesc's bug tracker is located at <https://github.com/mathiasbynens/jsesc/issues>.
+.Sh AUTHOR
+Mathias Bynens <https://mathiasbynens.be/>
+.Sh WWW
+<https://mths.be/jsesc>
diff --git a/tools/node_modules/eslint/node_modules/jsesc/package.json b/tools/node_modules/eslint/node_modules/jsesc/package.json
new file mode 100644
index 0000000000..f89a7c62a0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/jsesc/package.json
@@ -0,0 +1,54 @@
+{
+ "name": "jsesc",
+ "version": "2.5.2",
+ "description": "Given some data, jsesc returns the shortest possible stringified & ASCII-safe representation of that data.",
+ "homepage": "https://mths.be/jsesc",
+ "engines": {
+ "node": ">=4"
+ },
+ "main": "jsesc.js",
+ "bin": "bin/jsesc",
+ "man": "man/jsesc.1",
+ "keywords": [
+ "buffer",
+ "escape",
+ "javascript",
+ "json",
+ "map",
+ "set",
+ "string",
+ "stringify",
+ "tool"
+ ],
+ "license": "MIT",
+ "author": {
+ "name": "Mathias Bynens",
+ "url": "https://mathiasbynens.be/"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/mathiasbynens/jsesc.git"
+ },
+ "bugs": "https://github.com/mathiasbynens/jsesc/issues",
+ "files": [
+ "LICENSE-MIT.txt",
+ "jsesc.js",
+ "bin/",
+ "man/"
+ ],
+ "scripts": {
+ "build": "grunt template",
+ "coveralls": "istanbul cover --verbose --dir 'coverage' 'tests/tests.js' && coveralls < coverage/lcov.info'",
+ "cover": "istanbul cover --report 'html' --verbose --dir 'coverage' 'tests/tests.js'",
+ "test": "mocha tests"
+ },
+ "devDependencies": {
+ "coveralls": "^2.11.6",
+ "grunt": "^0.4.5",
+ "grunt-template": "^0.2.3",
+ "istanbul": "^0.4.2",
+ "mocha": "*",
+ "regenerate": "^1.3.0",
+ "requirejs": "^2.1.22"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/json5/LICENSE.md b/tools/node_modules/eslint/node_modules/json5/LICENSE.md
new file mode 100644
index 0000000000..2171aca5a8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/LICENSE.md
@@ -0,0 +1,23 @@
+MIT License
+
+Copyright (c) 2012-2018 Aseem Kishore, and [others].
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+[others]: https://github.com/json5/json5/contributors
diff --git a/tools/node_modules/eslint/node_modules/json5/README.md b/tools/node_modules/eslint/node_modules/json5/README.md
new file mode 100644
index 0000000000..6049d02cf7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/README.md
@@ -0,0 +1,234 @@
+# JSON5 – JSON for Humans
+
+[![Build Status](https://travis-ci.com/json5/json5.svg)][Build Status]
+[![Coverage
+Status](https://coveralls.io/repos/github/json5/json5/badge.svg)][Coverage
+Status]
+
+The JSON5 Data Interchange Format (JSON5) is a superset of [JSON] that aims to
+alleviate some of the limitations of JSON by expanding its syntax to include
+some productions from [ECMAScript 5.1].
+
+This JavaScript library is the official reference implementation for JSON5
+parsing and serialization libraries.
+
+[Build Status]: https://travis-ci.com/json5/json5
+
+[Coverage Status]: https://coveralls.io/github/json5/json5
+
+[JSON]: https://tools.ietf.org/html/rfc7159
+
+[ECMAScript 5.1]: https://www.ecma-international.org/ecma-262/5.1/
+
+## Summary of Features
+The following ECMAScript 5.1 features, which are not supported in JSON, have
+been extended to JSON5.
+
+### Objects
+- Object keys may be an ECMAScript 5.1 _[IdentifierName]_.
+- Objects may have a single trailing comma.
+
+### Arrays
+- Arrays may have a single trailing comma.
+
+### Strings
+- Strings may be single quoted.
+- Strings may span multiple lines by escaping new line characters.
+- Strings may include character escapes.
+
+### Numbers
+- Numbers may be hexadecimal.
+- Numbers may have a leading or trailing decimal point.
+- Numbers may be [IEEE 754] positive infinity, negative infinity, and NaN.
+- Numbers may begin with an explicit plus sign.
+
+### Comments
+- Single and multi-line comments are allowed.
+
+### White Space
+- Additional white space characters are allowed.
+
+[IdentifierName]: https://www.ecma-international.org/ecma-262/5.1/#sec-7.6
+
+[IEEE 754]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
+
+## Short Example
+```js
+{
+ // comments
+ unquoted: 'and you can quote me on that',
+ singleQuotes: 'I can use "double quotes" here',
+ lineBreaks: "Look, Mom! \
+No \\n's!",
+ hexadecimal: 0xdecaf,
+ leadingDecimalPoint: .8675309, andTrailing: 8675309.,
+ positiveSign: +1,
+ trailingComma: 'in objects', andIn: ['arrays',],
+ "backwardsCompatible": "with JSON",
+}
+```
+
+## Specification
+For a detailed explanation of the JSON5 format, please read the [official
+specification](https://json5.github.io/json5-spec/).
+
+## Installation
+### Node.js
+```sh
+npm install json5
+```
+
+```js
+const JSON5 = require('json5')
+```
+
+### Browsers
+```html
+<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
+```
+
+This will create a global `JSON5` variable.
+
+## API
+The JSON5 API is compatible with the [JSON API].
+
+[JSON API]:
+https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
+
+### JSON5.parse()
+Parses a JSON5 string, constructing the JavaScript value or object described by
+the string. An optional reviver function can be provided to perform a
+transformation on the resulting object before it is returned.
+
+#### Syntax
+ JSON5.parse(text[, reviver])
+
+#### Parameters
+- `text`: The string to parse as JSON5.
+- `reviver`: If a function, this prescribes how the value originally produced by
+ parsing is transformed, before being returned.
+
+#### Return value
+The object corresponding to the given JSON5 text.
+
+### JSON5.stringify()
+Converts a JavaScript value to a JSON5 string, optionally replacing values if a
+replacer function is specified, or optionally including only the specified
+properties if a replacer array is specified.
+
+#### Syntax
+ JSON5.stringify(value[, replacer[, space]])
+ JSON5.stringify(value[, options])
+
+#### Parameters
+- `value`: The value to convert to a JSON5 string.
+- `replacer`: A function that alters the behavior of the stringification
+ process, or an array of String and Number objects that serve as a whitelist
+ for selecting/filtering the properties of the value object to be included in
+ the JSON5 string. If this value is null or not provided, all properties of the
+ object are included in the resulting JSON5 string.
+- `space`: A String or Number object that's used to insert white space into the
+ output JSON5 string for readability purposes. If this is a Number, it
+ indicates the number of space characters to use as white space; this number is
+ capped at 10 (if it is greater, the value is just 10). Values less than 1
+ indicate that no space should be used. If this is a String, the string (or the
+ first 10 characters of the string, if it's longer than that) is used as white
+ space. If this parameter is not provided (or is null), no white space is used.
+ If white space is used, trailing commas will be used in objects and arrays.
+- `options`: An object with the following properties:
+ - `replacer`: Same as the `replacer` parameter.
+ - `space`: Same as the `space` parameter.
+ - `quote`: A String representing the quote character to use when serializing
+ strings.
+
+#### Return value
+A JSON5 string representing the value.
+
+### Node.js `require()` JSON5 files
+When using Node.js, you can `require()` JSON5 files by adding the following
+statement.
+
+```js
+require('json5/lib/register')
+```
+
+Then you can load a JSON5 file with a Node.js `require()` statement. For
+example:
+
+```js
+const config = require('./config.json5')
+```
+
+## CLI
+Since JSON is more widely used than JSON5, this package includes a CLI for
+converting JSON5 to JSON and for validating the syntax of JSON5 documents.
+
+### Installation
+```sh
+npm install --global json5
+```
+
+### Usage
+```sh
+json5 [options] <file>
+```
+
+If `<file>` is not provided, then STDIN is used.
+
+#### Options:
+- `-s`, `--space`: The number of spaces to indent or `t` for tabs
+- `-o`, `--out-file [file]`: Output to the specified file, otherwise STDOUT
+- `-v`, `--validate`: Validate JSON5 but do not output JSON
+- `-V`, `--version`: Output the version number
+- `-h`, `--help`: Output usage information
+
+## Contributing
+### Development
+```sh
+git clone https://github.com/json5/json5
+cd json5
+npm install
+```
+
+When contributing code, please write relevant tests and run `npm test` and `npm
+run lint` before submitting pull requests. Please use an editor that supports
+[EditorConfig](http://editorconfig.org/).
+
+### Issues
+To report bugs or request features regarding the JSON5 data format, please
+submit an issue to the [official specification
+repository](https://github.com/json5/json5-spec).
+
+To report bugs or request features regarding the JavaScript implementation of
+JSON5, please submit an issue to this repository.
+
+## License
+MIT. See [LICENSE.md](./LICENSE.md) for details.
+
+## Credits
+[Assem Kishore](https://github.com/aseemk) founded this project.
+
+[Michael Bolin](http://bolinfest.com/) independently arrived at and published
+some of these same ideas with awesome explanations and detail. Recommended
+reading: [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
+
+[Douglas Crockford](http://www.crockford.com/) of course designed and built
+JSON, but his state machine diagrams on the [JSON website](http://json.org/), as
+cheesy as it may sound, gave us motivation and confidence that building a new
+parser to implement these ideas was within reach! The original
+implementation of JSON5 was also modeled directly off of Doug’s open-source
+[json_parse.js] parser. We’re grateful for that clean and well-documented
+code.
+
+[json_parse.js]:
+https://github.com/douglascrockford/JSON-js/blob/03157639c7a7cddd2e9f032537f346f1a87c0f6d/json_parse.js
+
+[Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific
+supporter, contributing multiple patches and ideas.
+
+[Andrew Eisenberg](https://github.com/aeisenberg) contributed the original
+`stringify` method.
+
+[Jordan Tucker](https://github.com/jordanbtucker) has aligned JSON5 more closely
+with ES5, wrote the official JSON5 specification, completely rewrote the
+codebase from the ground up, and is actively maintaining this project.
diff --git a/tools/node_modules/eslint/node_modules/json5/dist/index.js b/tools/node_modules/eslint/node_modules/json5/dist/index.js
new file mode 100644
index 0000000000..9f98eb39da
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/dist/index.js
@@ -0,0 +1,1710 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global.JSON5 = factory());
+}(this, (function () { 'use strict';
+
+ function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+ }
+
+ var _global = createCommonjsModule(function (module) {
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self
+ // eslint-disable-next-line no-new-func
+ : Function('return this')();
+ if (typeof __g == 'number') { __g = global; } // eslint-disable-line no-undef
+ });
+
+ var _core = createCommonjsModule(function (module) {
+ var core = module.exports = { version: '2.6.5' };
+ if (typeof __e == 'number') { __e = core; } // eslint-disable-line no-undef
+ });
+ var _core_1 = _core.version;
+
+ var _isObject = function (it) {
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
+
+ var _anObject = function (it) {
+ if (!_isObject(it)) { throw TypeError(it + ' is not an object!'); }
+ return it;
+ };
+
+ var _fails = function (exec) {
+ try {
+ return !!exec();
+ } catch (e) {
+ return true;
+ }
+ };
+
+ // Thank's IE8 for his funny defineProperty
+ var _descriptors = !_fails(function () {
+ return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
+ });
+
+ var document = _global.document;
+ // typeof document.createElement is 'object' in old IE
+ var is = _isObject(document) && _isObject(document.createElement);
+ var _domCreate = function (it) {
+ return is ? document.createElement(it) : {};
+ };
+
+ var _ie8DomDefine = !_descriptors && !_fails(function () {
+ return Object.defineProperty(_domCreate('div'), 'a', { get: function () { return 7; } }).a != 7;
+ });
+
+ // 7.1.1 ToPrimitive(input [, PreferredType])
+
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
+ // and the second argument - flag - preferred type is a string
+ var _toPrimitive = function (it, S) {
+ if (!_isObject(it)) { return it; }
+ var fn, val;
+ if (S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }
+ if (typeof (fn = it.valueOf) == 'function' && !_isObject(val = fn.call(it))) { return val; }
+ if (!S && typeof (fn = it.toString) == 'function' && !_isObject(val = fn.call(it))) { return val; }
+ throw TypeError("Can't convert object to primitive value");
+ };
+
+ var dP = Object.defineProperty;
+
+ var f = _descriptors ? Object.defineProperty : function defineProperty(O, P, Attributes) {
+ _anObject(O);
+ P = _toPrimitive(P, true);
+ _anObject(Attributes);
+ if (_ie8DomDefine) { try {
+ return dP(O, P, Attributes);
+ } catch (e) { /* empty */ } }
+ if ('get' in Attributes || 'set' in Attributes) { throw TypeError('Accessors not supported!'); }
+ if ('value' in Attributes) { O[P] = Attributes.value; }
+ return O;
+ };
+
+ var _objectDp = {
+ f: f
+ };
+
+ var _propertyDesc = function (bitmap, value) {
+ return {
+ enumerable: !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable: !(bitmap & 4),
+ value: value
+ };
+ };
+
+ var _hide = _descriptors ? function (object, key, value) {
+ return _objectDp.f(object, key, _propertyDesc(1, value));
+ } : function (object, key, value) {
+ object[key] = value;
+ return object;
+ };
+
+ var hasOwnProperty = {}.hasOwnProperty;
+ var _has = function (it, key) {
+ return hasOwnProperty.call(it, key);
+ };
+
+ var id = 0;
+ var px = Math.random();
+ var _uid = function (key) {
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+ };
+
+ var _library = false;
+
+ var _shared = createCommonjsModule(function (module) {
+ var SHARED = '__core-js_shared__';
+ var store = _global[SHARED] || (_global[SHARED] = {});
+
+ (module.exports = function (key, value) {
+ return store[key] || (store[key] = value !== undefined ? value : {});
+ })('versions', []).push({
+ version: _core.version,
+ mode: _library ? 'pure' : 'global',
+ copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
+ });
+ });
+
+ var _functionToString = _shared('native-function-to-string', Function.toString);
+
+ var _redefine = createCommonjsModule(function (module) {
+ var SRC = _uid('src');
+
+ var TO_STRING = 'toString';
+ var TPL = ('' + _functionToString).split(TO_STRING);
+
+ _core.inspectSource = function (it) {
+ return _functionToString.call(it);
+ };
+
+ (module.exports = function (O, key, val, safe) {
+ var isFunction = typeof val == 'function';
+ if (isFunction) { _has(val, 'name') || _hide(val, 'name', key); }
+ if (O[key] === val) { return; }
+ if (isFunction) { _has(val, SRC) || _hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); }
+ if (O === _global) {
+ O[key] = val;
+ } else if (!safe) {
+ delete O[key];
+ _hide(O, key, val);
+ } else if (O[key]) {
+ O[key] = val;
+ } else {
+ _hide(O, key, val);
+ }
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+ })(Function.prototype, TO_STRING, function toString() {
+ return typeof this == 'function' && this[SRC] || _functionToString.call(this);
+ });
+ });
+
+ var _aFunction = function (it) {
+ if (typeof it != 'function') { throw TypeError(it + ' is not a function!'); }
+ return it;
+ };
+
+ // optional / simple context binding
+
+ var _ctx = function (fn, that, length) {
+ _aFunction(fn);
+ if (that === undefined) { return fn; }
+ switch (length) {
+ case 1: return function (a) {
+ return fn.call(that, a);
+ };
+ case 2: return function (a, b) {
+ return fn.call(that, a, b);
+ };
+ case 3: return function (a, b, c) {
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function (/* ...args */) {
+ return fn.apply(that, arguments);
+ };
+ };
+
+ var PROTOTYPE = 'prototype';
+
+ var $export = function (type, name, source) {
+ var IS_FORCED = type & $export.F;
+ var IS_GLOBAL = type & $export.G;
+ var IS_STATIC = type & $export.S;
+ var IS_PROTO = type & $export.P;
+ var IS_BIND = type & $export.B;
+ var target = IS_GLOBAL ? _global : IS_STATIC ? _global[name] || (_global[name] = {}) : (_global[name] || {})[PROTOTYPE];
+ var exports = IS_GLOBAL ? _core : _core[name] || (_core[name] = {});
+ var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
+ var key, own, out, exp;
+ if (IS_GLOBAL) { source = name; }
+ for (key in source) {
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? _ctx(out, _global) : IS_PROTO && typeof out == 'function' ? _ctx(Function.call, out) : out;
+ // extend global
+ if (target) { _redefine(target, key, out, type & $export.U); }
+ // export
+ if (exports[key] != out) { _hide(exports, key, exp); }
+ if (IS_PROTO && expProto[key] != out) { expProto[key] = out; }
+ }
+ };
+ _global.core = _core;
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ $export.U = 64; // safe
+ $export.R = 128; // real proto method for `library`
+ var _export = $export;
+
+ // 7.1.4 ToInteger
+ var ceil = Math.ceil;
+ var floor = Math.floor;
+ var _toInteger = function (it) {
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+ };
+
+ // 7.2.1 RequireObjectCoercible(argument)
+ var _defined = function (it) {
+ if (it == undefined) { throw TypeError("Can't call method on " + it); }
+ return it;
+ };
+
+ // true -> String#at
+ // false -> String#codePointAt
+ var _stringAt = function (TO_STRING) {
+ return function (that, pos) {
+ var s = String(_defined(that));
+ var i = _toInteger(pos);
+ var l = s.length;
+ var a, b;
+ if (i < 0 || i >= l) { return TO_STRING ? '' : undefined; }
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+ };
+
+ var $at = _stringAt(false);
+ _export(_export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos) {
+ return $at(this, pos);
+ }
+ });
+
+ var codePointAt = _core.String.codePointAt;
+
+ var max = Math.max;
+ var min = Math.min;
+ var _toAbsoluteIndex = function (index, length) {
+ index = _toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+ };
+
+ var fromCharCode = String.fromCharCode;
+ var $fromCodePoint = String.fromCodePoint;
+
+ // length should be 1, old FF problem
+ _export(_export.S + _export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x) {
+ var arguments$1 = arguments;
+ // eslint-disable-line no-unused-vars
+ var res = [];
+ var aLen = arguments.length;
+ var i = 0;
+ var code;
+ while (aLen > i) {
+ code = +arguments$1[i++];
+ if (_toAbsoluteIndex(code, 0x10ffff) !== code) { throw RangeError(code + ' is not a valid code point'); }
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+ });
+
+ var fromCodePoint = _core.String.fromCodePoint;
+
+ // This is a generated file. Do not edit.
+ var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
+ var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
+ var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
+
+ var unicode = {
+ Space_Separator: Space_Separator,
+ ID_Start: ID_Start,
+ ID_Continue: ID_Continue
+ };
+
+ var util = {
+ isSpaceSeparator: function isSpaceSeparator (c) {
+ return typeof c === 'string' && unicode.Space_Separator.test(c)
+ },
+
+ isIdStartChar: function isIdStartChar (c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c === '$') || (c === '_') ||
+ unicode.ID_Start.test(c)
+ )
+ },
+
+ isIdContinueChar: function isIdContinueChar (c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= '0' && c <= '9') ||
+ (c === '$') || (c === '_') ||
+ (c === '\u200C') || (c === '\u200D') ||
+ unicode.ID_Continue.test(c)
+ )
+ },
+
+ isDigit: function isDigit (c) {
+ return typeof c === 'string' && /[0-9]/.test(c)
+ },
+
+ isHexDigit: function isHexDigit (c) {
+ return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
+ },
+ };
+
+ var source;
+ var parseState;
+ var stack;
+ var pos;
+ var line;
+ var column;
+ var token;
+ var key;
+ var root;
+
+ var parse = function parse (text, reviver) {
+ source = String(text);
+ parseState = 'start';
+ stack = [];
+ pos = 0;
+ line = 1;
+ column = 0;
+ token = undefined;
+ key = undefined;
+ root = undefined;
+
+ do {
+ token = lex();
+
+ // This code is unreachable.
+ // if (!parseStates[parseState]) {
+ // throw invalidParseState()
+ // }
+
+ parseStates[parseState]();
+ } while (token.type !== 'eof')
+
+ if (typeof reviver === 'function') {
+ return internalize({'': root}, '', reviver)
+ }
+
+ return root
+ };
+
+ function internalize (holder, name, reviver) {
+ var value = holder[name];
+ if (value != null && typeof value === 'object') {
+ for (var key in value) {
+ var replacement = internalize(value, key, reviver);
+ if (replacement === undefined) {
+ delete value[key];
+ } else {
+ value[key] = replacement;
+ }
+ }
+ }
+
+ return reviver.call(holder, name, value)
+ }
+
+ var lexState;
+ var buffer;
+ var doubleQuote;
+ var sign;
+ var c;
+
+ function lex () {
+ lexState = 'default';
+ buffer = '';
+ doubleQuote = false;
+ sign = 1;
+
+ for (;;) {
+ c = peek();
+
+ // This code is unreachable.
+ // if (!lexStates[lexState]) {
+ // throw invalidLexState(lexState)
+ // }
+
+ var token = lexStates[lexState]();
+ if (token) {
+ return token
+ }
+ }
+ }
+
+ function peek () {
+ if (source[pos]) {
+ return String.fromCodePoint(source.codePointAt(pos))
+ }
+ }
+
+ function read () {
+ var c = peek();
+
+ if (c === '\n') {
+ line++;
+ column = 0;
+ } else if (c) {
+ column += c.length;
+ } else {
+ column++;
+ }
+
+ if (c) {
+ pos += c.length;
+ }
+
+ return c
+ }
+
+ var lexStates = {
+ default: function default$1 () {
+ switch (c) {
+ case '\t':
+ case '\v':
+ case '\f':
+ case ' ':
+ case '\u00A0':
+ case '\uFEFF':
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read();
+ return
+
+ case '/':
+ read();
+ lexState = 'comment';
+ return
+
+ case undefined:
+ read();
+ return newToken('eof')
+ }
+
+ if (util.isSpaceSeparator(c)) {
+ read();
+ return
+ }
+
+ // This code is unreachable.
+ // if (!lexStates[parseState]) {
+ // throw invalidLexState(parseState)
+ // }
+
+ return lexStates[parseState]()
+ },
+
+ comment: function comment () {
+ switch (c) {
+ case '*':
+ read();
+ lexState = 'multiLineComment';
+ return
+
+ case '/':
+ read();
+ lexState = 'singleLineComment';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ multiLineComment: function multiLineComment () {
+ switch (c) {
+ case '*':
+ read();
+ lexState = 'multiLineCommentAsterisk';
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read();
+ },
+
+ multiLineCommentAsterisk: function multiLineCommentAsterisk () {
+ switch (c) {
+ case '*':
+ read();
+ return
+
+ case '/':
+ read();
+ lexState = 'default';
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read();
+ lexState = 'multiLineComment';
+ },
+
+ singleLineComment: function singleLineComment () {
+ switch (c) {
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read();
+ lexState = 'default';
+ return
+
+ case undefined:
+ read();
+ return newToken('eof')
+ }
+
+ read();
+ },
+
+ value: function value () {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ case 'n':
+ read();
+ literal('ull');
+ return newToken('null', null)
+
+ case 't':
+ read();
+ literal('rue');
+ return newToken('boolean', true)
+
+ case 'f':
+ read();
+ literal('alse');
+ return newToken('boolean', false)
+
+ case '-':
+ case '+':
+ if (read() === '-') {
+ sign = -1;
+ }
+
+ lexState = 'sign';
+ return
+
+ case '.':
+ buffer = read();
+ lexState = 'decimalPointLeading';
+ return
+
+ case '0':
+ buffer = read();
+ lexState = 'zero';
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read();
+ lexState = 'decimalInteger';
+ return
+
+ case 'I':
+ read();
+ literal('nfinity');
+ return newToken('numeric', Infinity)
+
+ case 'N':
+ read();
+ literal('aN');
+ return newToken('numeric', NaN)
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"');
+ buffer = '';
+ lexState = 'string';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ identifierNameStartEscape: function identifierNameStartEscape () {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read();
+ var u = unicodeEscape();
+ switch (u) {
+ case '$':
+ case '_':
+ break
+
+ default:
+ if (!util.isIdStartChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u;
+ lexState = 'identifierName';
+ },
+
+ identifierName: function identifierName () {
+ switch (c) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ buffer += read();
+ return
+
+ case '\\':
+ read();
+ lexState = 'identifierNameEscape';
+ return
+ }
+
+ if (util.isIdContinueChar(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('identifier', buffer)
+ },
+
+ identifierNameEscape: function identifierNameEscape () {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read();
+ var u = unicodeEscape();
+ switch (u) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ break
+
+ default:
+ if (!util.isIdContinueChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u;
+ lexState = 'identifierName';
+ },
+
+ sign: function sign$1 () {
+ switch (c) {
+ case '.':
+ buffer = read();
+ lexState = 'decimalPointLeading';
+ return
+
+ case '0':
+ buffer = read();
+ lexState = 'zero';
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read();
+ lexState = 'decimalInteger';
+ return
+
+ case 'I':
+ read();
+ literal('nfinity');
+ return newToken('numeric', sign * Infinity)
+
+ case 'N':
+ read();
+ literal('aN');
+ return newToken('numeric', NaN)
+ }
+
+ throw invalidChar(read())
+ },
+
+ zero: function zero () {
+ switch (c) {
+ case '.':
+ buffer += read();
+ lexState = 'decimalPoint';
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+
+ case 'x':
+ case 'X':
+ buffer += read();
+ lexState = 'hexadecimal';
+ return
+ }
+
+ return newToken('numeric', sign * 0)
+ },
+
+ decimalInteger: function decimalInteger () {
+ switch (c) {
+ case '.':
+ buffer += read();
+ lexState = 'decimalPoint';
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalPointLeading: function decimalPointLeading () {
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalFraction';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalPoint: function decimalPoint () {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalFraction';
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalFraction: function decimalFraction () {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalExponent: function decimalExponent () {
+ switch (c) {
+ case '+':
+ case '-':
+ buffer += read();
+ lexState = 'decimalExponentSign';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalExponentInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentSign: function decimalExponentSign () {
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalExponentInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentInteger: function decimalExponentInteger () {
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ hexadecimal: function hexadecimal () {
+ if (util.isHexDigit(c)) {
+ buffer += read();
+ lexState = 'hexadecimalInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ hexadecimalInteger: function hexadecimalInteger () {
+ if (util.isHexDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ string: function string () {
+ switch (c) {
+ case '\\':
+ read();
+ buffer += escape();
+ return
+
+ case '"':
+ if (doubleQuote) {
+ read();
+ return newToken('string', buffer)
+ }
+
+ buffer += read();
+ return
+
+ case "'":
+ if (!doubleQuote) {
+ read();
+ return newToken('string', buffer)
+ }
+
+ buffer += read();
+ return
+
+ case '\n':
+ case '\r':
+ throw invalidChar(read())
+
+ case '\u2028':
+ case '\u2029':
+ separatorChar(c);
+ break
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+ },
+
+ start: function start () {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ // This code is unreachable since the default lexState handles eof.
+ // case undefined:
+ // return newToken('eof')
+ }
+
+ lexState = 'value';
+ },
+
+ beforePropertyName: function beforePropertyName () {
+ switch (c) {
+ case '$':
+ case '_':
+ buffer = read();
+ lexState = 'identifierName';
+ return
+
+ case '\\':
+ read();
+ lexState = 'identifierNameStartEscape';
+ return
+
+ case '}':
+ return newToken('punctuator', read())
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"');
+ lexState = 'string';
+ return
+ }
+
+ if (util.isIdStartChar(c)) {
+ buffer += read();
+ lexState = 'identifierName';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ afterPropertyName: function afterPropertyName () {
+ if (c === ':') {
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforePropertyValue: function beforePropertyValue () {
+ lexState = 'value';
+ },
+
+ afterPropertyValue: function afterPropertyValue () {
+ switch (c) {
+ case ',':
+ case '}':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforeArrayValue: function beforeArrayValue () {
+ if (c === ']') {
+ return newToken('punctuator', read())
+ }
+
+ lexState = 'value';
+ },
+
+ afterArrayValue: function afterArrayValue () {
+ switch (c) {
+ case ',':
+ case ']':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ end: function end () {
+ // This code is unreachable since it's handled by the default lexState.
+ // if (c === undefined) {
+ // read()
+ // return newToken('eof')
+ // }
+
+ throw invalidChar(read())
+ },
+ };
+
+ function newToken (type, value) {
+ return {
+ type: type,
+ value: value,
+ line: line,
+ column: column,
+ }
+ }
+
+ function literal (s) {
+ for (var i = 0, list = s; i < list.length; i += 1) {
+ var c = list[i];
+
+ var p = peek();
+
+ if (p !== c) {
+ throw invalidChar(read())
+ }
+
+ read();
+ }
+ }
+
+ function escape () {
+ var c = peek();
+ switch (c) {
+ case 'b':
+ read();
+ return '\b'
+
+ case 'f':
+ read();
+ return '\f'
+
+ case 'n':
+ read();
+ return '\n'
+
+ case 'r':
+ read();
+ return '\r'
+
+ case 't':
+ read();
+ return '\t'
+
+ case 'v':
+ read();
+ return '\v'
+
+ case '0':
+ read();
+ if (util.isDigit(peek())) {
+ throw invalidChar(read())
+ }
+
+ return '\0'
+
+ case 'x':
+ read();
+ return hexEscape()
+
+ case 'u':
+ read();
+ return unicodeEscape()
+
+ case '\n':
+ case '\u2028':
+ case '\u2029':
+ read();
+ return ''
+
+ case '\r':
+ read();
+ if (peek() === '\n') {
+ read();
+ }
+
+ return ''
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ throw invalidChar(read())
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ return read()
+ }
+
+ function hexEscape () {
+ var buffer = '';
+ var c = peek();
+
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+
+ c = peek();
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+ }
+
+ function unicodeEscape () {
+ var buffer = '';
+ var count = 4;
+
+ while (count-- > 0) {
+ var c = peek();
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+ }
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+ }
+
+ var parseStates = {
+ start: function start () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push();
+ },
+
+ beforePropertyName: function beforePropertyName () {
+ switch (token.type) {
+ case 'identifier':
+ case 'string':
+ key = token.value;
+ parseState = 'afterPropertyName';
+ return
+
+ case 'punctuator':
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.value !== '}') {
+ // throw invalidToken()
+ // }
+
+ pop();
+ return
+
+ case 'eof':
+ throw invalidEOF()
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterPropertyName: function afterPropertyName () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator' || token.value !== ':') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ parseState = 'beforePropertyValue';
+ },
+
+ beforePropertyValue: function beforePropertyValue () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push();
+ },
+
+ beforeArrayValue: function beforeArrayValue () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ if (token.type === 'punctuator' && token.value === ']') {
+ pop();
+ return
+ }
+
+ push();
+ },
+
+ afterPropertyValue: function afterPropertyValue () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforePropertyName';
+ return
+
+ case '}':
+ pop();
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterArrayValue: function afterArrayValue () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforeArrayValue';
+ return
+
+ case ']':
+ pop();
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ end: function end () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'eof') {
+ // throw invalidToken()
+ // }
+ },
+ };
+
+ function push () {
+ var value;
+
+ switch (token.type) {
+ case 'punctuator':
+ switch (token.value) {
+ case '{':
+ value = {};
+ break
+
+ case '[':
+ value = [];
+ break
+ }
+
+ break
+
+ case 'null':
+ case 'boolean':
+ case 'numeric':
+ case 'string':
+ value = token.value;
+ break
+
+ // This code is unreachable.
+ // default:
+ // throw invalidToken()
+ }
+
+ if (root === undefined) {
+ root = value;
+ } else {
+ var parent = stack[stack.length - 1];
+ if (Array.isArray(parent)) {
+ parent.push(value);
+ } else {
+ parent[key] = value;
+ }
+ }
+
+ if (value !== null && typeof value === 'object') {
+ stack.push(value);
+
+ if (Array.isArray(value)) {
+ parseState = 'beforeArrayValue';
+ } else {
+ parseState = 'beforePropertyName';
+ }
+ } else {
+ var current = stack[stack.length - 1];
+ if (current == null) {
+ parseState = 'end';
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue';
+ } else {
+ parseState = 'afterPropertyValue';
+ }
+ }
+ }
+
+ function pop () {
+ stack.pop();
+
+ var current = stack[stack.length - 1];
+ if (current == null) {
+ parseState = 'end';
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue';
+ } else {
+ parseState = 'afterPropertyValue';
+ }
+ }
+
+ // This code is unreachable.
+ // function invalidParseState () {
+ // return new Error(`JSON5: invalid parse state '${parseState}'`)
+ // }
+
+ // This code is unreachable.
+ // function invalidLexState (state) {
+ // return new Error(`JSON5: invalid lex state '${state}'`)
+ // }
+
+ function invalidChar (c) {
+ if (c === undefined) {
+ return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
+ }
+
+ return syntaxError(("JSON5: invalid character '" + (formatChar(c)) + "' at " + line + ":" + column))
+ }
+
+ function invalidEOF () {
+ return syntaxError(("JSON5: invalid end of input at " + line + ":" + column))
+ }
+
+ // This code is unreachable.
+ // function invalidToken () {
+ // if (token.type === 'eof') {
+ // return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+ // }
+
+ // const c = String.fromCodePoint(token.value.codePointAt(0))
+ // return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
+ // }
+
+ function invalidIdentifier () {
+ column -= 5;
+ return syntaxError(("JSON5: invalid identifier character at " + line + ":" + column))
+ }
+
+ function separatorChar (c) {
+ console.warn(("JSON5: '" + (formatChar(c)) + "' in strings is not valid ECMAScript; consider escaping"));
+ }
+
+ function formatChar (c) {
+ var replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ };
+
+ if (replacements[c]) {
+ return replacements[c]
+ }
+
+ if (c < ' ') {
+ var hexString = c.charCodeAt(0).toString(16);
+ return '\\x' + ('00' + hexString).substring(hexString.length)
+ }
+
+ return c
+ }
+
+ function syntaxError (message) {
+ var err = new SyntaxError(message);
+ err.lineNumber = line;
+ err.columnNumber = column;
+ return err
+ }
+
+ var stringify = function stringify (value, replacer, space) {
+ var stack = [];
+ var indent = '';
+ var propertyList;
+ var replacerFunc;
+ var gap = '';
+ var quote;
+
+ if (
+ replacer != null &&
+ typeof replacer === 'object' &&
+ !Array.isArray(replacer)
+ ) {
+ space = replacer.space;
+ quote = replacer.quote;
+ replacer = replacer.replacer;
+ }
+
+ if (typeof replacer === 'function') {
+ replacerFunc = replacer;
+ } else if (Array.isArray(replacer)) {
+ propertyList = [];
+ for (var i = 0, list = replacer; i < list.length; i += 1) {
+ var v = list[i];
+
+ var item = (void 0);
+
+ if (typeof v === 'string') {
+ item = v;
+ } else if (
+ typeof v === 'number' ||
+ v instanceof String ||
+ v instanceof Number
+ ) {
+ item = String(v);
+ }
+
+ if (item !== undefined && propertyList.indexOf(item) < 0) {
+ propertyList.push(item);
+ }
+ }
+ }
+
+ if (space instanceof Number) {
+ space = Number(space);
+ } else if (space instanceof String) {
+ space = String(space);
+ }
+
+ if (typeof space === 'number') {
+ if (space > 0) {
+ space = Math.min(10, Math.floor(space));
+ gap = ' '.substr(0, space);
+ }
+ } else if (typeof space === 'string') {
+ gap = space.substr(0, 10);
+ }
+
+ return serializeProperty('', {'': value})
+
+ function serializeProperty (key, holder) {
+ var value = holder[key];
+ if (value != null) {
+ if (typeof value.toJSON5 === 'function') {
+ value = value.toJSON5(key);
+ } else if (typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+ }
+
+ if (replacerFunc) {
+ value = replacerFunc.call(holder, key, value);
+ }
+
+ if (value instanceof Number) {
+ value = Number(value);
+ } else if (value instanceof String) {
+ value = String(value);
+ } else if (value instanceof Boolean) {
+ value = value.valueOf();
+ }
+
+ switch (value) {
+ case null: return 'null'
+ case true: return 'true'
+ case false: return 'false'
+ }
+
+ if (typeof value === 'string') {
+ return quoteString(value, false)
+ }
+
+ if (typeof value === 'number') {
+ return String(value)
+ }
+
+ if (typeof value === 'object') {
+ return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
+ }
+
+ return undefined
+ }
+
+ function quoteString (value) {
+ var quotes = {
+ "'": 0.1,
+ '"': 0.2,
+ };
+
+ var replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ };
+
+ var product = '';
+
+ for (var i = 0; i < value.length; i++) {
+ var c = value[i];
+ switch (c) {
+ case "'":
+ case '"':
+ quotes[c]++;
+ product += c;
+ continue
+
+ case '\0':
+ if (util.isDigit(value[i + 1])) {
+ product += '\\x00';
+ continue
+ }
+ }
+
+ if (replacements[c]) {
+ product += replacements[c];
+ continue
+ }
+
+ if (c < ' ') {
+ var hexString = c.charCodeAt(0).toString(16);
+ product += '\\x' + ('00' + hexString).substring(hexString.length);
+ continue
+ }
+
+ product += c;
+ }
+
+ var quoteChar = quote || Object.keys(quotes).reduce(function (a, b) { return (quotes[a] < quotes[b]) ? a : b; });
+
+ product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
+
+ return quoteChar + product + quoteChar
+ }
+
+ function serializeObject (value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value);
+
+ var stepback = indent;
+ indent = indent + gap;
+
+ var keys = propertyList || Object.keys(value);
+ var partial = [];
+ for (var i = 0, list = keys; i < list.length; i += 1) {
+ var key = list[i];
+
+ var propertyString = serializeProperty(key, value);
+ if (propertyString !== undefined) {
+ var member = serializeKey(key) + ':';
+ if (gap !== '') {
+ member += ' ';
+ }
+ member += propertyString;
+ partial.push(member);
+ }
+ }
+
+ var final;
+ if (partial.length === 0) {
+ final = '{}';
+ } else {
+ var properties;
+ if (gap === '') {
+ properties = partial.join(',');
+ final = '{' + properties + '}';
+ } else {
+ var separator = ',\n' + indent;
+ properties = partial.join(separator);
+ final = '{\n' + indent + properties + ',\n' + stepback + '}';
+ }
+ }
+
+ stack.pop();
+ indent = stepback;
+ return final
+ }
+
+ function serializeKey (key) {
+ if (key.length === 0) {
+ return quoteString(key, true)
+ }
+
+ var firstChar = String.fromCodePoint(key.codePointAt(0));
+ if (!util.isIdStartChar(firstChar)) {
+ return quoteString(key, true)
+ }
+
+ for (var i = firstChar.length; i < key.length; i++) {
+ if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
+ return quoteString(key, true)
+ }
+ }
+
+ return key
+ }
+
+ function serializeArray (value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value);
+
+ var stepback = indent;
+ indent = indent + gap;
+
+ var partial = [];
+ for (var i = 0; i < value.length; i++) {
+ var propertyString = serializeProperty(String(i), value);
+ partial.push((propertyString !== undefined) ? propertyString : 'null');
+ }
+
+ var final;
+ if (partial.length === 0) {
+ final = '[]';
+ } else {
+ if (gap === '') {
+ var properties = partial.join(',');
+ final = '[' + properties + ']';
+ } else {
+ var separator = ',\n' + indent;
+ var properties$1 = partial.join(separator);
+ final = '[\n' + indent + properties$1 + ',\n' + stepback + ']';
+ }
+ }
+
+ stack.pop();
+ indent = stepback;
+ return final
+ }
+ };
+
+ var JSON5 = {
+ parse: parse,
+ stringify: stringify,
+ };
+
+ var lib = JSON5;
+
+ var es5 = lib;
+
+ return es5;
+
+})));
diff --git a/tools/node_modules/eslint/node_modules/json5/dist/index.min.js b/tools/node_modules/eslint/node_modules/json5/dist/index.min.js
new file mode 100644
index 0000000000..da63a9da38
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/dist/index.min.js
@@ -0,0 +1 @@
+!function(u,D){"object"==typeof exports&&"undefined"!=typeof module?module.exports=D():"function"==typeof define&&define.amd?define(D):u.JSON5=D()}(this,function(){"use strict";function u(u,D){return u(D={exports:{}},D.exports),D.exports}var D=u(function(u){var D=u.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=D)}),e=u(function(u){var D=u.exports={version:"2.6.5"};"number"==typeof __e&&(__e=D)}),t=(e.version,function(u){return"object"==typeof u?null!==u:"function"==typeof u}),r=function(u){if(!t(u))throw TypeError(u+" is not an object!");return u},F=function(u){try{return!!u()}catch(u){return!0}},n=!F(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a}),C=D.document,A=t(C)&&t(C.createElement),i=!n&&!F(function(){return 7!=Object.defineProperty((u="div",A?C.createElement(u):{}),"a",{get:function(){return 7}}).a;var u}),E=Object.defineProperty,o={f:n?Object.defineProperty:function(u,D,e){if(r(u),D=function(u,D){if(!t(u))return u;var e,r;if(D&&"function"==typeof(e=u.toString)&&!t(r=e.call(u)))return r;if("function"==typeof(e=u.valueOf)&&!t(r=e.call(u)))return r;if(!D&&"function"==typeof(e=u.toString)&&!t(r=e.call(u)))return r;throw TypeError("Can't convert object to primitive value")}(D,!0),r(e),i)try{return E(u,D,e)}catch(u){}if("get"in e||"set"in e)throw TypeError("Accessors not supported!");return"value"in e&&(u[D]=e.value),u}},a=n?function(u,D,e){return o.f(u,D,function(u,D){return{enumerable:!(1&u),configurable:!(2&u),writable:!(4&u),value:D}}(1,e))}:function(u,D,e){return u[D]=e,u},c={}.hasOwnProperty,B=function(u,D){return c.call(u,D)},s=0,f=Math.random(),l=u(function(u){var t=D["__core-js_shared__"]||(D["__core-js_shared__"]={});(u.exports=function(u,D){return t[u]||(t[u]=void 0!==D?D:{})})("versions",[]).push({version:e.version,mode:"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})})("native-function-to-string",Function.toString),d=u(function(u){var t,r="Symbol(".concat(void 0===(t="src")?"":t,")_",(++s+f).toString(36)),F=(""+l).split("toString");e.inspectSource=function(u){return l.call(u)},(u.exports=function(u,e,t,n){var C="function"==typeof t;C&&(B(t,"name")||a(t,"name",e)),u[e]!==t&&(C&&(B(t,r)||a(t,r,u[e]?""+u[e]:F.join(String(e)))),u===D?u[e]=t:n?u[e]?u[e]=t:a(u,e,t):(delete u[e],a(u,e,t)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[r]||l.call(this)})}),v=function(u,D,e){if(function(u){if("function"!=typeof u)throw TypeError(u+" is not a function!")}(u),void 0===D)return u;switch(e){case 1:return function(e){return u.call(D,e)};case 2:return function(e,t){return u.call(D,e,t)};case 3:return function(e,t,r){return u.call(D,e,t,r)}}return function(){return u.apply(D,arguments)}},p=function(u,t,r){var F,n,C,A,i=u&p.F,E=u&p.G,o=u&p.S,c=u&p.P,B=u&p.B,s=E?D:o?D[t]||(D[t]={}):(D[t]||{}).prototype,f=E?e:e[t]||(e[t]={}),l=f.prototype||(f.prototype={});for(F in E&&(r=t),r)C=((n=!i&&s&&void 0!==s[F])?s:r)[F],A=B&&n?v(C,D):c&&"function"==typeof C?v(Function.call,C):C,s&&d(s,F,C,u&p.U),f[F]!=C&&a(f,F,A),c&&l[F]!=C&&(l[F]=C)};D.core=e,p.F=1,p.G=2,p.S=4,p.P=8,p.B=16,p.W=32,p.U=64,p.R=128;var h,m=p,g=Math.ceil,y=Math.floor,w=function(u){return isNaN(u=+u)?0:(u>0?y:g)(u)},S=(h=!1,function(u,D){var e,t,r=String(function(u){if(null==u)throw TypeError("Can't call method on "+u);return u}(u)),F=w(D),n=r.length;return F<0||F>=n?h?"":void 0:(e=r.charCodeAt(F))<55296||e>56319||F+1===n||(t=r.charCodeAt(F+1))<56320||t>57343?h?r.charAt(F):e:h?r.slice(F,F+2):t-56320+(e-55296<<10)+65536});m(m.P,"String",{codePointAt:function(u){return S(this,u)}});e.String.codePointAt;var b=Math.max,x=Math.min,N=String.fromCharCode,P=String.fromCodePoint;m(m.S+m.F*(!!P&&1!=P.length),"String",{fromCodePoint:function(u){for(var D,e,t,r=arguments,F=[],n=arguments.length,C=0;n>C;){if(D=+r[C++],t=1114111,((e=w(e=D))<0?b(e+t,0):x(e,t))!==D)throw RangeError(D+" is not a valid code point");F.push(D<65536?N(D):N(55296+((D-=65536)>>10),D%1024+56320))}return F.join("")}});e.String.fromCodePoint;var _,I,O,j,V,J,M,k,L,T,z,H,$,R,G={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},U={isSpaceSeparator:function(u){return"string"==typeof u&&G.Space_Separator.test(u)},isIdStartChar:function(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||G.ID_Start.test(u))},isIdContinueChar:function(u){return"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||G.ID_Continue.test(u))},isDigit:function(u){return"string"==typeof u&&/[0-9]/.test(u)},isHexDigit:function(u){return"string"==typeof u&&/[0-9A-Fa-f]/.test(u)}};function Z(){for(T="default",z="",H=!1,$=1;;){R=q();var u=X[T]();if(u)return u}}function q(){if(_[j])return String.fromCodePoint(_.codePointAt(j))}function W(){var u=q();return"\n"===u?(V++,J=0):u?J+=u.length:J++,u&&(j+=u.length),u}var X={default:function(){switch(R){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void W();case"/":return W(),void(T="comment");case void 0:return W(),K("eof")}if(!U.isSpaceSeparator(R))return X[I]();W()},comment:function(){switch(R){case"*":return W(),void(T="multiLineComment");case"/":return W(),void(T="singleLineComment")}throw tu(W())},multiLineComment:function(){switch(R){case"*":return W(),void(T="multiLineCommentAsterisk");case void 0:throw tu(W())}W()},multiLineCommentAsterisk:function(){switch(R){case"*":return void W();case"/":return W(),void(T="default");case void 0:throw tu(W())}W(),T="multiLineComment"},singleLineComment:function(){switch(R){case"\n":case"\r":case"\u2028":case"\u2029":return W(),void(T="default");case void 0:return W(),K("eof")}W()},value:function(){switch(R){case"{":case"[":return K("punctuator",W());case"n":return W(),Q("ull"),K("null",null);case"t":return W(),Q("rue"),K("boolean",!0);case"f":return W(),Q("alse"),K("boolean",!1);case"-":case"+":return"-"===W()&&($=-1),void(T="sign");case".":return z=W(),void(T="decimalPointLeading");case"0":return z=W(),void(T="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return z=W(),void(T="decimalInteger");case"I":return W(),Q("nfinity"),K("numeric",1/0);case"N":return W(),Q("aN"),K("numeric",NaN);case'"':case"'":return H='"'===W(),z="",void(T="string")}throw tu(W())},identifierNameStartEscape:function(){if("u"!==R)throw tu(W());W();var u=Y();switch(u){case"$":case"_":break;default:if(!U.isIdStartChar(u))throw Fu()}z+=u,T="identifierName"},identifierName:function(){switch(R){case"$":case"_":case"‌":case"‍":return void(z+=W());case"\\":return W(),void(T="identifierNameEscape")}if(!U.isIdContinueChar(R))return K("identifier",z);z+=W()},identifierNameEscape:function(){if("u"!==R)throw tu(W());W();var u=Y();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!U.isIdContinueChar(u))throw Fu()}z+=u,T="identifierName"},sign:function(){switch(R){case".":return z=W(),void(T="decimalPointLeading");case"0":return z=W(),void(T="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return z=W(),void(T="decimalInteger");case"I":return W(),Q("nfinity"),K("numeric",$*(1/0));case"N":return W(),Q("aN"),K("numeric",NaN)}throw tu(W())},zero:function(){switch(R){case".":return z+=W(),void(T="decimalPoint");case"e":case"E":return z+=W(),void(T="decimalExponent");case"x":case"X":return z+=W(),void(T="hexadecimal")}return K("numeric",0*$)},decimalInteger:function(){switch(R){case".":return z+=W(),void(T="decimalPoint");case"e":case"E":return z+=W(),void(T="decimalExponent")}if(!U.isDigit(R))return K("numeric",$*Number(z));z+=W()},decimalPointLeading:function(){if(U.isDigit(R))return z+=W(),void(T="decimalFraction");throw tu(W())},decimalPoint:function(){switch(R){case"e":case"E":return z+=W(),void(T="decimalExponent")}return U.isDigit(R)?(z+=W(),void(T="decimalFraction")):K("numeric",$*Number(z))},decimalFraction:function(){switch(R){case"e":case"E":return z+=W(),void(T="decimalExponent")}if(!U.isDigit(R))return K("numeric",$*Number(z));z+=W()},decimalExponent:function(){switch(R){case"+":case"-":return z+=W(),void(T="decimalExponentSign")}if(U.isDigit(R))return z+=W(),void(T="decimalExponentInteger");throw tu(W())},decimalExponentSign:function(){if(U.isDigit(R))return z+=W(),void(T="decimalExponentInteger");throw tu(W())},decimalExponentInteger:function(){if(!U.isDigit(R))return K("numeric",$*Number(z));z+=W()},hexadecimal:function(){if(U.isHexDigit(R))return z+=W(),void(T="hexadecimalInteger");throw tu(W())},hexadecimalInteger:function(){if(!U.isHexDigit(R))return K("numeric",$*Number(z));z+=W()},string:function(){switch(R){case"\\":return W(),void(z+=function(){switch(q()){case"b":return W(),"\b";case"f":return W(),"\f";case"n":return W(),"\n";case"r":return W(),"\r";case"t":return W(),"\t";case"v":return W(),"\v";case"0":if(W(),U.isDigit(q()))throw tu(W());return"\0";case"x":return W(),function(){var u="",D=q();if(!U.isHexDigit(D))throw tu(W());if(u+=W(),D=q(),!U.isHexDigit(D))throw tu(W());return u+=W(),String.fromCodePoint(parseInt(u,16))}();case"u":return W(),Y();case"\n":case"\u2028":case"\u2029":return W(),"";case"\r":return W(),"\n"===q()&&W(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw tu(W())}return W()}());case'"':return H?(W(),K("string",z)):void(z+=W());case"'":return H?void(z+=W()):(W(),K("string",z));case"\n":case"\r":throw tu(W());case"\u2028":case"\u2029":!function(u){console.warn("JSON5: '"+nu(u)+"' in strings is not valid ECMAScript; consider escaping")}(R);break;case void 0:throw tu(W())}z+=W()},start:function(){switch(R){case"{":case"[":return K("punctuator",W())}T="value"},beforePropertyName:function(){switch(R){case"$":case"_":return z=W(),void(T="identifierName");case"\\":return W(),void(T="identifierNameStartEscape");case"}":return K("punctuator",W());case'"':case"'":return H='"'===W(),void(T="string")}if(U.isIdStartChar(R))return z+=W(),void(T="identifierName");throw tu(W())},afterPropertyName:function(){if(":"===R)return K("punctuator",W());throw tu(W())},beforePropertyValue:function(){T="value"},afterPropertyValue:function(){switch(R){case",":case"}":return K("punctuator",W())}throw tu(W())},beforeArrayValue:function(){if("]"===R)return K("punctuator",W());T="value"},afterArrayValue:function(){switch(R){case",":case"]":return K("punctuator",W())}throw tu(W())},end:function(){throw tu(W())}};function K(u,D){return{type:u,value:D,line:V,column:J}}function Q(u){for(var D=0,e=u;D<e.length;D+=1){var t=e[D];if(q()!==t)throw tu(W());W()}}function Y(){for(var u="",D=4;D-- >0;){var e=q();if(!U.isHexDigit(e))throw tu(W());u+=W()}return String.fromCodePoint(parseInt(u,16))}var uu={start:function(){if("eof"===M.type)throw ru();Du()},beforePropertyName:function(){switch(M.type){case"identifier":case"string":return k=M.value,void(I="afterPropertyName");case"punctuator":return void eu();case"eof":throw ru()}},afterPropertyName:function(){if("eof"===M.type)throw ru();I="beforePropertyValue"},beforePropertyValue:function(){if("eof"===M.type)throw ru();Du()},beforeArrayValue:function(){if("eof"===M.type)throw ru();"punctuator"!==M.type||"]"!==M.value?Du():eu()},afterPropertyValue:function(){if("eof"===M.type)throw ru();switch(M.value){case",":return void(I="beforePropertyName");case"}":eu()}},afterArrayValue:function(){if("eof"===M.type)throw ru();switch(M.value){case",":return void(I="beforeArrayValue");case"]":eu()}},end:function(){}};function Du(){var u;switch(M.type){case"punctuator":switch(M.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=M.value}if(void 0===L)L=u;else{var D=O[O.length-1];Array.isArray(D)?D.push(u):D[k]=u}if(null!==u&&"object"==typeof u)O.push(u),I=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{var e=O[O.length-1];I=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}}function eu(){O.pop();var u=O[O.length-1];I=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function tu(u){return Cu(void 0===u?"JSON5: invalid end of input at "+V+":"+J:"JSON5: invalid character '"+nu(u)+"' at "+V+":"+J)}function ru(){return Cu("JSON5: invalid end of input at "+V+":"+J)}function Fu(){return Cu("JSON5: invalid identifier character at "+V+":"+(J-=5))}function nu(u){var D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){var e=u.charCodeAt(0).toString(16);return"\\x"+("00"+e).substring(e.length)}return u}function Cu(u){var D=new SyntaxError(u);return D.lineNumber=V,D.columnNumber=J,D}return{parse:function(u,D){_=String(u),I="start",O=[],j=0,V=1,J=0,M=void 0,k=void 0,L=void 0;do{M=Z(),uu[I]()}while("eof"!==M.type);return"function"==typeof D?function u(D,e,t){var r=D[e];if(null!=r&&"object"==typeof r)for(var F in r){var n=u(r,F,t);void 0===n?delete r[F]:r[F]=n}return t.call(D,e,r)}({"":L},"",D):L},stringify:function(u,D,e){var t,r,F,n=[],C="",A="";if(null==D||"object"!=typeof D||Array.isArray(D)||(e=D.space,F=D.quote,D=D.replacer),"function"==typeof D)r=D;else if(Array.isArray(D)){t=[];for(var i=0,E=D;i<E.length;i+=1){var o=E[i],a=void 0;"string"==typeof o?a=o:("number"==typeof o||o instanceof String||o instanceof Number)&&(a=String(o)),void 0!==a&&t.indexOf(a)<0&&t.push(a)}}return e instanceof Number?e=Number(e):e instanceof String&&(e=String(e)),"number"==typeof e?e>0&&(e=Math.min(10,Math.floor(e)),A=" ".substr(0,e)):"string"==typeof e&&(A=e.substr(0,10)),c("",{"":u});function c(u,D){var e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),r&&(e=r.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?B(e):"number"==typeof e?String(e):"object"==typeof e?Array.isArray(e)?function(u){if(n.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");n.push(u);var D=C;C+=A;for(var e,t=[],r=0;r<u.length;r++){var F=c(String(r),u);t.push(void 0!==F?F:"null")}if(0===t.length)e="[]";else if(""===A){var i=t.join(",");e="["+i+"]"}else{var E=",\n"+C,o=t.join(E);e="[\n"+C+o+",\n"+D+"]"}return n.pop(),C=D,e}(e):function(u){if(n.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");n.push(u);var D=C;C+=A;for(var e,r,F=t||Object.keys(u),i=[],E=0,o=F;E<o.length;E+=1){var a=o[E],B=c(a,u);if(void 0!==B){var f=s(a)+":";""!==A&&(f+=" "),f+=B,i.push(f)}}if(0===i.length)e="{}";else if(""===A)r=i.join(","),e="{"+r+"}";else{var l=",\n"+C;r=i.join(l),e="{\n"+C+r+",\n"+D+"}"}return n.pop(),C=D,e}(e):void 0}function B(u){for(var D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},t="",r=0;r<u.length;r++){var n=u[r];switch(n){case"'":case'"':D[n]++,t+=n;continue;case"\0":if(U.isDigit(u[r+1])){t+="\\x00";continue}}if(e[n])t+=e[n];else if(n<" "){var C=n.charCodeAt(0).toString(16);t+="\\x"+("00"+C).substring(C.length)}else t+=n}var A=F||Object.keys(D).reduce(function(u,e){return D[u]<D[e]?u:e});return A+(t=t.replace(new RegExp(A,"g"),e[A]))+A}function s(u){if(0===u.length)return B(u);var D=String.fromCodePoint(u.codePointAt(0));if(!U.isIdStartChar(D))return B(u);for(var e=D.length;e<u.length;e++)if(!U.isIdContinueChar(String.fromCodePoint(u.codePointAt(e))))return B(u);return u}}}});
diff --git a/tools/node_modules/eslint/node_modules/json5/dist/index.min.mjs b/tools/node_modules/eslint/node_modules/json5/dist/index.min.mjs
new file mode 100644
index 0000000000..3ac68cb11a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/dist/index.min.mjs
@@ -0,0 +1 @@
+var Space_Separator=/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue=/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/,unicode={Space_Separator:Space_Separator,ID_Start:ID_Start,ID_Continue:ID_Continue},util={isSpaceSeparator:u=>"string"==typeof u&&unicode.Space_Separator.test(u),isIdStartChar:u=>"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||"$"===u||"_"===u||unicode.ID_Start.test(u)),isIdContinueChar:u=>"string"==typeof u&&(u>="a"&&u<="z"||u>="A"&&u<="Z"||u>="0"&&u<="9"||"$"===u||"_"===u||"‌"===u||"‍"===u||unicode.ID_Continue.test(u)),isDigit:u=>"string"==typeof u&&/[0-9]/.test(u),isHexDigit:u=>"string"==typeof u&&/[0-9A-Fa-f]/.test(u)};let source,parseState,stack,pos,line,column,token,key,root;var parse=function(u,D){source=String(u),parseState="start",stack=[],pos=0,line=1,column=0,token=void 0,key=void 0,root=void 0;do{token=lex(),parseStates[parseState]()}while("eof"!==token.type);return"function"==typeof D?internalize({"":root},"",D):root};function internalize(u,D,e){const r=u[D];if(null!=r&&"object"==typeof r)for(const u in r){const D=internalize(r,u,e);void 0===D?delete r[u]:r[u]=D}return e.call(u,D,r)}let lexState,buffer,doubleQuote,sign,c;function lex(){for(lexState="default",buffer="",doubleQuote=!1,sign=1;;){c=peek();const u=lexStates[lexState]();if(u)return u}}function peek(){if(source[pos])return String.fromCodePoint(source.codePointAt(pos))}function read(){const u=peek();return"\n"===u?(line++,column=0):u?column+=u.length:column++,u&&(pos+=u.length),u}const lexStates={default(){switch(c){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void read();case"/":return read(),void(lexState="comment");case void 0:return read(),newToken("eof")}if(!util.isSpaceSeparator(c))return lexStates[parseState]();read()},comment(){switch(c){case"*":return read(),void(lexState="multiLineComment");case"/":return read(),void(lexState="singleLineComment")}throw invalidChar(read())},multiLineComment(){switch(c){case"*":return read(),void(lexState="multiLineCommentAsterisk");case void 0:throw invalidChar(read())}read()},multiLineCommentAsterisk(){switch(c){case"*":return void read();case"/":return read(),void(lexState="default");case void 0:throw invalidChar(read())}read(),lexState="multiLineComment"},singleLineComment(){switch(c){case"\n":case"\r":case"\u2028":case"\u2029":return read(),void(lexState="default");case void 0:return read(),newToken("eof")}read()},value(){switch(c){case"{":case"[":return newToken("punctuator",read());case"n":return read(),literal("ull"),newToken("null",null);case"t":return read(),literal("rue"),newToken("boolean",!0);case"f":return read(),literal("alse"),newToken("boolean",!1);case"-":case"+":return"-"===read()&&(sign=-1),void(lexState="sign");case".":return buffer=read(),void(lexState="decimalPointLeading");case"0":return buffer=read(),void(lexState="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return buffer=read(),void(lexState="decimalInteger");case"I":return read(),literal("nfinity"),newToken("numeric",1/0);case"N":return read(),literal("aN"),newToken("numeric",NaN);case'"':case"'":return doubleQuote='"'===read(),buffer="",void(lexState="string")}throw invalidChar(read())},identifierNameStartEscape(){if("u"!==c)throw invalidChar(read());read();const u=unicodeEscape();switch(u){case"$":case"_":break;default:if(!util.isIdStartChar(u))throw invalidIdentifier()}buffer+=u,lexState="identifierName"},identifierName(){switch(c){case"$":case"_":case"‌":case"‍":return void(buffer+=read());case"\\":return read(),void(lexState="identifierNameEscape")}if(!util.isIdContinueChar(c))return newToken("identifier",buffer);buffer+=read()},identifierNameEscape(){if("u"!==c)throw invalidChar(read());read();const u=unicodeEscape();switch(u){case"$":case"_":case"‌":case"‍":break;default:if(!util.isIdContinueChar(u))throw invalidIdentifier()}buffer+=u,lexState="identifierName"},sign(){switch(c){case".":return buffer=read(),void(lexState="decimalPointLeading");case"0":return buffer=read(),void(lexState="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return buffer=read(),void(lexState="decimalInteger");case"I":return read(),literal("nfinity"),newToken("numeric",sign*(1/0));case"N":return read(),literal("aN"),newToken("numeric",NaN)}throw invalidChar(read())},zero(){switch(c){case".":return buffer+=read(),void(lexState="decimalPoint");case"e":case"E":return buffer+=read(),void(lexState="decimalExponent");case"x":case"X":return buffer+=read(),void(lexState="hexadecimal")}return newToken("numeric",0*sign)},decimalInteger(){switch(c){case".":return buffer+=read(),void(lexState="decimalPoint");case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},decimalPointLeading(){if(util.isDigit(c))return buffer+=read(),void(lexState="decimalFraction");throw invalidChar(read())},decimalPoint(){switch(c){case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}return util.isDigit(c)?(buffer+=read(),void(lexState="decimalFraction")):newToken("numeric",sign*Number(buffer))},decimalFraction(){switch(c){case"e":case"E":return buffer+=read(),void(lexState="decimalExponent")}if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},decimalExponent(){switch(c){case"+":case"-":return buffer+=read(),void(lexState="decimalExponentSign")}if(util.isDigit(c))return buffer+=read(),void(lexState="decimalExponentInteger");throw invalidChar(read())},decimalExponentSign(){if(util.isDigit(c))return buffer+=read(),void(lexState="decimalExponentInteger");throw invalidChar(read())},decimalExponentInteger(){if(!util.isDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},hexadecimal(){if(util.isHexDigit(c))return buffer+=read(),void(lexState="hexadecimalInteger");throw invalidChar(read())},hexadecimalInteger(){if(!util.isHexDigit(c))return newToken("numeric",sign*Number(buffer));buffer+=read()},string(){switch(c){case"\\":return read(),void(buffer+=escape());case'"':return doubleQuote?(read(),newToken("string",buffer)):void(buffer+=read());case"'":return doubleQuote?void(buffer+=read()):(read(),newToken("string",buffer));case"\n":case"\r":throw invalidChar(read());case"\u2028":case"\u2029":separatorChar(c);break;case void 0:throw invalidChar(read())}buffer+=read()},start(){switch(c){case"{":case"[":return newToken("punctuator",read())}lexState="value"},beforePropertyName(){switch(c){case"$":case"_":return buffer=read(),void(lexState="identifierName");case"\\":return read(),void(lexState="identifierNameStartEscape");case"}":return newToken("punctuator",read());case'"':case"'":return doubleQuote='"'===read(),void(lexState="string")}if(util.isIdStartChar(c))return buffer+=read(),void(lexState="identifierName");throw invalidChar(read())},afterPropertyName(){if(":"===c)return newToken("punctuator",read());throw invalidChar(read())},beforePropertyValue(){lexState="value"},afterPropertyValue(){switch(c){case",":case"}":return newToken("punctuator",read())}throw invalidChar(read())},beforeArrayValue(){if("]"===c)return newToken("punctuator",read());lexState="value"},afterArrayValue(){switch(c){case",":case"]":return newToken("punctuator",read())}throw invalidChar(read())},end(){throw invalidChar(read())}};function newToken(u,D){return{type:u,value:D,line:line,column:column}}function literal(u){for(const D of u){if(peek()!==D)throw invalidChar(read());read()}}function escape(){switch(peek()){case"b":return read(),"\b";case"f":return read(),"\f";case"n":return read(),"\n";case"r":return read(),"\r";case"t":return read(),"\t";case"v":return read(),"\v";case"0":if(read(),util.isDigit(peek()))throw invalidChar(read());return"\0";case"x":return read(),hexEscape();case"u":return read(),unicodeEscape();case"\n":case"\u2028":case"\u2029":return read(),"";case"\r":return read(),"\n"===peek()&&read(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw invalidChar(read())}return read()}function hexEscape(){let u="",D=peek();if(!util.isHexDigit(D))throw invalidChar(read());if(u+=read(),D=peek(),!util.isHexDigit(D))throw invalidChar(read());return u+=read(),String.fromCodePoint(parseInt(u,16))}function unicodeEscape(){let u="",D=4;for(;D-- >0;){const D=peek();if(!util.isHexDigit(D))throw invalidChar(read());u+=read()}return String.fromCodePoint(parseInt(u,16))}const parseStates={start(){if("eof"===token.type)throw invalidEOF();push()},beforePropertyName(){switch(token.type){case"identifier":case"string":return key=token.value,void(parseState="afterPropertyName");case"punctuator":return void pop();case"eof":throw invalidEOF()}},afterPropertyName(){if("eof"===token.type)throw invalidEOF();parseState="beforePropertyValue"},beforePropertyValue(){if("eof"===token.type)throw invalidEOF();push()},beforeArrayValue(){if("eof"===token.type)throw invalidEOF();"punctuator"!==token.type||"]"!==token.value?push():pop()},afterPropertyValue(){if("eof"===token.type)throw invalidEOF();switch(token.value){case",":return void(parseState="beforePropertyName");case"}":pop()}},afterArrayValue(){if("eof"===token.type)throw invalidEOF();switch(token.value){case",":return void(parseState="beforeArrayValue");case"]":pop()}},end(){}};function push(){let u;switch(token.type){case"punctuator":switch(token.value){case"{":u={};break;case"[":u=[]}break;case"null":case"boolean":case"numeric":case"string":u=token.value}if(void 0===root)root=u;else{const D=stack[stack.length-1];Array.isArray(D)?D.push(u):D[key]=u}if(null!==u&&"object"==typeof u)stack.push(u),parseState=Array.isArray(u)?"beforeArrayValue":"beforePropertyName";else{const u=stack[stack.length-1];parseState=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}}function pop(){stack.pop();const u=stack[stack.length-1];parseState=null==u?"end":Array.isArray(u)?"afterArrayValue":"afterPropertyValue"}function invalidChar(u){return syntaxError(void 0===u?`JSON5: invalid end of input at ${line}:${column}`:`JSON5: invalid character '${formatChar(u)}' at ${line}:${column}`)}function invalidEOF(){return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)}function invalidIdentifier(){return syntaxError(`JSON5: invalid identifier character at ${line}:${column-=5}`)}function separatorChar(u){console.warn(`JSON5: '${formatChar(u)}' in strings is not valid ECMAScript; consider escaping`)}function formatChar(u){const D={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};if(D[u])return D[u];if(u<" "){const D=u.charCodeAt(0).toString(16);return"\\x"+("00"+D).substring(D.length)}return u}function syntaxError(u){const D=new SyntaxError(u);return D.lineNumber=line,D.columnNumber=column,D}var stringify=function(u,D,e){const r=[];let t,F,C,a="",A="";if(null==D||"object"!=typeof D||Array.isArray(D)||(e=D.space,C=D.quote,D=D.replacer),"function"==typeof D)F=D;else if(Array.isArray(D)){t=[];for(const u of D){let D;"string"==typeof u?D=u:("number"==typeof u||u instanceof String||u instanceof Number)&&(D=String(u)),void 0!==D&&t.indexOf(D)<0&&t.push(D)}}return e instanceof Number?e=Number(e):e instanceof String&&(e=String(e)),"number"==typeof e?e>0&&(e=Math.min(10,Math.floor(e)),A=" ".substr(0,e)):"string"==typeof e&&(A=e.substr(0,10)),E("",{"":u});function E(u,D){let e=D[u];switch(null!=e&&("function"==typeof e.toJSON5?e=e.toJSON5(u):"function"==typeof e.toJSON&&(e=e.toJSON(u))),F&&(e=F.call(D,u,e)),e instanceof Number?e=Number(e):e instanceof String?e=String(e):e instanceof Boolean&&(e=e.valueOf()),e){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof e?n(e):"number"==typeof e?String(e):"object"==typeof e?Array.isArray(e)?function(u){if(r.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");r.push(u);let D=a;a+=A;let e,t=[];for(let D=0;D<u.length;D++){const e=E(String(D),u);t.push(void 0!==e?e:"null")}if(0===t.length)e="[]";else if(""===A){let u=t.join(",");e="["+u+"]"}else{let u=",\n"+a,r=t.join(u);e="[\n"+a+r+",\n"+D+"]"}return r.pop(),a=D,e}(e):function(u){if(r.indexOf(u)>=0)throw TypeError("Converting circular structure to JSON5");r.push(u);let D=a;a+=A;let e,F=t||Object.keys(u),C=[];for(const D of F){const e=E(D,u);if(void 0!==e){let u=i(D)+":";""!==A&&(u+=" "),u+=e,C.push(u)}}if(0===C.length)e="{}";else{let u;if(""===A)u=C.join(","),e="{"+u+"}";else{let r=",\n"+a;u=C.join(r),e="{\n"+a+u+",\n"+D+"}"}}return r.pop(),a=D,e}(e):void 0}function n(u){const D={"'":.1,'"':.2},e={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};let r="";for(let t=0;t<u.length;t++){const F=u[t];switch(F){case"'":case'"':D[F]++,r+=F;continue;case"\0":if(util.isDigit(u[t+1])){r+="\\x00";continue}}if(e[F])r+=e[F];else if(F<" "){let u=F.charCodeAt(0).toString(16);r+="\\x"+("00"+u).substring(u.length)}else r+=F}const t=C||Object.keys(D).reduce((u,e)=>D[u]<D[e]?u:e);return t+(r=r.replace(new RegExp(t,"g"),e[t]))+t}function i(u){if(0===u.length)return n(u);const D=String.fromCodePoint(u.codePointAt(0));if(!util.isIdStartChar(D))return n(u);for(let e=D.length;e<u.length;e++)if(!util.isIdContinueChar(String.fromCodePoint(u.codePointAt(e))))return n(u);return u}};const JSON5={parse:parse,stringify:stringify};var lib=JSON5;export default lib;
diff --git a/tools/node_modules/eslint/node_modules/json5/dist/index.mjs b/tools/node_modules/eslint/node_modules/json5/dist/index.mjs
new file mode 100644
index 0000000000..8fe50735cc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/dist/index.mjs
@@ -0,0 +1,1399 @@
+// This is a generated file. Do not edit.
+var Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/;
+var ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
+var ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/;
+
+var unicode = {
+ Space_Separator: Space_Separator,
+ ID_Start: ID_Start,
+ ID_Continue: ID_Continue
+};
+
+var util = {
+ isSpaceSeparator (c) {
+ return typeof c === 'string' && unicode.Space_Separator.test(c)
+ },
+
+ isIdStartChar (c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c === '$') || (c === '_') ||
+ unicode.ID_Start.test(c)
+ )
+ },
+
+ isIdContinueChar (c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= '0' && c <= '9') ||
+ (c === '$') || (c === '_') ||
+ (c === '\u200C') || (c === '\u200D') ||
+ unicode.ID_Continue.test(c)
+ )
+ },
+
+ isDigit (c) {
+ return typeof c === 'string' && /[0-9]/.test(c)
+ },
+
+ isHexDigit (c) {
+ return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
+ },
+};
+
+let source;
+let parseState;
+let stack;
+let pos;
+let line;
+let column;
+let token;
+let key;
+let root;
+
+var parse = function parse (text, reviver) {
+ source = String(text);
+ parseState = 'start';
+ stack = [];
+ pos = 0;
+ line = 1;
+ column = 0;
+ token = undefined;
+ key = undefined;
+ root = undefined;
+
+ do {
+ token = lex();
+
+ // This code is unreachable.
+ // if (!parseStates[parseState]) {
+ // throw invalidParseState()
+ // }
+
+ parseStates[parseState]();
+ } while (token.type !== 'eof')
+
+ if (typeof reviver === 'function') {
+ return internalize({'': root}, '', reviver)
+ }
+
+ return root
+};
+
+function internalize (holder, name, reviver) {
+ const value = holder[name];
+ if (value != null && typeof value === 'object') {
+ for (const key in value) {
+ const replacement = internalize(value, key, reviver);
+ if (replacement === undefined) {
+ delete value[key];
+ } else {
+ value[key] = replacement;
+ }
+ }
+ }
+
+ return reviver.call(holder, name, value)
+}
+
+let lexState;
+let buffer;
+let doubleQuote;
+let sign;
+let c;
+
+function lex () {
+ lexState = 'default';
+ buffer = '';
+ doubleQuote = false;
+ sign = 1;
+
+ for (;;) {
+ c = peek();
+
+ // This code is unreachable.
+ // if (!lexStates[lexState]) {
+ // throw invalidLexState(lexState)
+ // }
+
+ const token = lexStates[lexState]();
+ if (token) {
+ return token
+ }
+ }
+}
+
+function peek () {
+ if (source[pos]) {
+ return String.fromCodePoint(source.codePointAt(pos))
+ }
+}
+
+function read () {
+ const c = peek();
+
+ if (c === '\n') {
+ line++;
+ column = 0;
+ } else if (c) {
+ column += c.length;
+ } else {
+ column++;
+ }
+
+ if (c) {
+ pos += c.length;
+ }
+
+ return c
+}
+
+const lexStates = {
+ default () {
+ switch (c) {
+ case '\t':
+ case '\v':
+ case '\f':
+ case ' ':
+ case '\u00A0':
+ case '\uFEFF':
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read();
+ return
+
+ case '/':
+ read();
+ lexState = 'comment';
+ return
+
+ case undefined:
+ read();
+ return newToken('eof')
+ }
+
+ if (util.isSpaceSeparator(c)) {
+ read();
+ return
+ }
+
+ // This code is unreachable.
+ // if (!lexStates[parseState]) {
+ // throw invalidLexState(parseState)
+ // }
+
+ return lexStates[parseState]()
+ },
+
+ comment () {
+ switch (c) {
+ case '*':
+ read();
+ lexState = 'multiLineComment';
+ return
+
+ case '/':
+ read();
+ lexState = 'singleLineComment';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ multiLineComment () {
+ switch (c) {
+ case '*':
+ read();
+ lexState = 'multiLineCommentAsterisk';
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read();
+ },
+
+ multiLineCommentAsterisk () {
+ switch (c) {
+ case '*':
+ read();
+ return
+
+ case '/':
+ read();
+ lexState = 'default';
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read();
+ lexState = 'multiLineComment';
+ },
+
+ singleLineComment () {
+ switch (c) {
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read();
+ lexState = 'default';
+ return
+
+ case undefined:
+ read();
+ return newToken('eof')
+ }
+
+ read();
+ },
+
+ value () {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ case 'n':
+ read();
+ literal('ull');
+ return newToken('null', null)
+
+ case 't':
+ read();
+ literal('rue');
+ return newToken('boolean', true)
+
+ case 'f':
+ read();
+ literal('alse');
+ return newToken('boolean', false)
+
+ case '-':
+ case '+':
+ if (read() === '-') {
+ sign = -1;
+ }
+
+ lexState = 'sign';
+ return
+
+ case '.':
+ buffer = read();
+ lexState = 'decimalPointLeading';
+ return
+
+ case '0':
+ buffer = read();
+ lexState = 'zero';
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read();
+ lexState = 'decimalInteger';
+ return
+
+ case 'I':
+ read();
+ literal('nfinity');
+ return newToken('numeric', Infinity)
+
+ case 'N':
+ read();
+ literal('aN');
+ return newToken('numeric', NaN)
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"');
+ buffer = '';
+ lexState = 'string';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ identifierNameStartEscape () {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read();
+ const u = unicodeEscape();
+ switch (u) {
+ case '$':
+ case '_':
+ break
+
+ default:
+ if (!util.isIdStartChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u;
+ lexState = 'identifierName';
+ },
+
+ identifierName () {
+ switch (c) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ buffer += read();
+ return
+
+ case '\\':
+ read();
+ lexState = 'identifierNameEscape';
+ return
+ }
+
+ if (util.isIdContinueChar(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('identifier', buffer)
+ },
+
+ identifierNameEscape () {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read();
+ const u = unicodeEscape();
+ switch (u) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ break
+
+ default:
+ if (!util.isIdContinueChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u;
+ lexState = 'identifierName';
+ },
+
+ sign () {
+ switch (c) {
+ case '.':
+ buffer = read();
+ lexState = 'decimalPointLeading';
+ return
+
+ case '0':
+ buffer = read();
+ lexState = 'zero';
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read();
+ lexState = 'decimalInteger';
+ return
+
+ case 'I':
+ read();
+ literal('nfinity');
+ return newToken('numeric', sign * Infinity)
+
+ case 'N':
+ read();
+ literal('aN');
+ return newToken('numeric', NaN)
+ }
+
+ throw invalidChar(read())
+ },
+
+ zero () {
+ switch (c) {
+ case '.':
+ buffer += read();
+ lexState = 'decimalPoint';
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+
+ case 'x':
+ case 'X':
+ buffer += read();
+ lexState = 'hexadecimal';
+ return
+ }
+
+ return newToken('numeric', sign * 0)
+ },
+
+ decimalInteger () {
+ switch (c) {
+ case '.':
+ buffer += read();
+ lexState = 'decimalPoint';
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalPointLeading () {
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalFraction';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalPoint () {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalFraction';
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalFraction () {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read();
+ lexState = 'decimalExponent';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalExponent () {
+ switch (c) {
+ case '+':
+ case '-':
+ buffer += read();
+ lexState = 'decimalExponentSign';
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalExponentInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentSign () {
+ if (util.isDigit(c)) {
+ buffer += read();
+ lexState = 'decimalExponentInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentInteger () {
+ if (util.isDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ hexadecimal () {
+ if (util.isHexDigit(c)) {
+ buffer += read();
+ lexState = 'hexadecimalInteger';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ hexadecimalInteger () {
+ if (util.isHexDigit(c)) {
+ buffer += read();
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ string () {
+ switch (c) {
+ case '\\':
+ read();
+ buffer += escape();
+ return
+
+ case '"':
+ if (doubleQuote) {
+ read();
+ return newToken('string', buffer)
+ }
+
+ buffer += read();
+ return
+
+ case "'":
+ if (!doubleQuote) {
+ read();
+ return newToken('string', buffer)
+ }
+
+ buffer += read();
+ return
+
+ case '\n':
+ case '\r':
+ throw invalidChar(read())
+
+ case '\u2028':
+ case '\u2029':
+ separatorChar(c);
+ break
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+ },
+
+ start () {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ // This code is unreachable since the default lexState handles eof.
+ // case undefined:
+ // return newToken('eof')
+ }
+
+ lexState = 'value';
+ },
+
+ beforePropertyName () {
+ switch (c) {
+ case '$':
+ case '_':
+ buffer = read();
+ lexState = 'identifierName';
+ return
+
+ case '\\':
+ read();
+ lexState = 'identifierNameStartEscape';
+ return
+
+ case '}':
+ return newToken('punctuator', read())
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"');
+ lexState = 'string';
+ return
+ }
+
+ if (util.isIdStartChar(c)) {
+ buffer += read();
+ lexState = 'identifierName';
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ afterPropertyName () {
+ if (c === ':') {
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforePropertyValue () {
+ lexState = 'value';
+ },
+
+ afterPropertyValue () {
+ switch (c) {
+ case ',':
+ case '}':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforeArrayValue () {
+ if (c === ']') {
+ return newToken('punctuator', read())
+ }
+
+ lexState = 'value';
+ },
+
+ afterArrayValue () {
+ switch (c) {
+ case ',':
+ case ']':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ end () {
+ // This code is unreachable since it's handled by the default lexState.
+ // if (c === undefined) {
+ // read()
+ // return newToken('eof')
+ // }
+
+ throw invalidChar(read())
+ },
+};
+
+function newToken (type, value) {
+ return {
+ type,
+ value,
+ line,
+ column,
+ }
+}
+
+function literal (s) {
+ for (const c of s) {
+ const p = peek();
+
+ if (p !== c) {
+ throw invalidChar(read())
+ }
+
+ read();
+ }
+}
+
+function escape () {
+ const c = peek();
+ switch (c) {
+ case 'b':
+ read();
+ return '\b'
+
+ case 'f':
+ read();
+ return '\f'
+
+ case 'n':
+ read();
+ return '\n'
+
+ case 'r':
+ read();
+ return '\r'
+
+ case 't':
+ read();
+ return '\t'
+
+ case 'v':
+ read();
+ return '\v'
+
+ case '0':
+ read();
+ if (util.isDigit(peek())) {
+ throw invalidChar(read())
+ }
+
+ return '\0'
+
+ case 'x':
+ read();
+ return hexEscape()
+
+ case 'u':
+ read();
+ return unicodeEscape()
+
+ case '\n':
+ case '\u2028':
+ case '\u2029':
+ read();
+ return ''
+
+ case '\r':
+ read();
+ if (peek() === '\n') {
+ read();
+ }
+
+ return ''
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ throw invalidChar(read())
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ return read()
+}
+
+function hexEscape () {
+ let buffer = '';
+ let c = peek();
+
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+
+ c = peek();
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+}
+
+function unicodeEscape () {
+ let buffer = '';
+ let count = 4;
+
+ while (count-- > 0) {
+ const c = peek();
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read();
+ }
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+}
+
+const parseStates = {
+ start () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push();
+ },
+
+ beforePropertyName () {
+ switch (token.type) {
+ case 'identifier':
+ case 'string':
+ key = token.value;
+ parseState = 'afterPropertyName';
+ return
+
+ case 'punctuator':
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.value !== '}') {
+ // throw invalidToken()
+ // }
+
+ pop();
+ return
+
+ case 'eof':
+ throw invalidEOF()
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterPropertyName () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator' || token.value !== ':') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ parseState = 'beforePropertyValue';
+ },
+
+ beforePropertyValue () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push();
+ },
+
+ beforeArrayValue () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ if (token.type === 'punctuator' && token.value === ']') {
+ pop();
+ return
+ }
+
+ push();
+ },
+
+ afterPropertyValue () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforePropertyName';
+ return
+
+ case '}':
+ pop();
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterArrayValue () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforeArrayValue';
+ return
+
+ case ']':
+ pop();
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ end () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'eof') {
+ // throw invalidToken()
+ // }
+ },
+};
+
+function push () {
+ let value;
+
+ switch (token.type) {
+ case 'punctuator':
+ switch (token.value) {
+ case '{':
+ value = {};
+ break
+
+ case '[':
+ value = [];
+ break
+ }
+
+ break
+
+ case 'null':
+ case 'boolean':
+ case 'numeric':
+ case 'string':
+ value = token.value;
+ break
+
+ // This code is unreachable.
+ // default:
+ // throw invalidToken()
+ }
+
+ if (root === undefined) {
+ root = value;
+ } else {
+ const parent = stack[stack.length - 1];
+ if (Array.isArray(parent)) {
+ parent.push(value);
+ } else {
+ parent[key] = value;
+ }
+ }
+
+ if (value !== null && typeof value === 'object') {
+ stack.push(value);
+
+ if (Array.isArray(value)) {
+ parseState = 'beforeArrayValue';
+ } else {
+ parseState = 'beforePropertyName';
+ }
+ } else {
+ const current = stack[stack.length - 1];
+ if (current == null) {
+ parseState = 'end';
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue';
+ } else {
+ parseState = 'afterPropertyValue';
+ }
+ }
+}
+
+function pop () {
+ stack.pop();
+
+ const current = stack[stack.length - 1];
+ if (current == null) {
+ parseState = 'end';
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue';
+ } else {
+ parseState = 'afterPropertyValue';
+ }
+}
+
+// This code is unreachable.
+// function invalidParseState () {
+// return new Error(`JSON5: invalid parse state '${parseState}'`)
+// }
+
+// This code is unreachable.
+// function invalidLexState (state) {
+// return new Error(`JSON5: invalid lex state '${state}'`)
+// }
+
+function invalidChar (c) {
+ if (c === undefined) {
+ return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+ }
+
+ return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
+}
+
+function invalidEOF () {
+ return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+}
+
+// This code is unreachable.
+// function invalidToken () {
+// if (token.type === 'eof') {
+// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+// }
+
+// const c = String.fromCodePoint(token.value.codePointAt(0))
+// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
+// }
+
+function invalidIdentifier () {
+ column -= 5;
+ return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)
+}
+
+function separatorChar (c) {
+ console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);
+}
+
+function formatChar (c) {
+ const replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ };
+
+ if (replacements[c]) {
+ return replacements[c]
+ }
+
+ if (c < ' ') {
+ const hexString = c.charCodeAt(0).toString(16);
+ return '\\x' + ('00' + hexString).substring(hexString.length)
+ }
+
+ return c
+}
+
+function syntaxError (message) {
+ const err = new SyntaxError(message);
+ err.lineNumber = line;
+ err.columnNumber = column;
+ return err
+}
+
+var stringify = function stringify (value, replacer, space) {
+ const stack = [];
+ let indent = '';
+ let propertyList;
+ let replacerFunc;
+ let gap = '';
+ let quote;
+
+ if (
+ replacer != null &&
+ typeof replacer === 'object' &&
+ !Array.isArray(replacer)
+ ) {
+ space = replacer.space;
+ quote = replacer.quote;
+ replacer = replacer.replacer;
+ }
+
+ if (typeof replacer === 'function') {
+ replacerFunc = replacer;
+ } else if (Array.isArray(replacer)) {
+ propertyList = [];
+ for (const v of replacer) {
+ let item;
+
+ if (typeof v === 'string') {
+ item = v;
+ } else if (
+ typeof v === 'number' ||
+ v instanceof String ||
+ v instanceof Number
+ ) {
+ item = String(v);
+ }
+
+ if (item !== undefined && propertyList.indexOf(item) < 0) {
+ propertyList.push(item);
+ }
+ }
+ }
+
+ if (space instanceof Number) {
+ space = Number(space);
+ } else if (space instanceof String) {
+ space = String(space);
+ }
+
+ if (typeof space === 'number') {
+ if (space > 0) {
+ space = Math.min(10, Math.floor(space));
+ gap = ' '.substr(0, space);
+ }
+ } else if (typeof space === 'string') {
+ gap = space.substr(0, 10);
+ }
+
+ return serializeProperty('', {'': value})
+
+ function serializeProperty (key, holder) {
+ let value = holder[key];
+ if (value != null) {
+ if (typeof value.toJSON5 === 'function') {
+ value = value.toJSON5(key);
+ } else if (typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ }
+ }
+
+ if (replacerFunc) {
+ value = replacerFunc.call(holder, key, value);
+ }
+
+ if (value instanceof Number) {
+ value = Number(value);
+ } else if (value instanceof String) {
+ value = String(value);
+ } else if (value instanceof Boolean) {
+ value = value.valueOf();
+ }
+
+ switch (value) {
+ case null: return 'null'
+ case true: return 'true'
+ case false: return 'false'
+ }
+
+ if (typeof value === 'string') {
+ return quoteString(value, false)
+ }
+
+ if (typeof value === 'number') {
+ return String(value)
+ }
+
+ if (typeof value === 'object') {
+ return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
+ }
+
+ return undefined
+ }
+
+ function quoteString (value) {
+ const quotes = {
+ "'": 0.1,
+ '"': 0.2,
+ };
+
+ const replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ };
+
+ let product = '';
+
+ for (let i = 0; i < value.length; i++) {
+ const c = value[i];
+ switch (c) {
+ case "'":
+ case '"':
+ quotes[c]++;
+ product += c;
+ continue
+
+ case '\0':
+ if (util.isDigit(value[i + 1])) {
+ product += '\\x00';
+ continue
+ }
+ }
+
+ if (replacements[c]) {
+ product += replacements[c];
+ continue
+ }
+
+ if (c < ' ') {
+ let hexString = c.charCodeAt(0).toString(16);
+ product += '\\x' + ('00' + hexString).substring(hexString.length);
+ continue
+ }
+
+ product += c;
+ }
+
+ const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);
+
+ product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);
+
+ return quoteChar + product + quoteChar
+ }
+
+ function serializeObject (value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value);
+
+ let stepback = indent;
+ indent = indent + gap;
+
+ let keys = propertyList || Object.keys(value);
+ let partial = [];
+ for (const key of keys) {
+ const propertyString = serializeProperty(key, value);
+ if (propertyString !== undefined) {
+ let member = serializeKey(key) + ':';
+ if (gap !== '') {
+ member += ' ';
+ }
+ member += propertyString;
+ partial.push(member);
+ }
+ }
+
+ let final;
+ if (partial.length === 0) {
+ final = '{}';
+ } else {
+ let properties;
+ if (gap === '') {
+ properties = partial.join(',');
+ final = '{' + properties + '}';
+ } else {
+ let separator = ',\n' + indent;
+ properties = partial.join(separator);
+ final = '{\n' + indent + properties + ',\n' + stepback + '}';
+ }
+ }
+
+ stack.pop();
+ indent = stepback;
+ return final
+ }
+
+ function serializeKey (key) {
+ if (key.length === 0) {
+ return quoteString(key, true)
+ }
+
+ const firstChar = String.fromCodePoint(key.codePointAt(0));
+ if (!util.isIdStartChar(firstChar)) {
+ return quoteString(key, true)
+ }
+
+ for (let i = firstChar.length; i < key.length; i++) {
+ if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
+ return quoteString(key, true)
+ }
+ }
+
+ return key
+ }
+
+ function serializeArray (value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value);
+
+ let stepback = indent;
+ indent = indent + gap;
+
+ let partial = [];
+ for (let i = 0; i < value.length; i++) {
+ const propertyString = serializeProperty(String(i), value);
+ partial.push((propertyString !== undefined) ? propertyString : 'null');
+ }
+
+ let final;
+ if (partial.length === 0) {
+ final = '[]';
+ } else {
+ if (gap === '') {
+ let properties = partial.join(',');
+ final = '[' + properties + ']';
+ } else {
+ let separator = ',\n' + indent;
+ let properties = partial.join(separator);
+ final = '[\n' + indent + properties + ',\n' + stepback + ']';
+ }
+ }
+
+ stack.pop();
+ indent = stepback;
+ return final
+ }
+};
+
+const JSON5 = {
+ parse,
+ stringify,
+};
+
+var lib = JSON5;
+
+export default lib;
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/cli.js b/tools/node_modules/eslint/node_modules/json5/lib/cli.js
new file mode 100644
index 0000000000..de852f15e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/cli.js
@@ -0,0 +1,112 @@
+#!/usr/bin/env node
+
+const fs = require('fs')
+const path = require('path')
+const minimist = require('minimist')
+const pkg = require('../package.json')
+const JSON5 = require('./')
+
+const argv = minimist(process.argv.slice(2), {
+ alias: {
+ 'convert': 'c',
+ 'space': 's',
+ 'validate': 'v',
+ 'out-file': 'o',
+ 'version': 'V',
+ 'help': 'h',
+ },
+ boolean: [
+ 'convert',
+ 'validate',
+ 'version',
+ 'help',
+ ],
+ string: [
+ 'space',
+ 'out-file',
+ ],
+})
+
+if (argv.version) {
+ version()
+} else if (argv.help) {
+ usage()
+} else {
+ const inFilename = argv._[0]
+
+ let readStream
+ if (inFilename) {
+ readStream = fs.createReadStream(inFilename)
+ } else {
+ readStream = process.stdin
+ }
+
+ let json5 = ''
+ readStream.on('data', data => {
+ json5 += data
+ })
+
+ readStream.on('end', () => {
+ let space
+ if (argv.space === 't' || argv.space === 'tab') {
+ space = '\t'
+ } else {
+ space = Number(argv.space)
+ }
+
+ let value
+ try {
+ value = JSON5.parse(json5)
+ if (!argv.validate) {
+ const json = JSON.stringify(value, null, space)
+
+ let writeStream
+
+ // --convert is for backward compatibility with v0.5.1. If
+ // specified with <file> and not --out-file, then a file with
+ // the same name but with a .json extension will be written.
+ if (argv.convert && inFilename && !argv.o) {
+ const parsedFilename = path.parse(inFilename)
+ const outFilename = path.format(
+ Object.assign(
+ parsedFilename,
+ {base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'}
+ )
+ )
+
+ writeStream = fs.createWriteStream(outFilename)
+ } else if (argv.o) {
+ writeStream = fs.createWriteStream(argv.o)
+ } else {
+ writeStream = process.stdout
+ }
+
+ writeStream.write(json)
+ }
+ } catch (err) {
+ console.error(err.message)
+ process.exit(1)
+ }
+ })
+}
+
+function version () {
+ console.log(pkg.version)
+}
+
+function usage () {
+ console.log(
+ `
+ Usage: json5 [options] <file>
+
+ If <file> is not provided, then STDIN is used.
+
+ Options:
+
+ -s, --space The number of spaces to indent or 't' for tabs
+ -o, --out-file [file] Output to the specified file, otherwise STDOUT
+ -v, --validate Validate JSON5 but do not output JSON
+ -V, --version Output the version number
+ -h, --help Output usage information`
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/index.js b/tools/node_modules/eslint/node_modules/json5/lib/index.js
new file mode 100644
index 0000000000..3679638889
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/index.js
@@ -0,0 +1,9 @@
+const parse = require('./parse')
+const stringify = require('./stringify')
+
+const JSON5 = {
+ parse,
+ stringify,
+}
+
+module.exports = JSON5
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/parse.js b/tools/node_modules/eslint/node_modules/json5/lib/parse.js
new file mode 100644
index 0000000000..c01646fc3a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/parse.js
@@ -0,0 +1,1087 @@
+const util = require('./util')
+
+let source
+let parseState
+let stack
+let pos
+let line
+let column
+let token
+let key
+let root
+
+module.exports = function parse (text, reviver) {
+ source = String(text)
+ parseState = 'start'
+ stack = []
+ pos = 0
+ line = 1
+ column = 0
+ token = undefined
+ key = undefined
+ root = undefined
+
+ do {
+ token = lex()
+
+ // This code is unreachable.
+ // if (!parseStates[parseState]) {
+ // throw invalidParseState()
+ // }
+
+ parseStates[parseState]()
+ } while (token.type !== 'eof')
+
+ if (typeof reviver === 'function') {
+ return internalize({'': root}, '', reviver)
+ }
+
+ return root
+}
+
+function internalize (holder, name, reviver) {
+ const value = holder[name]
+ if (value != null && typeof value === 'object') {
+ for (const key in value) {
+ const replacement = internalize(value, key, reviver)
+ if (replacement === undefined) {
+ delete value[key]
+ } else {
+ value[key] = replacement
+ }
+ }
+ }
+
+ return reviver.call(holder, name, value)
+}
+
+let lexState
+let buffer
+let doubleQuote
+let sign
+let c
+
+function lex () {
+ lexState = 'default'
+ buffer = ''
+ doubleQuote = false
+ sign = 1
+
+ for (;;) {
+ c = peek()
+
+ // This code is unreachable.
+ // if (!lexStates[lexState]) {
+ // throw invalidLexState(lexState)
+ // }
+
+ const token = lexStates[lexState]()
+ if (token) {
+ return token
+ }
+ }
+}
+
+function peek () {
+ if (source[pos]) {
+ return String.fromCodePoint(source.codePointAt(pos))
+ }
+}
+
+function read () {
+ const c = peek()
+
+ if (c === '\n') {
+ line++
+ column = 0
+ } else if (c) {
+ column += c.length
+ } else {
+ column++
+ }
+
+ if (c) {
+ pos += c.length
+ }
+
+ return c
+}
+
+const lexStates = {
+ default () {
+ switch (c) {
+ case '\t':
+ case '\v':
+ case '\f':
+ case ' ':
+ case '\u00A0':
+ case '\uFEFF':
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read()
+ return
+
+ case '/':
+ read()
+ lexState = 'comment'
+ return
+
+ case undefined:
+ read()
+ return newToken('eof')
+ }
+
+ if (util.isSpaceSeparator(c)) {
+ read()
+ return
+ }
+
+ // This code is unreachable.
+ // if (!lexStates[parseState]) {
+ // throw invalidLexState(parseState)
+ // }
+
+ return lexStates[parseState]()
+ },
+
+ comment () {
+ switch (c) {
+ case '*':
+ read()
+ lexState = 'multiLineComment'
+ return
+
+ case '/':
+ read()
+ lexState = 'singleLineComment'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ multiLineComment () {
+ switch (c) {
+ case '*':
+ read()
+ lexState = 'multiLineCommentAsterisk'
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read()
+ },
+
+ multiLineCommentAsterisk () {
+ switch (c) {
+ case '*':
+ read()
+ return
+
+ case '/':
+ read()
+ lexState = 'default'
+ return
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ read()
+ lexState = 'multiLineComment'
+ },
+
+ singleLineComment () {
+ switch (c) {
+ case '\n':
+ case '\r':
+ case '\u2028':
+ case '\u2029':
+ read()
+ lexState = 'default'
+ return
+
+ case undefined:
+ read()
+ return newToken('eof')
+ }
+
+ read()
+ },
+
+ value () {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ case 'n':
+ read()
+ literal('ull')
+ return newToken('null', null)
+
+ case 't':
+ read()
+ literal('rue')
+ return newToken('boolean', true)
+
+ case 'f':
+ read()
+ literal('alse')
+ return newToken('boolean', false)
+
+ case '-':
+ case '+':
+ if (read() === '-') {
+ sign = -1
+ }
+
+ lexState = 'sign'
+ return
+
+ case '.':
+ buffer = read()
+ lexState = 'decimalPointLeading'
+ return
+
+ case '0':
+ buffer = read()
+ lexState = 'zero'
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read()
+ lexState = 'decimalInteger'
+ return
+
+ case 'I':
+ read()
+ literal('nfinity')
+ return newToken('numeric', Infinity)
+
+ case 'N':
+ read()
+ literal('aN')
+ return newToken('numeric', NaN)
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"')
+ buffer = ''
+ lexState = 'string'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ identifierNameStartEscape () {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read()
+ const u = unicodeEscape()
+ switch (u) {
+ case '$':
+ case '_':
+ break
+
+ default:
+ if (!util.isIdStartChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u
+ lexState = 'identifierName'
+ },
+
+ identifierName () {
+ switch (c) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ buffer += read()
+ return
+
+ case '\\':
+ read()
+ lexState = 'identifierNameEscape'
+ return
+ }
+
+ if (util.isIdContinueChar(c)) {
+ buffer += read()
+ return
+ }
+
+ return newToken('identifier', buffer)
+ },
+
+ identifierNameEscape () {
+ if (c !== 'u') {
+ throw invalidChar(read())
+ }
+
+ read()
+ const u = unicodeEscape()
+ switch (u) {
+ case '$':
+ case '_':
+ case '\u200C':
+ case '\u200D':
+ break
+
+ default:
+ if (!util.isIdContinueChar(u)) {
+ throw invalidIdentifier()
+ }
+
+ break
+ }
+
+ buffer += u
+ lexState = 'identifierName'
+ },
+
+ sign () {
+ switch (c) {
+ case '.':
+ buffer = read()
+ lexState = 'decimalPointLeading'
+ return
+
+ case '0':
+ buffer = read()
+ lexState = 'zero'
+ return
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ buffer = read()
+ lexState = 'decimalInteger'
+ return
+
+ case 'I':
+ read()
+ literal('nfinity')
+ return newToken('numeric', sign * Infinity)
+
+ case 'N':
+ read()
+ literal('aN')
+ return newToken('numeric', NaN)
+ }
+
+ throw invalidChar(read())
+ },
+
+ zero () {
+ switch (c) {
+ case '.':
+ buffer += read()
+ lexState = 'decimalPoint'
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read()
+ lexState = 'decimalExponent'
+ return
+
+ case 'x':
+ case 'X':
+ buffer += read()
+ lexState = 'hexadecimal'
+ return
+ }
+
+ return newToken('numeric', sign * 0)
+ },
+
+ decimalInteger () {
+ switch (c) {
+ case '.':
+ buffer += read()
+ lexState = 'decimalPoint'
+ return
+
+ case 'e':
+ case 'E':
+ buffer += read()
+ lexState = 'decimalExponent'
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read()
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalPointLeading () {
+ if (util.isDigit(c)) {
+ buffer += read()
+ lexState = 'decimalFraction'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalPoint () {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read()
+ lexState = 'decimalExponent'
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read()
+ lexState = 'decimalFraction'
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalFraction () {
+ switch (c) {
+ case 'e':
+ case 'E':
+ buffer += read()
+ lexState = 'decimalExponent'
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read()
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ decimalExponent () {
+ switch (c) {
+ case '+':
+ case '-':
+ buffer += read()
+ lexState = 'decimalExponentSign'
+ return
+ }
+
+ if (util.isDigit(c)) {
+ buffer += read()
+ lexState = 'decimalExponentInteger'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentSign () {
+ if (util.isDigit(c)) {
+ buffer += read()
+ lexState = 'decimalExponentInteger'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ decimalExponentInteger () {
+ if (util.isDigit(c)) {
+ buffer += read()
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ hexadecimal () {
+ if (util.isHexDigit(c)) {
+ buffer += read()
+ lexState = 'hexadecimalInteger'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ hexadecimalInteger () {
+ if (util.isHexDigit(c)) {
+ buffer += read()
+ return
+ }
+
+ return newToken('numeric', sign * Number(buffer))
+ },
+
+ string () {
+ switch (c) {
+ case '\\':
+ read()
+ buffer += escape()
+ return
+
+ case '"':
+ if (doubleQuote) {
+ read()
+ return newToken('string', buffer)
+ }
+
+ buffer += read()
+ return
+
+ case "'":
+ if (!doubleQuote) {
+ read()
+ return newToken('string', buffer)
+ }
+
+ buffer += read()
+ return
+
+ case '\n':
+ case '\r':
+ throw invalidChar(read())
+
+ case '\u2028':
+ case '\u2029':
+ separatorChar(c)
+ break
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ buffer += read()
+ },
+
+ start () {
+ switch (c) {
+ case '{':
+ case '[':
+ return newToken('punctuator', read())
+
+ // This code is unreachable since the default lexState handles eof.
+ // case undefined:
+ // return newToken('eof')
+ }
+
+ lexState = 'value'
+ },
+
+ beforePropertyName () {
+ switch (c) {
+ case '$':
+ case '_':
+ buffer = read()
+ lexState = 'identifierName'
+ return
+
+ case '\\':
+ read()
+ lexState = 'identifierNameStartEscape'
+ return
+
+ case '}':
+ return newToken('punctuator', read())
+
+ case '"':
+ case "'":
+ doubleQuote = (read() === '"')
+ lexState = 'string'
+ return
+ }
+
+ if (util.isIdStartChar(c)) {
+ buffer += read()
+ lexState = 'identifierName'
+ return
+ }
+
+ throw invalidChar(read())
+ },
+
+ afterPropertyName () {
+ if (c === ':') {
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforePropertyValue () {
+ lexState = 'value'
+ },
+
+ afterPropertyValue () {
+ switch (c) {
+ case ',':
+ case '}':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ beforeArrayValue () {
+ if (c === ']') {
+ return newToken('punctuator', read())
+ }
+
+ lexState = 'value'
+ },
+
+ afterArrayValue () {
+ switch (c) {
+ case ',':
+ case ']':
+ return newToken('punctuator', read())
+ }
+
+ throw invalidChar(read())
+ },
+
+ end () {
+ // This code is unreachable since it's handled by the default lexState.
+ // if (c === undefined) {
+ // read()
+ // return newToken('eof')
+ // }
+
+ throw invalidChar(read())
+ },
+}
+
+function newToken (type, value) {
+ return {
+ type,
+ value,
+ line,
+ column,
+ }
+}
+
+function literal (s) {
+ for (const c of s) {
+ const p = peek()
+
+ if (p !== c) {
+ throw invalidChar(read())
+ }
+
+ read()
+ }
+}
+
+function escape () {
+ const c = peek()
+ switch (c) {
+ case 'b':
+ read()
+ return '\b'
+
+ case 'f':
+ read()
+ return '\f'
+
+ case 'n':
+ read()
+ return '\n'
+
+ case 'r':
+ read()
+ return '\r'
+
+ case 't':
+ read()
+ return '\t'
+
+ case 'v':
+ read()
+ return '\v'
+
+ case '0':
+ read()
+ if (util.isDigit(peek())) {
+ throw invalidChar(read())
+ }
+
+ return '\0'
+
+ case 'x':
+ read()
+ return hexEscape()
+
+ case 'u':
+ read()
+ return unicodeEscape()
+
+ case '\n':
+ case '\u2028':
+ case '\u2029':
+ read()
+ return ''
+
+ case '\r':
+ read()
+ if (peek() === '\n') {
+ read()
+ }
+
+ return ''
+
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ throw invalidChar(read())
+
+ case undefined:
+ throw invalidChar(read())
+ }
+
+ return read()
+}
+
+function hexEscape () {
+ let buffer = ''
+ let c = peek()
+
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read()
+
+ c = peek()
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read()
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+}
+
+function unicodeEscape () {
+ let buffer = ''
+ let count = 4
+
+ while (count-- > 0) {
+ const c = peek()
+ if (!util.isHexDigit(c)) {
+ throw invalidChar(read())
+ }
+
+ buffer += read()
+ }
+
+ return String.fromCodePoint(parseInt(buffer, 16))
+}
+
+const parseStates = {
+ start () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push()
+ },
+
+ beforePropertyName () {
+ switch (token.type) {
+ case 'identifier':
+ case 'string':
+ key = token.value
+ parseState = 'afterPropertyName'
+ return
+
+ case 'punctuator':
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.value !== '}') {
+ // throw invalidToken()
+ // }
+
+ pop()
+ return
+
+ case 'eof':
+ throw invalidEOF()
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterPropertyName () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator' || token.value !== ':') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ parseState = 'beforePropertyValue'
+ },
+
+ beforePropertyValue () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ push()
+ },
+
+ beforeArrayValue () {
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ if (token.type === 'punctuator' && token.value === ']') {
+ pop()
+ return
+ }
+
+ push()
+ },
+
+ afterPropertyValue () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforePropertyName'
+ return
+
+ case '}':
+ pop()
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ afterArrayValue () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'punctuator') {
+ // throw invalidToken()
+ // }
+
+ if (token.type === 'eof') {
+ throw invalidEOF()
+ }
+
+ switch (token.value) {
+ case ',':
+ parseState = 'beforeArrayValue'
+ return
+
+ case ']':
+ pop()
+ }
+
+ // This code is unreachable since it's handled by the lexState.
+ // throw invalidToken()
+ },
+
+ end () {
+ // This code is unreachable since it's handled by the lexState.
+ // if (token.type !== 'eof') {
+ // throw invalidToken()
+ // }
+ },
+}
+
+function push () {
+ let value
+
+ switch (token.type) {
+ case 'punctuator':
+ switch (token.value) {
+ case '{':
+ value = {}
+ break
+
+ case '[':
+ value = []
+ break
+ }
+
+ break
+
+ case 'null':
+ case 'boolean':
+ case 'numeric':
+ case 'string':
+ value = token.value
+ break
+
+ // This code is unreachable.
+ // default:
+ // throw invalidToken()
+ }
+
+ if (root === undefined) {
+ root = value
+ } else {
+ const parent = stack[stack.length - 1]
+ if (Array.isArray(parent)) {
+ parent.push(value)
+ } else {
+ parent[key] = value
+ }
+ }
+
+ if (value !== null && typeof value === 'object') {
+ stack.push(value)
+
+ if (Array.isArray(value)) {
+ parseState = 'beforeArrayValue'
+ } else {
+ parseState = 'beforePropertyName'
+ }
+ } else {
+ const current = stack[stack.length - 1]
+ if (current == null) {
+ parseState = 'end'
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue'
+ } else {
+ parseState = 'afterPropertyValue'
+ }
+ }
+}
+
+function pop () {
+ stack.pop()
+
+ const current = stack[stack.length - 1]
+ if (current == null) {
+ parseState = 'end'
+ } else if (Array.isArray(current)) {
+ parseState = 'afterArrayValue'
+ } else {
+ parseState = 'afterPropertyValue'
+ }
+}
+
+// This code is unreachable.
+// function invalidParseState () {
+// return new Error(`JSON5: invalid parse state '${parseState}'`)
+// }
+
+// This code is unreachable.
+// function invalidLexState (state) {
+// return new Error(`JSON5: invalid lex state '${state}'`)
+// }
+
+function invalidChar (c) {
+ if (c === undefined) {
+ return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+ }
+
+ return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
+}
+
+function invalidEOF () {
+ return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+}
+
+// This code is unreachable.
+// function invalidToken () {
+// if (token.type === 'eof') {
+// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)
+// }
+
+// const c = String.fromCodePoint(token.value.codePointAt(0))
+// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)
+// }
+
+function invalidIdentifier () {
+ column -= 5
+ return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)
+}
+
+function separatorChar (c) {
+ console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`)
+}
+
+function formatChar (c) {
+ const replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ }
+
+ if (replacements[c]) {
+ return replacements[c]
+ }
+
+ if (c < ' ') {
+ const hexString = c.charCodeAt(0).toString(16)
+ return '\\x' + ('00' + hexString).substring(hexString.length)
+ }
+
+ return c
+}
+
+function syntaxError (message) {
+ const err = new SyntaxError(message)
+ err.lineNumber = line
+ err.columnNumber = column
+ return err
+}
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/register.js b/tools/node_modules/eslint/node_modules/json5/lib/register.js
new file mode 100644
index 0000000000..935cdbafb3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/register.js
@@ -0,0 +1,13 @@
+const fs = require('fs')
+const JSON5 = require('./')
+
+// eslint-disable-next-line node/no-deprecated-api
+require.extensions['.json5'] = function (module, filename) {
+ const content = fs.readFileSync(filename, 'utf8')
+ try {
+ module.exports = JSON5.parse(content)
+ } catch (err) {
+ err.message = filename + ': ' + err.message
+ throw err
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/require.js b/tools/node_modules/eslint/node_modules/json5/lib/require.js
new file mode 100644
index 0000000000..3aa29bee03
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/require.js
@@ -0,0 +1,4 @@
+// This file is for backward compatibility with v0.5.1.
+require('./register')
+
+console.warn("'json5/require' is deprecated. Please use 'json5/register' instead.")
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/stringify.js b/tools/node_modules/eslint/node_modules/json5/lib/stringify.js
new file mode 100644
index 0000000000..7cb3b0e101
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/stringify.js
@@ -0,0 +1,261 @@
+const util = require('./util')
+
+module.exports = function stringify (value, replacer, space) {
+ const stack = []
+ let indent = ''
+ let propertyList
+ let replacerFunc
+ let gap = ''
+ let quote
+
+ if (
+ replacer != null &&
+ typeof replacer === 'object' &&
+ !Array.isArray(replacer)
+ ) {
+ space = replacer.space
+ quote = replacer.quote
+ replacer = replacer.replacer
+ }
+
+ if (typeof replacer === 'function') {
+ replacerFunc = replacer
+ } else if (Array.isArray(replacer)) {
+ propertyList = []
+ for (const v of replacer) {
+ let item
+
+ if (typeof v === 'string') {
+ item = v
+ } else if (
+ typeof v === 'number' ||
+ v instanceof String ||
+ v instanceof Number
+ ) {
+ item = String(v)
+ }
+
+ if (item !== undefined && propertyList.indexOf(item) < 0) {
+ propertyList.push(item)
+ }
+ }
+ }
+
+ if (space instanceof Number) {
+ space = Number(space)
+ } else if (space instanceof String) {
+ space = String(space)
+ }
+
+ if (typeof space === 'number') {
+ if (space > 0) {
+ space = Math.min(10, Math.floor(space))
+ gap = ' '.substr(0, space)
+ }
+ } else if (typeof space === 'string') {
+ gap = space.substr(0, 10)
+ }
+
+ return serializeProperty('', {'': value})
+
+ function serializeProperty (key, holder) {
+ let value = holder[key]
+ if (value != null) {
+ if (typeof value.toJSON5 === 'function') {
+ value = value.toJSON5(key)
+ } else if (typeof value.toJSON === 'function') {
+ value = value.toJSON(key)
+ }
+ }
+
+ if (replacerFunc) {
+ value = replacerFunc.call(holder, key, value)
+ }
+
+ if (value instanceof Number) {
+ value = Number(value)
+ } else if (value instanceof String) {
+ value = String(value)
+ } else if (value instanceof Boolean) {
+ value = value.valueOf()
+ }
+
+ switch (value) {
+ case null: return 'null'
+ case true: return 'true'
+ case false: return 'false'
+ }
+
+ if (typeof value === 'string') {
+ return quoteString(value, false)
+ }
+
+ if (typeof value === 'number') {
+ return String(value)
+ }
+
+ if (typeof value === 'object') {
+ return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
+ }
+
+ return undefined
+ }
+
+ function quoteString (value) {
+ const quotes = {
+ "'": 0.1,
+ '"': 0.2,
+ }
+
+ const replacements = {
+ "'": "\\'",
+ '"': '\\"',
+ '\\': '\\\\',
+ '\b': '\\b',
+ '\f': '\\f',
+ '\n': '\\n',
+ '\r': '\\r',
+ '\t': '\\t',
+ '\v': '\\v',
+ '\0': '\\0',
+ '\u2028': '\\u2028',
+ '\u2029': '\\u2029',
+ }
+
+ let product = ''
+
+ for (let i = 0; i < value.length; i++) {
+ const c = value[i]
+ switch (c) {
+ case "'":
+ case '"':
+ quotes[c]++
+ product += c
+ continue
+
+ case '\0':
+ if (util.isDigit(value[i + 1])) {
+ product += '\\x00'
+ continue
+ }
+ }
+
+ if (replacements[c]) {
+ product += replacements[c]
+ continue
+ }
+
+ if (c < ' ') {
+ let hexString = c.charCodeAt(0).toString(16)
+ product += '\\x' + ('00' + hexString).substring(hexString.length)
+ continue
+ }
+
+ product += c
+ }
+
+ const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b)
+
+ product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar])
+
+ return quoteChar + product + quoteChar
+ }
+
+ function serializeObject (value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value)
+
+ let stepback = indent
+ indent = indent + gap
+
+ let keys = propertyList || Object.keys(value)
+ let partial = []
+ for (const key of keys) {
+ const propertyString = serializeProperty(key, value)
+ if (propertyString !== undefined) {
+ let member = serializeKey(key) + ':'
+ if (gap !== '') {
+ member += ' '
+ }
+ member += propertyString
+ partial.push(member)
+ }
+ }
+
+ let final
+ if (partial.length === 0) {
+ final = '{}'
+ } else {
+ let properties
+ if (gap === '') {
+ properties = partial.join(',')
+ final = '{' + properties + '}'
+ } else {
+ let separator = ',\n' + indent
+ properties = partial.join(separator)
+ final = '{\n' + indent + properties + ',\n' + stepback + '}'
+ }
+ }
+
+ stack.pop()
+ indent = stepback
+ return final
+ }
+
+ function serializeKey (key) {
+ if (key.length === 0) {
+ return quoteString(key, true)
+ }
+
+ const firstChar = String.fromCodePoint(key.codePointAt(0))
+ if (!util.isIdStartChar(firstChar)) {
+ return quoteString(key, true)
+ }
+
+ for (let i = firstChar.length; i < key.length; i++) {
+ if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
+ return quoteString(key, true)
+ }
+ }
+
+ return key
+ }
+
+ function serializeArray (value) {
+ if (stack.indexOf(value) >= 0) {
+ throw TypeError('Converting circular structure to JSON5')
+ }
+
+ stack.push(value)
+
+ let stepback = indent
+ indent = indent + gap
+
+ let partial = []
+ for (let i = 0; i < value.length; i++) {
+ const propertyString = serializeProperty(String(i), value)
+ partial.push((propertyString !== undefined) ? propertyString : 'null')
+ }
+
+ let final
+ if (partial.length === 0) {
+ final = '[]'
+ } else {
+ if (gap === '') {
+ let properties = partial.join(',')
+ final = '[' + properties + ']'
+ } else {
+ let separator = ',\n' + indent
+ let properties = partial.join(separator)
+ final = '[\n' + indent + properties + ',\n' + stepback + ']'
+ }
+ }
+
+ stack.pop()
+ indent = stepback
+ return final
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/unicode.js b/tools/node_modules/eslint/node_modules/json5/lib/unicode.js
new file mode 100644
index 0000000000..215ccd843a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/unicode.js
@@ -0,0 +1,4 @@
+// This is a generated file. Do not edit.
+module.exports.Space_Separator = /[\u1680\u2000-\u200A\u202F\u205F\u3000]/
+module.exports.ID_Start = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/
+module.exports.ID_Continue = /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
diff --git a/tools/node_modules/eslint/node_modules/json5/lib/util.js b/tools/node_modules/eslint/node_modules/json5/lib/util.js
new file mode 100644
index 0000000000..40bfe2fa6a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/lib/util.js
@@ -0,0 +1,35 @@
+const unicode = require('../lib/unicode')
+
+module.exports = {
+ isSpaceSeparator (c) {
+ return typeof c === 'string' && unicode.Space_Separator.test(c)
+ },
+
+ isIdStartChar (c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c === '$') || (c === '_') ||
+ unicode.ID_Start.test(c)
+ )
+ },
+
+ isIdContinueChar (c) {
+ return typeof c === 'string' && (
+ (c >= 'a' && c <= 'z') ||
+ (c >= 'A' && c <= 'Z') ||
+ (c >= '0' && c <= '9') ||
+ (c === '$') || (c === '_') ||
+ (c === '\u200C') || (c === '\u200D') ||
+ unicode.ID_Continue.test(c)
+ )
+ },
+
+ isDigit (c) {
+ return typeof c === 'string' && /[0-9]/.test(c)
+ },
+
+ isHexDigit (c) {
+ return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
+ },
+}
diff --git a/tools/node_modules/eslint/node_modules/json5/package.json b/tools/node_modules/eslint/node_modules/json5/package.json
new file mode 100644
index 0000000000..31c43e5f99
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/json5/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "json5",
+ "version": "2.2.0",
+ "description": "JSON for humans.",
+ "main": "lib/index.js",
+ "module": "dist/index.mjs",
+ "bin": "lib/cli.js",
+ "browser": "dist/index.js",
+ "types": "lib/index.d.ts",
+ "files": [
+ "lib/",
+ "dist/"
+ ],
+ "engines": {
+ "node": ">=6"
+ },
+ "scripts": {
+ "build": "rollup -c",
+ "build-package": "node build/package.js",
+ "build-unicode": "node build/unicode.js",
+ "coverage": "tap --coverage-report html test",
+ "lint": "eslint --fix .",
+ "prepublishOnly": "npm run production",
+ "preversion": "npm run production",
+ "production": "npm run lint && npm test && npm run build",
+ "test": "tap -Rspec --100 test",
+ "version": "npm run build-package && git add package.json5"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/json5/json5.git"
+ },
+ "keywords": [
+ "json",
+ "json5",
+ "es5",
+ "es2015",
+ "ecmascript"
+ ],
+ "author": "Aseem Kishore <aseem.kishore@gmail.com>",
+ "contributors": [
+ "Max Nanasy <max.nanasy@gmail.com>",
+ "Andrew Eisenberg <andrew@eisenberg.as>",
+ "Jordan Tucker <jordanbtucker@gmail.com>"
+ ],
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/json5/json5/issues"
+ },
+ "homepage": "http://json5.org/",
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "devDependencies": {
+ "core-js": "^2.6.5",
+ "eslint": "^5.15.3",
+ "eslint-config-standard": "^12.0.0",
+ "eslint-plugin-import": "^2.16.0",
+ "eslint-plugin-node": "^8.0.1",
+ "eslint-plugin-promise": "^4.0.1",
+ "eslint-plugin-standard": "^4.0.0",
+ "regenerate": "^1.4.0",
+ "rollup": "^0.64.1",
+ "rollup-plugin-buble": "^0.19.6",
+ "rollup-plugin-commonjs": "^9.2.1",
+ "rollup-plugin-node-resolve": "^3.4.0",
+ "rollup-plugin-terser": "^1.0.1",
+ "sinon": "^6.3.5",
+ "tap": "^12.6.0",
+ "unicode-10.0.0": "^0.7.5"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/dist/index.js b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/dist/index.js
new file mode 100644
index 0000000000..c34f023f45
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/dist/index.js
@@ -0,0 +1,823 @@
+'use strict'
+
+module.exports = fromMarkdown
+
+// These three are compiled away in the `dist/`
+
+var toString = require('mdast-util-to-string')
+var assign = require('micromark/dist/constant/assign')
+var own = require('micromark/dist/constant/has-own-property')
+var normalizeIdentifier = require('micromark/dist/util/normalize-identifier')
+var safeFromInt = require('micromark/dist/util/safe-from-int')
+var parser = require('micromark/dist/parse')
+var preprocessor = require('micromark/dist/preprocess')
+var postprocess = require('micromark/dist/postprocess')
+var decode = require('parse-entities/decode-entity')
+var stringifyPosition = require('unist-util-stringify-position')
+
+function fromMarkdown(value, encoding, options) {
+ if (typeof encoding !== 'string') {
+ options = encoding
+ encoding = undefined
+ }
+
+ return compiler(options)(
+ postprocess(
+ parser(options).document().write(preprocessor()(value, encoding, true))
+ )
+ )
+}
+
+// Note this compiler only understand complete buffering, not streaming.
+function compiler(options) {
+ var settings = options || {}
+ var config = configure(
+ {
+ transforms: [],
+ canContainEols: [
+ 'emphasis',
+ 'fragment',
+ 'heading',
+ 'paragraph',
+ 'strong'
+ ],
+
+ enter: {
+ autolink: opener(link),
+ autolinkProtocol: onenterdata,
+ autolinkEmail: onenterdata,
+ atxHeading: opener(heading),
+ blockQuote: opener(blockQuote),
+ characterEscape: onenterdata,
+ characterReference: onenterdata,
+ codeFenced: opener(codeFlow),
+ codeFencedFenceInfo: buffer,
+ codeFencedFenceMeta: buffer,
+ codeIndented: opener(codeFlow, buffer),
+ codeText: opener(codeText, buffer),
+ codeTextData: onenterdata,
+ data: onenterdata,
+ codeFlowValue: onenterdata,
+ definition: opener(definition),
+ definitionDestinationString: buffer,
+ definitionLabelString: buffer,
+ definitionTitleString: buffer,
+ emphasis: opener(emphasis),
+ hardBreakEscape: opener(hardBreak),
+ hardBreakTrailing: opener(hardBreak),
+ htmlFlow: opener(html, buffer),
+ htmlFlowData: onenterdata,
+ htmlText: opener(html, buffer),
+ htmlTextData: onenterdata,
+ image: opener(image),
+ label: buffer,
+ link: opener(link),
+ listItem: opener(listItem),
+ listItemValue: onenterlistitemvalue,
+ listOrdered: opener(list, onenterlistordered),
+ listUnordered: opener(list),
+ paragraph: opener(paragraph),
+ reference: onenterreference,
+ referenceString: buffer,
+ resourceDestinationString: buffer,
+ resourceTitleString: buffer,
+ setextHeading: opener(heading),
+ strong: opener(strong),
+ thematicBreak: opener(thematicBreak)
+ },
+
+ exit: {
+ atxHeading: closer(),
+ atxHeadingSequence: onexitatxheadingsequence,
+ autolink: closer(),
+ autolinkEmail: onexitautolinkemail,
+ autolinkProtocol: onexitautolinkprotocol,
+ blockQuote: closer(),
+ characterEscapeValue: onexitdata,
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
+ characterReferenceValue: onexitcharacterreferencevalue,
+ codeFenced: closer(onexitcodefenced),
+ codeFencedFence: onexitcodefencedfence,
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
+ codeFencedFenceMeta: onexitcodefencedfencemeta,
+ codeFlowValue: onexitdata,
+ codeIndented: closer(onexitcodeindented),
+ codeText: closer(onexitcodetext),
+ codeTextData: onexitdata,
+ data: onexitdata,
+ definition: closer(),
+ definitionDestinationString: onexitdefinitiondestinationstring,
+ definitionLabelString: onexitdefinitionlabelstring,
+ definitionTitleString: onexitdefinitiontitlestring,
+ emphasis: closer(),
+ hardBreakEscape: closer(onexithardbreak),
+ hardBreakTrailing: closer(onexithardbreak),
+ htmlFlow: closer(onexithtmlflow),
+ htmlFlowData: onexitdata,
+ htmlText: closer(onexithtmltext),
+ htmlTextData: onexitdata,
+ image: closer(onexitimage),
+ label: onexitlabel,
+ labelText: onexitlabeltext,
+ lineEnding: onexitlineending,
+ link: closer(onexitlink),
+ listItem: closer(),
+ listOrdered: closer(),
+ listUnordered: closer(),
+ paragraph: closer(),
+ referenceString: onexitreferencestring,
+ resourceDestinationString: onexitresourcedestinationstring,
+ resourceTitleString: onexitresourcetitlestring,
+ resource: onexitresource,
+ setextHeading: closer(onexitsetextheading),
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
+ setextHeadingText: onexitsetextheadingtext,
+ strong: closer(),
+ thematicBreak: closer()
+ }
+ },
+
+ settings.mdastExtensions || []
+ )
+
+ var data = {}
+
+ return compile
+
+ function compile(events) {
+ var tree = {type: 'root', children: []}
+ var stack = [tree]
+ var tokenStack = []
+ var listStack = []
+ var index = -1
+ var handler
+ var listStart
+
+ var context = {
+ stack: stack,
+ tokenStack: tokenStack,
+ config: config,
+ enter: enter,
+ exit: exit,
+ buffer: buffer,
+ resume: resume,
+ setData: setData,
+ getData: getData
+ }
+
+ while (++index < events.length) {
+ // We preprocess lists to add `listItem` tokens, and to infer whether
+ // items the list itself are spread out.
+ if (
+ events[index][1].type === 'listOrdered' ||
+ events[index][1].type === 'listUnordered'
+ ) {
+ if (events[index][0] === 'enter') {
+ listStack.push(index)
+ } else {
+ listStart = listStack.pop(index)
+ index = prepareList(events, listStart, index)
+ }
+ }
+ }
+
+ index = -1
+
+ while (++index < events.length) {
+ handler = config[events[index][0]]
+
+ if (own.call(handler, events[index][1].type)) {
+ handler[events[index][1].type].call(
+ assign({sliceSerialize: events[index][2].sliceSerialize}, context),
+ events[index][1]
+ )
+ }
+ }
+
+ if (tokenStack.length) {
+ throw new Error(
+ 'Cannot close document, a token (`' +
+ tokenStack[tokenStack.length - 1].type +
+ '`, ' +
+ stringifyPosition({
+ start: tokenStack[tokenStack.length - 1].start,
+ end: tokenStack[tokenStack.length - 1].end
+ }) +
+ ') is still open'
+ )
+ }
+
+ // Figure out `root` position.
+ tree.position = {
+ start: point(
+ events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}
+ ),
+
+ end: point(
+ events.length
+ ? events[events.length - 2][1].end
+ : {line: 1, column: 1, offset: 0}
+ )
+ }
+
+ index = -1
+ while (++index < config.transforms.length) {
+ tree = config.transforms[index](tree) || tree
+ }
+
+ return tree
+ }
+
+ function prepareList(events, start, length) {
+ var index = start - 1
+ var containerBalance = -1
+ var listSpread = false
+ var listItem
+ var tailIndex
+ var lineIndex
+ var tailEvent
+ var event
+ var firstBlankLineIndex
+ var atMarker
+
+ while (++index <= length) {
+ event = events[index]
+
+ if (
+ event[1].type === 'listUnordered' ||
+ event[1].type === 'listOrdered' ||
+ event[1].type === 'blockQuote'
+ ) {
+ if (event[0] === 'enter') {
+ containerBalance++
+ } else {
+ containerBalance--
+ }
+
+ atMarker = undefined
+ } else if (event[1].type === 'lineEndingBlank') {
+ if (event[0] === 'enter') {
+ if (
+ listItem &&
+ !atMarker &&
+ !containerBalance &&
+ !firstBlankLineIndex
+ ) {
+ firstBlankLineIndex = index
+ }
+
+ atMarker = undefined
+ }
+ } else if (
+ event[1].type === 'linePrefix' ||
+ event[1].type === 'listItemValue' ||
+ event[1].type === 'listItemMarker' ||
+ event[1].type === 'listItemPrefix' ||
+ event[1].type === 'listItemPrefixWhitespace'
+ ) {
+ // Empty.
+ } else {
+ atMarker = undefined
+ }
+
+ if (
+ (!containerBalance &&
+ event[0] === 'enter' &&
+ event[1].type === 'listItemPrefix') ||
+ (containerBalance === -1 &&
+ event[0] === 'exit' &&
+ (event[1].type === 'listUnordered' ||
+ event[1].type === 'listOrdered'))
+ ) {
+ if (listItem) {
+ tailIndex = index
+ lineIndex = undefined
+
+ while (tailIndex--) {
+ tailEvent = events[tailIndex]
+
+ if (
+ tailEvent[1].type === 'lineEnding' ||
+ tailEvent[1].type === 'lineEndingBlank'
+ ) {
+ if (tailEvent[0] === 'exit') continue
+
+ if (lineIndex) {
+ events[lineIndex][1].type = 'lineEndingBlank'
+ listSpread = true
+ }
+
+ tailEvent[1].type = 'lineEnding'
+ lineIndex = tailIndex
+ } else if (
+ tailEvent[1].type === 'linePrefix' ||
+ tailEvent[1].type === 'blockQuotePrefix' ||
+ tailEvent[1].type === 'blockQuotePrefixWhitespace' ||
+ tailEvent[1].type === 'blockQuoteMarker' ||
+ tailEvent[1].type === 'listItemIndent'
+ ) {
+ // Empty
+ } else {
+ break
+ }
+ }
+
+ if (
+ firstBlankLineIndex &&
+ (!lineIndex || firstBlankLineIndex < lineIndex)
+ ) {
+ listItem._spread = true
+ }
+
+ // Fix position.
+ listItem.end = point(
+ lineIndex ? events[lineIndex][1].start : event[1].end
+ )
+
+ events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])
+ index++
+ length++
+ }
+
+ // Create a new list item.
+ if (event[1].type === 'listItemPrefix') {
+ listItem = {
+ type: 'listItem',
+ _spread: false,
+ start: point(event[1].start)
+ }
+
+ events.splice(index, 0, ['enter', listItem, event[2]])
+ index++
+ length++
+ firstBlankLineIndex = undefined
+ atMarker = true
+ }
+ }
+ }
+
+ events[start][1]._spread = listSpread
+ return length
+ }
+
+ function setData(key, value) {
+ data[key] = value
+ }
+
+ function getData(key) {
+ return data[key]
+ }
+
+ function point(d) {
+ return {line: d.line, column: d.column, offset: d.offset}
+ }
+
+ function opener(create, and) {
+ return open
+
+ function open(token) {
+ enter.call(this, create(token), token)
+ if (and) and.call(this, token)
+ }
+ }
+
+ function buffer() {
+ this.stack.push({type: 'fragment', children: []})
+ }
+
+ function enter(node, token) {
+ this.stack[this.stack.length - 1].children.push(node)
+ this.stack.push(node)
+ this.tokenStack.push(token)
+ node.position = {start: point(token.start)}
+ return node
+ }
+
+ function closer(and) {
+ return close
+
+ function close(token) {
+ if (and) and.call(this, token)
+ exit.call(this, token)
+ }
+ }
+
+ function exit(token) {
+ var node = this.stack.pop()
+ var open = this.tokenStack.pop()
+
+ if (!open) {
+ throw new Error(
+ 'Cannot close `' +
+ token.type +
+ '` (' +
+ stringifyPosition({start: token.start, end: token.end}) +
+ '): it’s not open'
+ )
+ } else if (open.type !== token.type) {
+ throw new Error(
+ 'Cannot close `' +
+ token.type +
+ '` (' +
+ stringifyPosition({start: token.start, end: token.end}) +
+ '): a different token (`' +
+ open.type +
+ '`, ' +
+ stringifyPosition({start: open.start, end: open.end}) +
+ ') is open'
+ )
+ }
+
+ node.position.end = point(token.end)
+ return node
+ }
+
+ function resume() {
+ return toString(this.stack.pop())
+ }
+
+ //
+ // Handlers.
+ //
+
+ function onenterlistordered() {
+ setData('expectingFirstListItemValue', true)
+ }
+
+ function onenterlistitemvalue(token) {
+ if (getData('expectingFirstListItemValue')) {
+ this.stack[this.stack.length - 2].start = parseInt(
+ this.sliceSerialize(token),
+ 10
+ )
+
+ setData('expectingFirstListItemValue')
+ }
+ }
+
+ function onexitcodefencedfenceinfo() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].lang = data
+ }
+
+ function onexitcodefencedfencemeta() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].meta = data
+ }
+
+ function onexitcodefencedfence() {
+ // Exit if this is the closing fence.
+ if (getData('flowCodeInside')) return
+ this.buffer()
+ setData('flowCodeInside', true)
+ }
+
+ function onexitcodefenced() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data.replace(
+ /^(\r?\n|\r)|(\r?\n|\r)$/g,
+ ''
+ )
+
+ setData('flowCodeInside')
+ }
+
+ function onexitcodeindented() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexitdefinitionlabelstring(token) {
+ // Discard label, use the source content instead.
+ var label = this.resume()
+ this.stack[this.stack.length - 1].label = label
+ this.stack[this.stack.length - 1].identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase()
+ }
+
+ function onexitdefinitiontitlestring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].title = data
+ }
+
+ function onexitdefinitiondestinationstring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].url = data
+ }
+
+ function onexitatxheadingsequence(token) {
+ if (!this.stack[this.stack.length - 1].depth) {
+ this.stack[this.stack.length - 1].depth = this.sliceSerialize(
+ token
+ ).length
+ }
+ }
+
+ function onexitsetextheadingtext() {
+ setData('setextHeadingSlurpLineEnding', true)
+ }
+
+ function onexitsetextheadinglinesequence(token) {
+ this.stack[this.stack.length - 1].depth =
+ this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2
+ }
+
+ function onexitsetextheading() {
+ setData('setextHeadingSlurpLineEnding')
+ }
+
+ function onenterdata(token) {
+ var siblings = this.stack[this.stack.length - 1].children
+ var tail = siblings[siblings.length - 1]
+
+ if (!tail || tail.type !== 'text') {
+ // Add a new text node.
+ tail = text()
+ tail.position = {start: point(token.start)}
+ this.stack[this.stack.length - 1].children.push(tail)
+ }
+
+ this.stack.push(tail)
+ }
+
+ function onexitdata(token) {
+ var tail = this.stack.pop()
+ tail.value += this.sliceSerialize(token)
+ tail.position.end = point(token.end)
+ }
+
+ function onexitlineending(token) {
+ var context = this.stack[this.stack.length - 1]
+
+ // If we’re at a hard break, include the line ending in there.
+ if (getData('atHardBreak')) {
+ context.children[context.children.length - 1].position.end = point(
+ token.end
+ )
+
+ setData('atHardBreak')
+ return
+ }
+
+ if (
+ !getData('setextHeadingSlurpLineEnding') &&
+ config.canContainEols.indexOf(context.type) > -1
+ ) {
+ onenterdata.call(this, token)
+ onexitdata.call(this, token)
+ }
+ }
+
+ function onexithardbreak() {
+ setData('atHardBreak', true)
+ }
+
+ function onexithtmlflow() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexithtmltext() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexitcodetext() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexitlink() {
+ var context = this.stack[this.stack.length - 1]
+
+ // To do: clean.
+ if (getData('inReference')) {
+ context.type += 'Reference'
+ context.referenceType = getData('referenceType') || 'shortcut'
+ delete context.url
+ delete context.title
+ } else {
+ delete context.identifier
+ delete context.label
+ delete context.referenceType
+ }
+
+ setData('referenceType')
+ }
+
+ function onexitimage() {
+ var context = this.stack[this.stack.length - 1]
+
+ // To do: clean.
+ if (getData('inReference')) {
+ context.type += 'Reference'
+ context.referenceType = getData('referenceType') || 'shortcut'
+ delete context.url
+ delete context.title
+ } else {
+ delete context.identifier
+ delete context.label
+ delete context.referenceType
+ }
+
+ setData('referenceType')
+ }
+
+ function onexitlabeltext(token) {
+ this.stack[this.stack.length - 2].identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase()
+ }
+
+ function onexitlabel() {
+ var fragment = this.stack[this.stack.length - 1]
+ var value = this.resume()
+
+ this.stack[this.stack.length - 1].label = value
+
+ // Assume a reference.
+ setData('inReference', true)
+
+ if (this.stack[this.stack.length - 1].type === 'link') {
+ this.stack[this.stack.length - 1].children = fragment.children
+ } else {
+ this.stack[this.stack.length - 1].alt = value
+ }
+ }
+
+ function onexitresourcedestinationstring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].url = data
+ }
+
+ function onexitresourcetitlestring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].title = data
+ }
+
+ function onexitresource() {
+ setData('inReference')
+ }
+
+ function onenterreference() {
+ setData('referenceType', 'collapsed')
+ }
+
+ function onexitreferencestring(token) {
+ var label = this.resume()
+ this.stack[this.stack.length - 1].label = label
+ this.stack[this.stack.length - 1].identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase()
+ setData('referenceType', 'full')
+ }
+
+ function onexitcharacterreferencemarker(token) {
+ setData('characterReferenceType', token.type)
+ }
+
+ function onexitcharacterreferencevalue(token) {
+ var data = this.sliceSerialize(token)
+ var type = getData('characterReferenceType')
+ var value
+ var tail
+
+ if (type) {
+ value = safeFromInt(
+ data,
+ type === 'characterReferenceMarkerNumeric' ? 10 : 16
+ )
+
+ setData('characterReferenceType')
+ } else {
+ value = decode(data)
+ }
+
+ tail = this.stack.pop()
+ tail.value += value
+ tail.position.end = point(token.end)
+ }
+
+ function onexitautolinkprotocol(token) {
+ onexitdata.call(this, token)
+ this.stack[this.stack.length - 1].url = this.sliceSerialize(token)
+ }
+
+ function onexitautolinkemail(token) {
+ onexitdata.call(this, token)
+ this.stack[this.stack.length - 1].url =
+ 'mailto:' + this.sliceSerialize(token)
+ }
+
+ //
+ // Creaters.
+ //
+
+ function blockQuote() {
+ return {type: 'blockquote', children: []}
+ }
+
+ function codeFlow() {
+ return {type: 'code', lang: null, meta: null, value: ''}
+ }
+
+ function codeText() {
+ return {type: 'inlineCode', value: ''}
+ }
+
+ function definition() {
+ return {
+ type: 'definition',
+ identifier: '',
+ label: null,
+ title: null,
+ url: ''
+ }
+ }
+
+ function emphasis() {
+ return {type: 'emphasis', children: []}
+ }
+
+ function heading() {
+ return {type: 'heading', depth: undefined, children: []}
+ }
+
+ function hardBreak() {
+ return {type: 'break'}
+ }
+
+ function html() {
+ return {type: 'html', value: ''}
+ }
+
+ function image() {
+ return {type: 'image', title: null, url: '', alt: null}
+ }
+
+ function link() {
+ return {type: 'link', title: null, url: '', children: []}
+ }
+
+ function list(token) {
+ return {
+ type: 'list',
+ ordered: token.type === 'listOrdered',
+ start: null,
+ spread: token._spread,
+ children: []
+ }
+ }
+
+ function listItem(token) {
+ return {
+ type: 'listItem',
+ spread: token._spread,
+ checked: null,
+ children: []
+ }
+ }
+
+ function paragraph() {
+ return {type: 'paragraph', children: []}
+ }
+
+ function strong() {
+ return {type: 'strong', children: []}
+ }
+
+ function text() {
+ return {type: 'text', value: ''}
+ }
+
+ function thematicBreak() {
+ return {type: 'thematicBreak'}
+ }
+}
+
+function configure(config, extensions) {
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(config, extensions[index])
+ }
+
+ return config
+}
+
+function extension(config, extension) {
+ var key
+ var left
+
+ for (key in extension) {
+ left = own.call(config, key) ? config[key] : (config[key] = {})
+
+ if (key === 'canContainEols' || key === 'transforms') {
+ config[key] = [].concat(left, extension[key])
+ } else {
+ Object.assign(left, extension[key])
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/index.js b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/index.js
new file mode 100644
index 0000000000..2b74f75ae9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/index.js
@@ -0,0 +1,3 @@
+'use strict'
+
+module.exports = require('./dist')
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/lib/index.js b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/lib/index.js
new file mode 100644
index 0000000000..1e2e7806c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/lib/index.js
@@ -0,0 +1,819 @@
+'use strict'
+
+module.exports = fromMarkdown
+
+// These three are compiled away in the `dist/`
+var codes = require('micromark/dist/character/codes')
+var constants = require('micromark/dist/constant/constants')
+var types = require('micromark/dist/constant/types')
+
+var toString = require('mdast-util-to-string')
+var assign = require('micromark/dist/constant/assign')
+var own = require('micromark/dist/constant/has-own-property')
+var normalizeIdentifier = require('micromark/dist/util/normalize-identifier')
+var safeFromInt = require('micromark/dist/util/safe-from-int')
+var parser = require('micromark/dist/parse')
+var preprocessor = require('micromark/dist/preprocess')
+var postprocess = require('micromark/dist/postprocess')
+var decode = require('parse-entities/decode-entity')
+var stringifyPosition = require('unist-util-stringify-position')
+
+function fromMarkdown(value, encoding, options) {
+ if (typeof encoding !== 'string') {
+ options = encoding
+ encoding = undefined
+ }
+
+ return compiler(options)(
+ postprocess(
+ parser(options).document().write(preprocessor()(value, encoding, true))
+ )
+ )
+}
+
+// Note this compiler only understand complete buffering, not streaming.
+function compiler(options) {
+ var settings = options || {}
+ var config = configure(
+ {
+ transforms: [],
+ canContainEols: [
+ 'emphasis',
+ 'fragment',
+ 'heading',
+ 'paragraph',
+ 'strong'
+ ],
+ enter: {
+ autolink: opener(link),
+ autolinkProtocol: onenterdata,
+ autolinkEmail: onenterdata,
+ atxHeading: opener(heading),
+ blockQuote: opener(blockQuote),
+ characterEscape: onenterdata,
+ characterReference: onenterdata,
+ codeFenced: opener(codeFlow),
+ codeFencedFenceInfo: buffer,
+ codeFencedFenceMeta: buffer,
+ codeIndented: opener(codeFlow, buffer),
+ codeText: opener(codeText, buffer),
+ codeTextData: onenterdata,
+ data: onenterdata,
+ codeFlowValue: onenterdata,
+ definition: opener(definition),
+ definitionDestinationString: buffer,
+ definitionLabelString: buffer,
+ definitionTitleString: buffer,
+ emphasis: opener(emphasis),
+ hardBreakEscape: opener(hardBreak),
+ hardBreakTrailing: opener(hardBreak),
+ htmlFlow: opener(html, buffer),
+ htmlFlowData: onenterdata,
+ htmlText: opener(html, buffer),
+ htmlTextData: onenterdata,
+ image: opener(image),
+ label: buffer,
+ link: opener(link),
+ listItem: opener(listItem),
+ listItemValue: onenterlistitemvalue,
+ listOrdered: opener(list, onenterlistordered),
+ listUnordered: opener(list),
+ paragraph: opener(paragraph),
+ reference: onenterreference,
+ referenceString: buffer,
+ resourceDestinationString: buffer,
+ resourceTitleString: buffer,
+ setextHeading: opener(heading),
+ strong: opener(strong),
+ thematicBreak: opener(thematicBreak)
+ },
+ exit: {
+ atxHeading: closer(),
+ atxHeadingSequence: onexitatxheadingsequence,
+ autolink: closer(),
+ autolinkEmail: onexitautolinkemail,
+ autolinkProtocol: onexitautolinkprotocol,
+ blockQuote: closer(),
+ characterEscapeValue: onexitdata,
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
+ characterReferenceValue: onexitcharacterreferencevalue,
+ codeFenced: closer(onexitcodefenced),
+ codeFencedFence: onexitcodefencedfence,
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
+ codeFencedFenceMeta: onexitcodefencedfencemeta,
+ codeFlowValue: onexitdata,
+ codeIndented: closer(onexitcodeindented),
+ codeText: closer(onexitcodetext),
+ codeTextData: onexitdata,
+ data: onexitdata,
+ definition: closer(),
+ definitionDestinationString: onexitdefinitiondestinationstring,
+ definitionLabelString: onexitdefinitionlabelstring,
+ definitionTitleString: onexitdefinitiontitlestring,
+ emphasis: closer(),
+ hardBreakEscape: closer(onexithardbreak),
+ hardBreakTrailing: closer(onexithardbreak),
+ htmlFlow: closer(onexithtmlflow),
+ htmlFlowData: onexitdata,
+ htmlText: closer(onexithtmltext),
+ htmlTextData: onexitdata,
+ image: closer(onexitimage),
+ label: onexitlabel,
+ labelText: onexitlabeltext,
+ lineEnding: onexitlineending,
+ link: closer(onexitlink),
+ listItem: closer(),
+ listOrdered: closer(),
+ listUnordered: closer(),
+ paragraph: closer(),
+ referenceString: onexitreferencestring,
+ resourceDestinationString: onexitresourcedestinationstring,
+ resourceTitleString: onexitresourcetitlestring,
+ resource: onexitresource,
+ setextHeading: closer(onexitsetextheading),
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
+ setextHeadingText: onexitsetextheadingtext,
+ strong: closer(),
+ thematicBreak: closer()
+ }
+ },
+ settings.mdastExtensions || []
+ )
+
+ var data = {}
+
+ return compile
+
+ function compile(events) {
+ var tree = {type: 'root', children: []}
+ var stack = [tree]
+ var tokenStack = []
+ var listStack = []
+ var index = -1
+ var handler
+ var listStart
+
+ var context = {
+ stack: stack,
+ tokenStack: tokenStack,
+ config: config,
+ enter: enter,
+ exit: exit,
+ buffer: buffer,
+ resume: resume,
+ setData: setData,
+ getData: getData
+ }
+
+ while (++index < events.length) {
+ // We preprocess lists to add `listItem` tokens, and to infer whether
+ // items the list itself are spread out.
+ if (
+ events[index][1].type === types.listOrdered ||
+ events[index][1].type === types.listUnordered
+ ) {
+ if (events[index][0] === 'enter') {
+ listStack.push(index)
+ } else {
+ listStart = listStack.pop(index)
+ index = prepareList(events, listStart, index)
+ }
+ }
+ }
+
+ index = -1
+
+ while (++index < events.length) {
+ handler = config[events[index][0]]
+
+ if (own.call(handler, events[index][1].type)) {
+ handler[events[index][1].type].call(
+ assign({sliceSerialize: events[index][2].sliceSerialize}, context),
+ events[index][1]
+ )
+ }
+ }
+
+ if (tokenStack.length) {
+ throw new Error(
+ 'Cannot close document, a token (`' +
+ tokenStack[tokenStack.length - 1].type +
+ '`, ' +
+ stringifyPosition({
+ start: tokenStack[tokenStack.length - 1].start,
+ end: tokenStack[tokenStack.length - 1].end
+ }) +
+ ') is still open'
+ )
+ }
+
+ // Figure out `root` position.
+ tree.position = {
+ start: point(
+ events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}
+ ),
+ end: point(
+ events.length
+ ? events[events.length - 2][1].end
+ : {line: 1, column: 1, offset: 0}
+ )
+ }
+
+ index = -1
+ while (++index < config.transforms.length) {
+ tree = config.transforms[index](tree) || tree
+ }
+
+ return tree
+ }
+
+ function prepareList(events, start, length) {
+ var index = start - 1
+ var containerBalance = -1
+ var listSpread = false
+ var listItem
+ var tailIndex
+ var lineIndex
+ var tailEvent
+ var event
+ var firstBlankLineIndex
+ var atMarker
+
+ while (++index <= length) {
+ event = events[index]
+
+ if (
+ event[1].type === types.listUnordered ||
+ event[1].type === types.listOrdered ||
+ event[1].type === types.blockQuote
+ ) {
+ if (event[0] === 'enter') {
+ containerBalance++
+ } else {
+ containerBalance--
+ }
+
+ atMarker = undefined
+ } else if (event[1].type === types.lineEndingBlank) {
+ if (event[0] === 'enter') {
+ if (
+ listItem &&
+ !atMarker &&
+ !containerBalance &&
+ !firstBlankLineIndex
+ ) {
+ firstBlankLineIndex = index
+ }
+
+ atMarker = undefined
+ }
+ } else if (
+ event[1].type === types.linePrefix ||
+ event[1].type === types.listItemValue ||
+ event[1].type === types.listItemMarker ||
+ event[1].type === types.listItemPrefix ||
+ event[1].type === types.listItemPrefixWhitespace
+ ) {
+ // Empty.
+ } else {
+ atMarker = undefined
+ }
+
+ if (
+ (!containerBalance &&
+ event[0] === 'enter' &&
+ event[1].type === types.listItemPrefix) ||
+ (containerBalance === -1 &&
+ event[0] === 'exit' &&
+ (event[1].type === types.listUnordered ||
+ event[1].type === types.listOrdered))
+ ) {
+ if (listItem) {
+ tailIndex = index
+ lineIndex = undefined
+
+ while (tailIndex--) {
+ tailEvent = events[tailIndex]
+
+ if (
+ tailEvent[1].type === types.lineEnding ||
+ tailEvent[1].type === types.lineEndingBlank
+ ) {
+ if (tailEvent[0] === 'exit') continue
+
+ if (lineIndex) {
+ events[lineIndex][1].type = types.lineEndingBlank
+ listSpread = true
+ }
+
+ tailEvent[1].type = types.lineEnding
+ lineIndex = tailIndex
+ } else if (
+ tailEvent[1].type === types.linePrefix ||
+ tailEvent[1].type === types.blockQuotePrefix ||
+ tailEvent[1].type === types.blockQuotePrefixWhitespace ||
+ tailEvent[1].type === types.blockQuoteMarker ||
+ tailEvent[1].type === types.listItemIndent
+ ) {
+ // Empty
+ } else {
+ break
+ }
+ }
+
+ if (
+ firstBlankLineIndex &&
+ (!lineIndex || firstBlankLineIndex < lineIndex)
+ ) {
+ listItem._spread = true
+ }
+
+ // Fix position.
+ listItem.end = point(
+ lineIndex ? events[lineIndex][1].start : event[1].end
+ )
+
+ events.splice(lineIndex || index, 0, ['exit', listItem, event[2]])
+ index++
+ length++
+ }
+
+ // Create a new list item.
+ if (event[1].type === types.listItemPrefix) {
+ listItem = {
+ type: 'listItem',
+ _spread: false,
+ start: point(event[1].start)
+ }
+ events.splice(index, 0, ['enter', listItem, event[2]])
+ index++
+ length++
+ firstBlankLineIndex = undefined
+ atMarker = true
+ }
+ }
+ }
+
+ events[start][1]._spread = listSpread
+ return length
+ }
+
+ function setData(key, value) {
+ data[key] = value
+ }
+
+ function getData(key) {
+ return data[key]
+ }
+
+ function point(d) {
+ return {line: d.line, column: d.column, offset: d.offset}
+ }
+
+ function opener(create, and) {
+ return open
+
+ function open(token) {
+ enter.call(this, create(token), token)
+ if (and) and.call(this, token)
+ }
+ }
+
+ function buffer() {
+ this.stack.push({type: 'fragment', children: []})
+ }
+
+ function enter(node, token) {
+ this.stack[this.stack.length - 1].children.push(node)
+ this.stack.push(node)
+ this.tokenStack.push(token)
+ node.position = {start: point(token.start)}
+ return node
+ }
+
+ function closer(and) {
+ return close
+
+ function close(token) {
+ if (and) and.call(this, token)
+ exit.call(this, token)
+ }
+ }
+
+ function exit(token) {
+ var node = this.stack.pop()
+ var open = this.tokenStack.pop()
+
+ if (!open) {
+ throw new Error(
+ 'Cannot close `' +
+ token.type +
+ '` (' +
+ stringifyPosition({start: token.start, end: token.end}) +
+ '): it’s not open'
+ )
+ } else if (open.type !== token.type) {
+ throw new Error(
+ 'Cannot close `' +
+ token.type +
+ '` (' +
+ stringifyPosition({start: token.start, end: token.end}) +
+ '): a different token (`' +
+ open.type +
+ '`, ' +
+ stringifyPosition({start: open.start, end: open.end}) +
+ ') is open'
+ )
+ }
+
+ node.position.end = point(token.end)
+ return node
+ }
+
+ function resume() {
+ return toString(this.stack.pop())
+ }
+
+ //
+ // Handlers.
+ //
+
+ function onenterlistordered() {
+ setData('expectingFirstListItemValue', true)
+ }
+
+ function onenterlistitemvalue(token) {
+ if (getData('expectingFirstListItemValue')) {
+ this.stack[this.stack.length - 2].start = parseInt(
+ this.sliceSerialize(token),
+ constants.numericBaseDecimal
+ )
+ setData('expectingFirstListItemValue')
+ }
+ }
+
+ function onexitcodefencedfenceinfo() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].lang = data
+ }
+
+ function onexitcodefencedfencemeta() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].meta = data
+ }
+
+ function onexitcodefencedfence() {
+ // Exit if this is the closing fence.
+ if (getData('flowCodeInside')) return
+ this.buffer()
+ setData('flowCodeInside', true)
+ }
+
+ function onexitcodefenced() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data.replace(
+ /^(\r?\n|\r)|(\r?\n|\r)$/g,
+ ''
+ )
+ setData('flowCodeInside')
+ }
+
+ function onexitcodeindented() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexitdefinitionlabelstring(token) {
+ // Discard label, use the source content instead.
+ var label = this.resume()
+ this.stack[this.stack.length - 1].label = label
+ this.stack[this.stack.length - 1].identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase()
+ }
+
+ function onexitdefinitiontitlestring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].title = data
+ }
+
+ function onexitdefinitiondestinationstring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].url = data
+ }
+
+ function onexitatxheadingsequence(token) {
+ if (!this.stack[this.stack.length - 1].depth) {
+ this.stack[this.stack.length - 1].depth = this.sliceSerialize(
+ token
+ ).length
+ }
+ }
+
+ function onexitsetextheadingtext() {
+ setData('setextHeadingSlurpLineEnding', true)
+ }
+
+ function onexitsetextheadinglinesequence(token) {
+ this.stack[this.stack.length - 1].depth =
+ this.sliceSerialize(token).charCodeAt(0) === codes.equalsTo ? 1 : 2
+ }
+
+ function onexitsetextheading() {
+ setData('setextHeadingSlurpLineEnding')
+ }
+
+ function onenterdata(token) {
+ var siblings = this.stack[this.stack.length - 1].children
+ var tail = siblings[siblings.length - 1]
+
+ if (!tail || tail.type !== 'text') {
+ // Add a new text node.
+ tail = text()
+ tail.position = {start: point(token.start)}
+ this.stack[this.stack.length - 1].children.push(tail)
+ }
+
+ this.stack.push(tail)
+ }
+
+ function onexitdata(token) {
+ var tail = this.stack.pop()
+ tail.value += this.sliceSerialize(token)
+ tail.position.end = point(token.end)
+ }
+
+ function onexitlineending(token) {
+ var context = this.stack[this.stack.length - 1]
+
+ // If we’re at a hard break, include the line ending in there.
+ if (getData('atHardBreak')) {
+ context.children[context.children.length - 1].position.end = point(
+ token.end
+ )
+ setData('atHardBreak')
+ return
+ }
+
+ if (
+ !getData('setextHeadingSlurpLineEnding') &&
+ config.canContainEols.indexOf(context.type) > -1
+ ) {
+ onenterdata.call(this, token)
+ onexitdata.call(this, token)
+ }
+ }
+
+ function onexithardbreak() {
+ setData('atHardBreak', true)
+ }
+
+ function onexithtmlflow() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexithtmltext() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexitcodetext() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].value = data
+ }
+
+ function onexitlink() {
+ var context = this.stack[this.stack.length - 1]
+
+ // To do: clean.
+ if (getData('inReference')) {
+ context.type += 'Reference'
+ context.referenceType = getData('referenceType') || 'shortcut'
+ delete context.url
+ delete context.title
+ } else {
+ delete context.identifier
+ delete context.label
+ delete context.referenceType
+ }
+
+ setData('referenceType')
+ }
+
+ function onexitimage() {
+ var context = this.stack[this.stack.length - 1]
+
+ // To do: clean.
+ if (getData('inReference')) {
+ context.type += 'Reference'
+ context.referenceType = getData('referenceType') || 'shortcut'
+ delete context.url
+ delete context.title
+ } else {
+ delete context.identifier
+ delete context.label
+ delete context.referenceType
+ }
+
+ setData('referenceType')
+ }
+
+ function onexitlabeltext(token) {
+ this.stack[this.stack.length - 2].identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase()
+ }
+
+ function onexitlabel() {
+ var fragment = this.stack[this.stack.length - 1]
+ var value = this.resume()
+
+ this.stack[this.stack.length - 1].label = value
+
+ // Assume a reference.
+ setData('inReference', true)
+
+ if (this.stack[this.stack.length - 1].type === 'link') {
+ this.stack[this.stack.length - 1].children = fragment.children
+ } else {
+ this.stack[this.stack.length - 1].alt = value
+ }
+ }
+
+ function onexitresourcedestinationstring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].url = data
+ }
+
+ function onexitresourcetitlestring() {
+ var data = this.resume()
+ this.stack[this.stack.length - 1].title = data
+ }
+
+ function onexitresource() {
+ setData('inReference')
+ }
+
+ function onenterreference() {
+ setData('referenceType', 'collapsed')
+ }
+
+ function onexitreferencestring(token) {
+ var label = this.resume()
+ this.stack[this.stack.length - 1].label = label
+ this.stack[this.stack.length - 1].identifier = normalizeIdentifier(
+ this.sliceSerialize(token)
+ ).toLowerCase()
+ setData('referenceType', 'full')
+ }
+
+ function onexitcharacterreferencemarker(token) {
+ setData('characterReferenceType', token.type)
+ }
+
+ function onexitcharacterreferencevalue(token) {
+ var data = this.sliceSerialize(token)
+ var type = getData('characterReferenceType')
+ var value
+ var tail
+
+ if (type) {
+ value = safeFromInt(
+ data,
+ type === types.characterReferenceMarkerNumeric
+ ? constants.numericBaseDecimal
+ : constants.numericBaseHexadecimal
+ )
+ setData('characterReferenceType')
+ } else {
+ value = decode(data)
+ }
+
+ tail = this.stack.pop()
+ tail.value += value
+ tail.position.end = point(token.end)
+ }
+
+ function onexitautolinkprotocol(token) {
+ onexitdata.call(this, token)
+ this.stack[this.stack.length - 1].url = this.sliceSerialize(token)
+ }
+
+ function onexitautolinkemail(token) {
+ onexitdata.call(this, token)
+ this.stack[this.stack.length - 1].url =
+ 'mailto:' + this.sliceSerialize(token)
+ }
+
+ //
+ // Creaters.
+ //
+
+ function blockQuote() {
+ return {type: 'blockquote', children: []}
+ }
+
+ function codeFlow() {
+ return {type: 'code', lang: null, meta: null, value: ''}
+ }
+
+ function codeText() {
+ return {type: 'inlineCode', value: ''}
+ }
+
+ function definition() {
+ return {
+ type: 'definition',
+ identifier: '',
+ label: null,
+ title: null,
+ url: ''
+ }
+ }
+
+ function emphasis() {
+ return {type: 'emphasis', children: []}
+ }
+
+ function heading() {
+ return {type: 'heading', depth: undefined, children: []}
+ }
+
+ function hardBreak() {
+ return {type: 'break'}
+ }
+
+ function html() {
+ return {type: 'html', value: ''}
+ }
+
+ function image() {
+ return {type: 'image', title: null, url: '', alt: null}
+ }
+
+ function link() {
+ return {type: 'link', title: null, url: '', children: []}
+ }
+
+ function list(token) {
+ return {
+ type: 'list',
+ ordered: token.type === 'listOrdered',
+ start: null,
+ spread: token._spread,
+ children: []
+ }
+ }
+
+ function listItem(token) {
+ return {
+ type: 'listItem',
+ spread: token._spread,
+ checked: null,
+ children: []
+ }
+ }
+
+ function paragraph() {
+ return {type: 'paragraph', children: []}
+ }
+
+ function strong() {
+ return {type: 'strong', children: []}
+ }
+
+ function text() {
+ return {type: 'text', value: ''}
+ }
+
+ function thematicBreak() {
+ return {type: 'thematicBreak'}
+ }
+}
+
+function configure(config, extensions) {
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(config, extensions[index])
+ }
+
+ return config
+}
+
+function extension(config, extension) {
+ var key
+ var left
+
+ for (key in extension) {
+ left = own.call(config, key) ? config[key] : (config[key] = {})
+
+ if (key === 'canContainEols' || key === 'transforms') {
+ config[key] = [].concat(left, extension[key])
+ } else {
+ Object.assign(left, extension[key])
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/license b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/license
new file mode 100644
index 0000000000..39372356c4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2020 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/package.json b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/package.json
new file mode 100644
index 0000000000..b17e76df3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/package.json
@@ -0,0 +1,109 @@
+{
+ "name": "mdast-util-from-markdown",
+ "version": "0.8.5",
+ "description": "mdast utility to parse markdown",
+ "license": "MIT",
+ "keywords": [
+ "unist",
+ "mdast",
+ "mdast-util",
+ "util",
+ "utility",
+ "markdown",
+ "markup",
+ "parse",
+ "syntax",
+ "tree",
+ "ast"
+ ],
+ "repository": "syntax-tree/mdast-util-from-markdown",
+ "bugs": "https://github.com/syntax-tree/mdast-util-from-markdown/issues",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "files": [
+ "dist/",
+ "lib/",
+ "index.js",
+ "types/index.d.ts"
+ ],
+ "types": "types",
+ "dependencies": {
+ "@types/mdast": "^3.0.0",
+ "mdast-util-to-string": "^2.0.0",
+ "micromark": "~2.11.0",
+ "parse-entities": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
+ },
+ "devDependencies": {
+ "@babel/cli": "^7.0.0",
+ "@babel/core": "^7.0.0",
+ "babel-plugin-inline-constants": "^1.0.0",
+ "browserify": "^17.0.0",
+ "commonmark.json": "^0.29.0",
+ "dtslint": "^4.0.0",
+ "gzip-size-cli": "^4.0.0",
+ "hast-util-to-html": "^7.0.0",
+ "mdast-util-to-hast": "^10.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^2.0.0",
+ "rehype-parse": "^7.0.0",
+ "rehype-stringify": "^8.0.0",
+ "remark-cli": "^9.0.0",
+ "remark-preset-wooorm": "^8.0.0",
+ "tape": "^5.0.0",
+ "tinyify": "^3.0.0",
+ "unified": "^9.0.0",
+ "xo": "^0.37.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
+ "generate-dist": "babel lib/ --out-dir dist/ --quiet --retain-lines; prettier dist/ --loglevel error --write",
+ "generate-size": "browserify . -p tinyify -s mdast-util-from-markdown -o mdast-util-from-markdown.min.js; gzip-size mdast-util-from-markdown.min.js --raw",
+ "generate": "npm run generate-dist && npm run generate-size",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test/index.js",
+ "test-types": "dtslint types",
+ "test": "npm run format && npm run generate && npm run test-coverage && npm run test-types"
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "rules": {
+ "complexity": "off",
+ "guard-for-in": "off",
+ "unicorn/explicit-length-check": "off",
+ "unicorn/no-array-callback-reference": "off",
+ "unicorn/prefer-includes": "off",
+ "unicorn/prefer-number-properties": "off",
+ "unicorn/prefer-optional-catch-binding": "off"
+ },
+ "ignores": [
+ "types/"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/readme.md b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/readme.md
new file mode 100644
index 0000000000..30362141dc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-from-markdown/readme.md
@@ -0,0 +1,206 @@
+# mdast-util-from-markdown
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+[![Sponsors][sponsors-badge]][collective]
+[![Backers][backers-badge]][collective]
+[![Chat][chat-badge]][chat]
+
+**[mdast][]** utility to parse markdown.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install mdast-util-from-markdown
+```
+
+## Use
+
+Say we have the following markdown file, `example.md`:
+
+```markdown
+## Hello, *World*!
+```
+
+And our script, `example.js`, looks as follows:
+
+```js
+var fs = require('fs')
+var fromMarkdown = require('mdast-util-from-markdown')
+
+var doc = fs.readFileSync('example.md')
+
+var tree = fromMarkdown(doc)
+
+console.log(tree)
+```
+
+Now, running `node example` yields (positional info removed for brevity):
+
+```js
+{
+ type: 'root',
+ children: [
+ {
+ type: 'heading',
+ depth: 2,
+ children: [
+ {type: 'text', value: 'Hello, '},
+ {
+ type: 'emphasis',
+ children: [{type: 'text', value: 'World'}]
+ },
+ {type: 'text', value: '!'}
+ ]
+ }
+ ]
+}
+```
+
+## API
+
+### `fromMarkdown(doc[, encoding][, options])`
+
+Parse markdown to a **[mdast][]** tree.
+
+##### Parameters
+
+###### `doc`
+
+Value to parse (`string` or [`Buffer`][buffer]).
+
+###### `encoding`
+
+[Character encoding][encoding] to understand `doc` as when it’s a
+[`Buffer`][buffer] (`string`, default: `'utf8'`).
+
+###### `options.extensions`
+
+Array of syntax extensions (`Array.<MicromarkSyntaxExtension>`, default: `[]`).
+Passed to [`micromark` as `extensions`][micromark-extensions].
+
+###### `options.mdastExtensions`
+
+Array of mdast extensions (`Array.<MdastExtension>`, default: `[]`).
+
+##### Returns
+
+[`Root`][root].
+
+## List of extensions
+
+* [`syntax-tree/mdast-util-directive`](https://github.com/syntax-tree/mdast-util-directive)
+ — parse directives
+* [`syntax-tree/mdast-util-footnote`](https://github.com/syntax-tree/mdast-util-footnote)
+ — parse footnotes
+* [`syntax-tree/mdast-util-frontmatter`](https://github.com/syntax-tree/mdast-util-frontmatter)
+ — parse frontmatter (YAML, TOML, more)
+* [`syntax-tree/mdast-util-gfm`](https://github.com/syntax-tree/mdast-util-gfm)
+ — parse GFM
+* [`syntax-tree/mdast-util-gfm-autolink-literal`](https://github.com/syntax-tree/mdast-util-gfm-autolink-literal)
+ — parse GFM autolink literals
+* [`syntax-tree/mdast-util-gfm-strikethrough`](https://github.com/syntax-tree/mdast-util-gfm-strikethrough)
+ — parse GFM strikethrough
+* [`syntax-tree/mdast-util-gfm-table`](https://github.com/syntax-tree/mdast-util-gfm-table)
+ — parse GFM tables
+* [`syntax-tree/mdast-util-gfm-task-list-item`](https://github.com/syntax-tree/mdast-util-gfm-task-list-item)
+ — parse GFM task list items
+* [`syntax-tree/mdast-util-math`](https://github.com/syntax-tree/mdast-util-math)
+ — parse math
+* [`syntax-tree/mdast-util-mdx`](https://github.com/syntax-tree/mdast-util-mdx)
+ — parse MDX or MDX.js
+* [`syntax-tree/mdast-util-mdx-expression`](https://github.com/syntax-tree/mdast-util-mdx-expression)
+ — parse MDX or MDX.js expressions
+* [`syntax-tree/mdast-util-mdx-jsx`](https://github.com/syntax-tree/mdast-util-mdx-jsx)
+ — parse MDX or MDX.js JSX
+* [`syntax-tree/mdast-util-mdxjs-esm`](https://github.com/syntax-tree/mdast-util-mdxjs-esm)
+ — parse MDX.js ESM
+
+## Security
+
+As Markdown is sometimes used for HTML, and improper use of HTML can open you up
+to a [cross-site scripting (XSS)][xss] attack, use of `mdast-util-from-markdown`
+can also be unsafe.
+When going to HTML, use this utility in combination with
+[`hast-util-sanitize`][sanitize] to make the tree safe.
+
+## Related
+
+* [`micromark/micromark`](https://github.com/micromark/micromark)
+ — the smallest commonmark-compliant markdown parser that exists
+* [`remarkjs/remark`](https://github.com/remarkjs/remark)
+ — markdown processor powered by plugins
+* [`syntax-tree/mdast-util-to-markdown`](https://github.com/syntax-tree/mdast-util-to-markdown)
+ — serialize mdast to markdown
+
+## Contribute
+
+See [`contributing.md` in `syntax-tree/.github`][contributing] for ways to get
+started.
+See [`support.md`][support] for ways to get help.
+
+This project has a [code of conduct][coc].
+By interacting with this repository, organization, or community you agree to
+abide by its terms.
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://github.com/syntax-tree/mdast-util-from-markdown/workflows/main/badge.svg
+
+[build]: https://github.com/syntax-tree/mdast-util-from-markdown/actions
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/mdast-util-from-markdown.svg
+
+[coverage]: https://codecov.io/github/syntax-tree/mdast-util-from-markdown
+
+[downloads-badge]: https://img.shields.io/npm/dm/mdast-util-from-markdown.svg
+
+[downloads]: https://www.npmjs.com/package/mdast-util-from-markdown
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/mdast-util-from-markdown.svg
+
+[size]: https://bundlephobia.com/result?p=mdast-util-from-markdown
+
+[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
+
+[backers-badge]: https://opencollective.com/unified/backers/badge.svg
+
+[collective]: https://opencollective.com/unified
+
+[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
+
+[chat]: https://github.com/syntax-tree/unist/discussions
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[contributing]: https://github.com/syntax-tree/.github/blob/HEAD/contributing.md
+
+[support]: https://github.com/syntax-tree/.github/blob/HEAD/support.md
+
+[coc]: https://github.com/syntax-tree/.github/blob/HEAD/code-of-conduct.md
+
+[mdast]: https://github.com/syntax-tree/mdast
+
+[root]: https://github.com/syntax-tree/mdast#root
+
+[encoding]: https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
+
+[buffer]: https://nodejs.org/api/buffer.html
+
+[xss]: https://en.wikipedia.org/wiki/Cross-site_scripting
+
+[sanitize]: https://github.com/syntax-tree/hast-util-sanitize
+
+[micromark-extensions]: https://github.com/micromark/micromark#optionsextensions
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-to-string/index.js b/tools/node_modules/eslint/node_modules/mdast-util-to-string/index.js
new file mode 100644
index 0000000000..0ae5f1dbdb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-to-string/index.js
@@ -0,0 +1,29 @@
+'use strict'
+
+module.exports = toString
+
+// Get the text content of a node.
+// Prefer the node’s plain-text fields, otherwise serialize its children,
+// and if the given value is an array, serialize the nodes in it.
+function toString(node) {
+ return (
+ (node &&
+ (node.value ||
+ node.alt ||
+ node.title ||
+ ('children' in node && all(node.children)) ||
+ ('length' in node && all(node)))) ||
+ ''
+ )
+}
+
+function all(values) {
+ var result = []
+ var index = -1
+
+ while (++index < values.length) {
+ result[index] = toString(values[index])
+ }
+
+ return result.join('')
+}
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-to-string/license b/tools/node_modules/eslint/node_modules/mdast-util-to-string/license
new file mode 100644
index 0000000000..32e7a3d93c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-to-string/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-to-string/package.json b/tools/node_modules/eslint/node_modules/mdast-util-to-string/package.json
new file mode 100644
index 0000000000..124287e297
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-to-string/package.json
@@ -0,0 +1,80 @@
+{
+ "name": "mdast-util-to-string",
+ "version": "2.0.0",
+ "description": "mdast utility to get the plain text content of a node",
+ "license": "MIT",
+ "keywords": [
+ "unist",
+ "mdast",
+ "mdast-util",
+ "util",
+ "utility",
+ "markdown",
+ "node",
+ "string",
+ "serialize"
+ ],
+ "repository": "syntax-tree/mdast-util-to-string",
+ "bugs": "https://github.com/syntax-tree/mdast-util-to-string/issues",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "files": [
+ "index.js",
+ "types/index.d.ts"
+ ],
+ "types": "types/index.d.ts",
+ "devDependencies": {
+ "browserify": "^17.0.0",
+ "dtslint": "^4.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^2.0.0",
+ "remark-cli": "^9.0.0",
+ "remark-preset-wooorm": "^8.0.0",
+ "tape": "^5.0.0",
+ "tinyify": "^3.0.0",
+ "xo": "^0.34.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
+ "build-bundle": "browserify . -s mdastUtilToString -o mdast-util-to-string.js",
+ "build-mangle": "browserify . -s mdastUtilToString -o mdast-util-to-string.min.js -p tinyify",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test-types": "dtslint types",
+ "test": "npm run format && npm run build && npm run test-coverage && npm run test-types"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignore": [
+ "mdast-util-to-string.js",
+ "types/test.ts"
+ ]
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/mdast-util-to-string/readme.md b/tools/node_modules/eslint/node_modules/mdast-util-to-string/readme.md
new file mode 100644
index 0000000000..2b7f1a0ed0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/mdast-util-to-string/readme.md
@@ -0,0 +1,127 @@
+# mdast-util-to-string
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+[![Sponsors][sponsors-badge]][collective]
+[![Backers][backers-badge]][collective]
+[![Chat][chat-badge]][chat]
+
+**[mdast][]** utility to get the plain text content of a node.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install mdast-util-to-string
+```
+
+## Use
+
+```js
+var unified = require('unified')
+var parse = require('remark-parse')
+var toString = require('mdast-util-to-string')
+
+var tree = unified()
+ .use(parse)
+ .parse('Some _emphasis_, **importance**, and `code`.')
+
+console.log(toString(tree)) // => 'Some emphasis, importance, and code.'
+```
+
+## API
+
+### `toString(node)`
+
+Get the text content of a [node][] or list of nodes.
+
+The algorithm checks `value` of `node`, then `alt`, and finally `title`.
+If no value is found, the algorithm checks the children of `node` and joins them
+(without spaces or newlines).
+
+> This is not a markdown to plain-text library.
+> Use [`strip-markdown`][strip-markdown] for that.
+
+## Security
+
+Use of `mdast-util-to-string` does not involve **[hast][]**, user content, or
+change the tree, so there are no openings for [cross-site scripting (XSS)][xss]
+attacks.
+
+## Related
+
+* [`nlcst-to-string`](https://github.com/syntax-tree/nlcst-to-string)
+ — Get text content in nlcst
+* [`hast-util-to-string`](https://github.com/wooorm/rehype-minify/tree/HEAD/packages/hast-util-to-string)
+ — Get text content in hast
+* [`hast-util-to-text`](https://github.com/syntax-tree/hast-util-to-text)
+ — Get text content in hast according to the `innerText` algorithm
+* [`hast-util-from-string`](https://github.com/wooorm/rehype-minify/tree/HEAD/packages/hast-util-from-string)
+ — Set text content in hast
+
+## Contribute
+
+See [`contributing.md` in `syntax-tree/.github`][contributing] for ways to get
+started.
+See [`support.md`][support] for ways to get help.
+
+This project has a [code of conduct][coc].
+By interacting with this repository, organization, or community you agree to
+abide by its terms.
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://github.com/syntax-tree/mdast-util-to-string/workflows/main/badge.svg
+
+[build]: https://github.com/syntax-tree/mdast-util-to-string/actions
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/mdast-util-to-string.svg
+
+[coverage]: https://codecov.io/github/syntax-tree/mdast-util-to-string
+
+[downloads-badge]: https://img.shields.io/npm/dm/mdast-util-to-string.svg
+
+[downloads]: https://www.npmjs.com/package/mdast-util-to-string
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/mdast-util-to-string.svg
+
+[size]: https://bundlephobia.com/result?p=mdast-util-to-string
+
+[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
+
+[backers-badge]: https://opencollective.com/unified/backers/badge.svg
+
+[collective]: https://opencollective.com/unified
+
+[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
+
+[chat]: https://github.com/syntax-tree/unist/discussions
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[contributing]: https://github.com/syntax-tree/.github/blob/HEAD/contributing.md
+
+[support]: https://github.com/syntax-tree/.github/blob/HEAD/support.md
+
+[coc]: https://github.com/syntax-tree/.github/blob/HEAD/code-of-conduct.md
+
+[mdast]: https://github.com/syntax-tree/mdast
+
+[node]: https://github.com/syntax-tree/mdast#nodes
+
+[strip-markdown]: https://github.com/remarkjs/strip-markdown
+
+[xss]: https://en.wikipedia.org/wiki/Cross-site_scripting
+
+[hast]: https://github.com/syntax-tree/hast
diff --git a/tools/node_modules/eslint/node_modules/micromark/buffer.js b/tools/node_modules/eslint/node_modules/micromark/buffer.js
new file mode 100644
index 0000000000..2b74f75ae9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/buffer.js
@@ -0,0 +1,3 @@
+'use strict'
+
+module.exports = require('./dist')
diff --git a/tools/node_modules/eslint/node_modules/micromark/buffer.mjs b/tools/node_modules/eslint/node_modules/micromark/buffer.mjs
new file mode 100644
index 0000000000..9b91a071fd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/buffer.mjs
@@ -0,0 +1 @@
+export {default} from './dist/index.js'
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alpha.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alpha.js
new file mode 100644
index 0000000000..4e5b20d20b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alpha.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiAlpha = regexCheck(/[A-Za-z]/)
+
+module.exports = asciiAlpha
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alphanumeric.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alphanumeric.js
new file mode 100644
index 0000000000..4ab360273a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-alphanumeric.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/)
+
+module.exports = asciiAlphanumeric
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-atext.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-atext.js
new file mode 100644
index 0000000000..8962f996ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-atext.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/)
+
+module.exports = asciiAtext
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-control.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-control.js
new file mode 100644
index 0000000000..604ed1f2c6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-control.js
@@ -0,0 +1,12 @@
+'use strict'
+
+// Note: EOF is seen as ASCII control here, because `null < 32 == true`.
+function asciiControl(code) {
+ return (
+ // Special whitespace codes (which have negative values), C0 and Control
+ // character DEL
+ code < 32 || code === 127
+ )
+}
+
+module.exports = asciiControl
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-digit.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-digit.js
new file mode 100644
index 0000000000..da614c4e40
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-digit.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiDigit = regexCheck(/\d/)
+
+module.exports = asciiDigit
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-hex-digit.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-hex-digit.js
new file mode 100644
index 0000000000..a0e7af43ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-hex-digit.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiHexDigit = regexCheck(/[\dA-Fa-f]/)
+
+module.exports = asciiHexDigit
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-punctuation.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-punctuation.js
new file mode 100644
index 0000000000..596b45a5eb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/ascii-punctuation.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)
+
+module.exports = asciiPunctuation
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/codes.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/codes.js
new file mode 100644
index 0000000000..01ea00a654
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/codes.js
@@ -0,0 +1,257 @@
+'use strict'
+
+// This module is compiled away!
+//
+// micromark works based on character codes.
+// This module contains constants for the ASCII block and the replacement
+// character.
+// A couple of them are handled in a special way, such as the line endings
+// (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal
+// tab) and its expansion based on what column it’s at (virtual space),
+// and the end-of-file (eof) character.
+// As values are preprocessed before handling them, the actual characters LF,
+// CR, HT, and NUL (which is present as the replacement character), are
+// guaranteed to not exist.
+//
+// Unicode basic latin block.
+var codes = {
+ carriageReturn: -5,
+ lineFeed: -4,
+ carriageReturnLineFeed: -3,
+ horizontalTab: -2,
+ virtualSpace: -1,
+ eof: null,
+ nul: 0,
+ soh: 1,
+ stx: 2,
+ etx: 3,
+ eot: 4,
+ enq: 5,
+ ack: 6,
+ bel: 7,
+ bs: 8,
+ ht: 9,
+ // `\t`
+ lf: 10,
+ // `\n`
+ vt: 11,
+ // `\v`
+ ff: 12,
+ // `\f`
+ cr: 13,
+ // `\r`
+ so: 14,
+ si: 15,
+ dle: 16,
+ dc1: 17,
+ dc2: 18,
+ dc3: 19,
+ dc4: 20,
+ nak: 21,
+ syn: 22,
+ etb: 23,
+ can: 24,
+ em: 25,
+ sub: 26,
+ esc: 27,
+ fs: 28,
+ gs: 29,
+ rs: 30,
+ us: 31,
+ space: 32,
+ exclamationMark: 33,
+ // `!`
+ quotationMark: 34,
+ // `"`
+ numberSign: 35,
+ // `#`
+ dollarSign: 36,
+ // `$`
+ percentSign: 37,
+ // `%`
+ ampersand: 38,
+ // `&`
+ apostrophe: 39,
+ // `'`
+ leftParenthesis: 40,
+ // `(`
+ rightParenthesis: 41,
+ // `)`
+ asterisk: 42,
+ // `*`
+ plusSign: 43,
+ // `+`
+ comma: 44,
+ // `,`
+ dash: 45,
+ // `-`
+ dot: 46,
+ // `.`
+ slash: 47,
+ // `/`
+ digit0: 48,
+ // `0`
+ digit1: 49,
+ // `1`
+ digit2: 50,
+ // `2`
+ digit3: 51,
+ // `3`
+ digit4: 52,
+ // `4`
+ digit5: 53,
+ // `5`
+ digit6: 54,
+ // `6`
+ digit7: 55,
+ // `7`
+ digit8: 56,
+ // `8`
+ digit9: 57,
+ // `9`
+ colon: 58,
+ // `:`
+ semicolon: 59,
+ // `;`
+ lessThan: 60,
+ // `<`
+ equalsTo: 61,
+ // `=`
+ greaterThan: 62,
+ // `>`
+ questionMark: 63,
+ // `?`
+ atSign: 64,
+ // `@`
+ uppercaseA: 65,
+ // `A`
+ uppercaseB: 66,
+ // `B`
+ uppercaseC: 67,
+ // `C`
+ uppercaseD: 68,
+ // `D`
+ uppercaseE: 69,
+ // `E`
+ uppercaseF: 70,
+ // `F`
+ uppercaseG: 71,
+ // `G`
+ uppercaseH: 72,
+ // `H`
+ uppercaseI: 73,
+ // `I`
+ uppercaseJ: 74,
+ // `J`
+ uppercaseK: 75,
+ // `K`
+ uppercaseL: 76,
+ // `L`
+ uppercaseM: 77,
+ // `M`
+ uppercaseN: 78,
+ // `N`
+ uppercaseO: 79,
+ // `O`
+ uppercaseP: 80,
+ // `P`
+ uppercaseQ: 81,
+ // `Q`
+ uppercaseR: 82,
+ // `R`
+ uppercaseS: 83,
+ // `S`
+ uppercaseT: 84,
+ // `T`
+ uppercaseU: 85,
+ // `U`
+ uppercaseV: 86,
+ // `V`
+ uppercaseW: 87,
+ // `W`
+ uppercaseX: 88,
+ // `X`
+ uppercaseY: 89,
+ // `Y`
+ uppercaseZ: 90,
+ // `Z`
+ leftSquareBracket: 91,
+ // `[`
+ backslash: 92,
+ // `\`
+ rightSquareBracket: 93,
+ // `]`
+ caret: 94,
+ // `^`
+ underscore: 95,
+ // `_`
+ graveAccent: 96,
+ // `` ` ``
+ lowercaseA: 97,
+ // `a`
+ lowercaseB: 98,
+ // `b`
+ lowercaseC: 99,
+ // `c`
+ lowercaseD: 100,
+ // `d`
+ lowercaseE: 101,
+ // `e`
+ lowercaseF: 102,
+ // `f`
+ lowercaseG: 103,
+ // `g`
+ lowercaseH: 104,
+ // `h`
+ lowercaseI: 105,
+ // `i`
+ lowercaseJ: 106,
+ // `j`
+ lowercaseK: 107,
+ // `k`
+ lowercaseL: 108,
+ // `l`
+ lowercaseM: 109,
+ // `m`
+ lowercaseN: 110,
+ // `n`
+ lowercaseO: 111,
+ // `o`
+ lowercaseP: 112,
+ // `p`
+ lowercaseQ: 113,
+ // `q`
+ lowercaseR: 114,
+ // `r`
+ lowercaseS: 115,
+ // `s`
+ lowercaseT: 116,
+ // `t`
+ lowercaseU: 117,
+ // `u`
+ lowercaseV: 118,
+ // `v`
+ lowercaseW: 119,
+ // `w`
+ lowercaseX: 120,
+ // `x`
+ lowercaseY: 121,
+ // `y`
+ lowercaseZ: 122,
+ // `z`
+ leftCurlyBrace: 123,
+ // `{`
+ verticalBar: 124,
+ // `|`
+ rightCurlyBrace: 125,
+ // `}`
+ tilde: 126,
+ // `~`
+ del: 127,
+ // Unicode Specials block.
+ byteOrderMarker: 65279,
+ // Unicode Specials block.
+ replacementCharacter: 65533 // `�`
+}
+
+module.exports = codes
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending-or-space.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending-or-space.js
new file mode 100644
index 0000000000..d78d17d1df
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending-or-space.js
@@ -0,0 +1,7 @@
+'use strict'
+
+function markdownLineEndingOrSpace(code) {
+ return code < 0 || code === 32
+}
+
+module.exports = markdownLineEndingOrSpace
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending.js
new file mode 100644
index 0000000000..5893934c32
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-line-ending.js
@@ -0,0 +1,7 @@
+'use strict'
+
+function markdownLineEnding(code) {
+ return code < -2
+}
+
+module.exports = markdownLineEnding
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-space.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-space.js
new file mode 100644
index 0000000000..e1b907b300
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/markdown-space.js
@@ -0,0 +1,7 @@
+'use strict'
+
+function markdownSpace(code) {
+ return code === -2 || code === -1 || code === 32
+}
+
+module.exports = markdownSpace
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-punctuation.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-punctuation.js
new file mode 100644
index 0000000000..eea51658c7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-punctuation.js
@@ -0,0 +1,10 @@
+'use strict'
+
+var unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')
+var regexCheck = require('../util/regex-check.js')
+
+// In fact adds to the bundle size.
+
+var unicodePunctuation = regexCheck(unicodePunctuationRegex)
+
+module.exports = unicodePunctuation
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-whitespace.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-whitespace.js
new file mode 100644
index 0000000000..b09537ea08
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/unicode-whitespace.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var unicodeWhitespace = regexCheck(/\s/)
+
+module.exports = unicodeWhitespace
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/character/values.js b/tools/node_modules/eslint/node_modules/micromark/dist/character/values.js
new file mode 100644
index 0000000000..cd1794fd97
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/character/values.js
@@ -0,0 +1,111 @@
+'use strict'
+
+// This module is compiled away!
+//
+// While micromark works based on character codes, this module includes the
+// string versions of ’em.
+// The C0 block, except for LF, CR, HT, and w/ the replacement character added,
+// are available here.
+var values = {
+ ht: '\t',
+ lf: '\n',
+ cr: '\r',
+ space: ' ',
+ exclamationMark: '!',
+ quotationMark: '"',
+ numberSign: '#',
+ dollarSign: '$',
+ percentSign: '%',
+ ampersand: '&',
+ apostrophe: "'",
+ leftParenthesis: '(',
+ rightParenthesis: ')',
+ asterisk: '*',
+ plusSign: '+',
+ comma: ',',
+ dash: '-',
+ dot: '.',
+ slash: '/',
+ digit0: '0',
+ digit1: '1',
+ digit2: '2',
+ digit3: '3',
+ digit4: '4',
+ digit5: '5',
+ digit6: '6',
+ digit7: '7',
+ digit8: '8',
+ digit9: '9',
+ colon: ':',
+ semicolon: ';',
+ lessThan: '<',
+ equalsTo: '=',
+ greaterThan: '>',
+ questionMark: '?',
+ atSign: '@',
+ uppercaseA: 'A',
+ uppercaseB: 'B',
+ uppercaseC: 'C',
+ uppercaseD: 'D',
+ uppercaseE: 'E',
+ uppercaseF: 'F',
+ uppercaseG: 'G',
+ uppercaseH: 'H',
+ uppercaseI: 'I',
+ uppercaseJ: 'J',
+ uppercaseK: 'K',
+ uppercaseL: 'L',
+ uppercaseM: 'M',
+ uppercaseN: 'N',
+ uppercaseO: 'O',
+ uppercaseP: 'P',
+ uppercaseQ: 'Q',
+ uppercaseR: 'R',
+ uppercaseS: 'S',
+ uppercaseT: 'T',
+ uppercaseU: 'U',
+ uppercaseV: 'V',
+ uppercaseW: 'W',
+ uppercaseX: 'X',
+ uppercaseY: 'Y',
+ uppercaseZ: 'Z',
+ leftSquareBracket: '[',
+ backslash: '\\',
+ rightSquareBracket: ']',
+ caret: '^',
+ underscore: '_',
+ graveAccent: '`',
+ lowercaseA: 'a',
+ lowercaseB: 'b',
+ lowercaseC: 'c',
+ lowercaseD: 'd',
+ lowercaseE: 'e',
+ lowercaseF: 'f',
+ lowercaseG: 'g',
+ lowercaseH: 'h',
+ lowercaseI: 'i',
+ lowercaseJ: 'j',
+ lowercaseK: 'k',
+ lowercaseL: 'l',
+ lowercaseM: 'm',
+ lowercaseN: 'n',
+ lowercaseO: 'o',
+ lowercaseP: 'p',
+ lowercaseQ: 'q',
+ lowercaseR: 'r',
+ lowercaseS: 's',
+ lowercaseT: 't',
+ lowercaseU: 'u',
+ lowercaseV: 'v',
+ lowercaseW: 'w',
+ lowercaseX: 'x',
+ lowercaseY: 'y',
+ lowercaseZ: 'z',
+ leftCurlyBrace: '{',
+ verticalBar: '|',
+ rightCurlyBrace: '}',
+ tilde: '~',
+ replacementCharacter: '�'
+}
+
+module.exports = values
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/compile/html.js b/tools/node_modules/eslint/node_modules/micromark/dist/compile/html.js
new file mode 100644
index 0000000000..b6170ef506
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/compile/html.js
@@ -0,0 +1,787 @@
+'use strict'
+
+var decodeEntity = require('parse-entities/decode-entity.js')
+var assign = require('../constant/assign.js')
+var hasOwnProperty = require('../constant/has-own-property.js')
+var combineHtmlExtensions = require('../util/combine-html-extensions.js')
+var chunkedPush = require('../util/chunked-push.js')
+var miniflat = require('../util/miniflat.js')
+var normalizeIdentifier = require('../util/normalize-identifier.js')
+var normalizeUri = require('../util/normalize-uri.js')
+var safeFromInt = require('../util/safe-from-int.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)
+
+// While micromark is a lexer/tokenizer, the common case of going from markdown
+// dealt with.
+// Technically, we can skip `>` and `"` in many cases, but CM includes them.
+
+var characterReferences = {
+ '"': 'quot',
+ '&': 'amp',
+ '<': 'lt',
+ '>': 'gt'
+} // These two are allowlists of essentially safe protocols for full URLs in
+// respectively the `href` (on `<a>`) and `src` (on `<img>`) attributes.
+// They are based on what is allowed on GitHub,
+// <https://github.com/syntax-tree/hast-util-sanitize/blob/9275b21/lib/github.json#L31>
+
+var protocolHref = /^(https?|ircs?|mailto|xmpp)$/i
+var protocolSrc = /^https?$/i
+
+function compileHtml(options) {
+ // Configuration.
+ // Includes `htmlExtensions` (an array of extensions), `defaultLineEnding` (a
+ // preferred EOL), `allowDangerousProtocol` (whether to allow potential
+ // dangerous protocols), and `allowDangerousHtml` (whether to allow potential
+ // dangerous HTML).
+ var settings = options || {} // Tags is needed because according to markdown, links and emphasis and
+ // whatnot can exist in images, however, as HTML doesn’t allow content in
+ // images, the tags are ignored in the `alt` attribute, but the content
+ // remains.
+
+ var tags = true // An object to track identifiers to media (URLs and titles) defined with
+ // definitions.
+
+ var definitions = {} // A lot of the handlers need to capture some of the output data, modify it
+ // somehow, and then deal with it.
+ // We do that by tracking a stack of buffers, that can be opened (with
+ // `buffer`) and closed (with `resume`) to access them.
+
+ var buffers = [[]] // As we can have links in images and the other way around, where the deepest
+ // ones are closed first, we need to track which one we’re in.
+
+ var mediaStack = [] // Same for tightness, which is specific to lists.
+ // We need to track if we’re currently in a tight or loose container.
+
+ var tightStack = []
+ var defaultHandlers = {
+ enter: {
+ blockQuote: onenterblockquote,
+ codeFenced: onentercodefenced,
+ codeFencedFenceInfo: buffer,
+ codeFencedFenceMeta: buffer,
+ codeIndented: onentercodeindented,
+ codeText: onentercodetext,
+ content: onentercontent,
+ definition: onenterdefinition,
+ definitionDestinationString: onenterdefinitiondestinationstring,
+ definitionLabelString: buffer,
+ definitionTitleString: buffer,
+ emphasis: onenteremphasis,
+ htmlFlow: onenterhtmlflow,
+ htmlText: onenterhtml,
+ image: onenterimage,
+ label: buffer,
+ link: onenterlink,
+ listItemMarker: onenterlistitemmarker,
+ listItemValue: onenterlistitemvalue,
+ listOrdered: onenterlistordered,
+ listUnordered: onenterlistunordered,
+ paragraph: onenterparagraph,
+ reference: buffer,
+ resource: onenterresource,
+ resourceDestinationString: onenterresourcedestinationstring,
+ resourceTitleString: buffer,
+ setextHeading: onentersetextheading,
+ strong: onenterstrong
+ },
+ exit: {
+ atxHeading: onexitatxheading,
+ atxHeadingSequence: onexitatxheadingsequence,
+ autolinkEmail: onexitautolinkemail,
+ autolinkProtocol: onexitautolinkprotocol,
+ blockQuote: onexitblockquote,
+ characterEscapeValue: onexitdata,
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
+ characterReferenceValue: onexitcharacterreferencevalue,
+ codeFenced: onexitflowcode,
+ codeFencedFence: onexitcodefencedfence,
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
+ codeFencedFenceMeta: resume,
+ codeFlowValue: onexitcodeflowvalue,
+ codeIndented: onexitflowcode,
+ codeText: onexitcodetext,
+ codeTextData: onexitdata,
+ data: onexitdata,
+ definition: onexitdefinition,
+ definitionDestinationString: onexitdefinitiondestinationstring,
+ definitionLabelString: onexitdefinitionlabelstring,
+ definitionTitleString: onexitdefinitiontitlestring,
+ emphasis: onexitemphasis,
+ hardBreakEscape: onexithardbreak,
+ hardBreakTrailing: onexithardbreak,
+ htmlFlow: onexithtml,
+ htmlFlowData: onexitdata,
+ htmlText: onexithtml,
+ htmlTextData: onexitdata,
+ image: onexitmedia,
+ label: onexitlabel,
+ labelText: onexitlabeltext,
+ lineEnding: onexitlineending,
+ link: onexitmedia,
+ listOrdered: onexitlistordered,
+ listUnordered: onexitlistunordered,
+ paragraph: onexitparagraph,
+ reference: resume,
+ referenceString: onexitreferencestring,
+ resource: resume,
+ resourceDestinationString: onexitresourcedestinationstring,
+ resourceTitleString: onexitresourcetitlestring,
+ setextHeading: onexitsetextheading,
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
+ setextHeadingText: onexitsetextheadingtext,
+ strong: onexitstrong,
+ thematicBreak: onexitthematicbreak
+ }
+ } // Combine the HTML extensions with the default handlers.
+ // An HTML extension is an object whose fields are either `enter` or `exit`
+ // (reflecting whether a token is entered or exited).
+ // The values at such objects are names of tokens mapping to handlers.
+ // Handlers are called, respectively when a token is opener or closed, with
+ // that token, and a context as `this`.
+
+ var handlers = combineHtmlExtensions(
+ [defaultHandlers].concat(miniflat(settings.htmlExtensions))
+ ) // Handlers do often need to keep track of some state.
+ // That state is provided here as a key-value store (an object).
+
+ var data = {
+ tightStack: tightStack
+ } // The context for handlers references a couple of useful functions.
+ // In handlers from extensions, those can be accessed at `this`.
+ // For the handlers here, they can be accessed directly.
+
+ var context = {
+ lineEndingIfNeeded: lineEndingIfNeeded,
+ options: settings,
+ encode: encode,
+ raw: raw,
+ tag: tag,
+ buffer: buffer,
+ resume: resume,
+ setData: setData,
+ getData: getData
+ } // Generally, micromark copies line endings (`'\r'`, `'\n'`, `'\r\n'`) in the
+ // markdown document over to the compiled HTML.
+ // In some cases, such as `> a`, CommonMark requires that extra line endings
+ // are added: `<blockquote>\n<p>a</p>\n</blockquote>`.
+ // This variable hold the default line ending when given (or `undefined`),
+ // and in the latter case will be updated to the first found line ending if
+ // there is one.
+
+ var lineEndingStyle = settings.defaultLineEnding // Return the function that handles a slice of events.
+
+ return compile // Deal w/ a slice of events.
+ // Return either the empty string if there’s nothing of note to return, or the
+ // result when done.
+
+ function compile(events) {
+ // As definitions can come after references, we need to figure out the media
+ // (urls and titles) defined by them before handling the references.
+ // So, we do sort of what HTML does: put metadata at the start (in head), and
+ // then put content after (`body`).
+ var head = []
+ var body = []
+ var index
+ var start
+ var listStack
+ var handler
+ var result
+ index = -1
+ start = 0
+ listStack = []
+
+ while (++index < events.length) {
+ // Figure out the line ending style used in the document.
+ if (
+ !lineEndingStyle &&
+ (events[index][1].type === 'lineEnding' ||
+ events[index][1].type === 'lineEndingBlank')
+ ) {
+ lineEndingStyle = events[index][2].sliceSerialize(events[index][1])
+ } // Preprocess lists to infer whether the list is loose or not.
+
+ if (
+ events[index][1].type === 'listOrdered' ||
+ events[index][1].type === 'listUnordered'
+ ) {
+ if (events[index][0] === 'enter') {
+ listStack.push(index)
+ } else {
+ prepareList(events.slice(listStack.pop(), index))
+ }
+ } // Move definitions to the front.
+
+ if (events[index][1].type === 'definition') {
+ if (events[index][0] === 'enter') {
+ body = chunkedPush(body, events.slice(start, index))
+ start = index
+ } else {
+ head = chunkedPush(head, events.slice(start, index + 1))
+ start = index + 1
+ }
+ }
+ }
+
+ head = chunkedPush(head, body)
+ head = chunkedPush(head, events.slice(start))
+ result = head
+ index = -1 // Handle the start of the document, if defined.
+
+ if (handlers.enter.null) {
+ handlers.enter.null.call(context)
+ } // Handle all events.
+
+ while (++index < events.length) {
+ handler = handlers[result[index][0]]
+
+ if (hasOwnProperty.call(handler, result[index][1].type)) {
+ handler[result[index][1].type].call(
+ assign(
+ {
+ sliceSerialize: result[index][2].sliceSerialize
+ },
+ context
+ ),
+ result[index][1]
+ )
+ }
+ } // Handle the end of the document, if defined.
+
+ if (handlers.exit.null) {
+ handlers.exit.null.call(context)
+ }
+
+ return buffers[0].join('')
+ } // Figure out whether lists are loose or not.
+
+ function prepareList(slice) {
+ var length = slice.length - 1 // Skip close.
+
+ var index = 0 // Skip open.
+
+ var containerBalance = 0
+ var loose
+ var atMarker
+ var event
+
+ while (++index < length) {
+ event = slice[index]
+
+ if (event[1]._container) {
+ atMarker = undefined
+
+ if (event[0] === 'enter') {
+ containerBalance++
+ } else {
+ containerBalance--
+ }
+ } else if (event[1].type === 'listItemPrefix') {
+ if (event[0] === 'exit') {
+ atMarker = true
+ }
+ } else if (event[1].type === 'linePrefix');
+ else if (event[1].type === 'lineEndingBlank') {
+ if (event[0] === 'enter' && !containerBalance) {
+ if (atMarker) {
+ atMarker = undefined
+ } else {
+ loose = true
+ }
+ }
+ } else {
+ atMarker = undefined
+ }
+ }
+
+ slice[0][1]._loose = loose
+ } // Set data into the key-value store.
+
+ function setData(key, value) {
+ data[key] = value
+ } // Get data from the key-value store.
+
+ function getData(key) {
+ return data[key]
+ } // Capture some of the output data.
+
+ function buffer() {
+ buffers.push([])
+ } // Stop capturing and access the output data.
+
+ function resume() {
+ return buffers.pop().join('')
+ } // Output (parts of) HTML tags.
+
+ function tag(value) {
+ if (!tags) return
+ setData('lastWasTag', true)
+ buffers[buffers.length - 1].push(value)
+ } // Output raw data.
+
+ function raw(value) {
+ setData('lastWasTag')
+ buffers[buffers.length - 1].push(value)
+ } // Output an extra line ending.
+
+ function lineEnding() {
+ raw(lineEndingStyle || '\n')
+ } // Output an extra line ending if the previous value wasn’t EOF/EOL.
+
+ function lineEndingIfNeeded() {
+ var buffer = buffers[buffers.length - 1]
+ var slice = buffer[buffer.length - 1]
+ var previous = slice ? slice.charCodeAt(slice.length - 1) : null
+
+ if (previous === 10 || previous === 13 || previous === null) {
+ return
+ }
+
+ lineEnding()
+ } // Make a value safe for injection in HTML (except w/ `ignoreEncode`).
+
+ function encode(value) {
+ return getData('ignoreEncode') ? value : value.replace(/["&<>]/g, replace)
+
+ function replace(value) {
+ return '&' + characterReferences[value] + ';'
+ }
+ } // Make a value safe for injection as a URL.
+ // This does encode unsafe characters with percent-encoding, skipping already
+ // encoded sequences (`normalizeUri`).
+ // Further unsafe characters are encoded as character references (`encode`).
+ // Finally, if the URL includes an unknown protocol (such as a dangerous
+ // example, `javascript:`), the value is ignored.
+
+ function url(url, protocol) {
+ var value = encode(normalizeUri(url || ''))
+ var colon = value.indexOf(':')
+ var questionMark = value.indexOf('?')
+ var numberSign = value.indexOf('#')
+ var slash = value.indexOf('/')
+
+ if (
+ settings.allowDangerousProtocol || // If there is no protocol, it’s relative.
+ colon < 0 || // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.
+ (slash > -1 && colon > slash) ||
+ (questionMark > -1 && colon > questionMark) ||
+ (numberSign > -1 && colon > numberSign) || // It is a protocol, it should be allowed.
+ protocol.test(value.slice(0, colon))
+ ) {
+ return value
+ }
+
+ return ''
+ } //
+ // Handlers.
+ //
+
+ function onenterlistordered(token) {
+ tightStack.push(!token._loose)
+ lineEndingIfNeeded()
+ tag('<ol')
+ setData('expectFirstItem', true)
+ }
+
+ function onenterlistunordered(token) {
+ tightStack.push(!token._loose)
+ lineEndingIfNeeded()
+ tag('<ul')
+ setData('expectFirstItem', true)
+ }
+
+ function onenterlistitemvalue(token) {
+ var value
+
+ if (getData('expectFirstItem')) {
+ value = parseInt(this.sliceSerialize(token), 10)
+
+ if (value !== 1) {
+ tag(' start="' + encode(String(value)) + '"')
+ }
+ }
+ }
+
+ function onenterlistitemmarker() {
+ if (getData('expectFirstItem')) {
+ tag('>')
+ } else {
+ onexitlistitem()
+ }
+
+ lineEndingIfNeeded()
+ tag('<li>')
+ setData('expectFirstItem') // “Hack” to prevent a line ending from showing up if the item is empty.
+
+ setData('lastWasTag')
+ }
+
+ function onexitlistordered() {
+ onexitlistitem()
+ tightStack.pop()
+ lineEnding()
+ tag('</ol>')
+ }
+
+ function onexitlistunordered() {
+ onexitlistitem()
+ tightStack.pop()
+ lineEnding()
+ tag('</ul>')
+ }
+
+ function onexitlistitem() {
+ if (getData('lastWasTag') && !getData('slurpAllLineEndings')) {
+ lineEndingIfNeeded()
+ }
+
+ tag('</li>')
+ setData('slurpAllLineEndings')
+ }
+
+ function onenterblockquote() {
+ tightStack.push(false)
+ lineEndingIfNeeded()
+ tag('<blockquote>')
+ }
+
+ function onexitblockquote() {
+ tightStack.pop()
+ lineEndingIfNeeded()
+ tag('</blockquote>')
+ setData('slurpAllLineEndings')
+ }
+
+ function onenterparagraph() {
+ if (!tightStack[tightStack.length - 1]) {
+ lineEndingIfNeeded()
+ tag('<p>')
+ }
+
+ setData('slurpAllLineEndings')
+ }
+
+ function onexitparagraph() {
+ if (tightStack[tightStack.length - 1]) {
+ setData('slurpAllLineEndings', true)
+ } else {
+ tag('</p>')
+ }
+ }
+
+ function onentercodefenced() {
+ lineEndingIfNeeded()
+ tag('<pre><code')
+ setData('fencesCount', 0)
+ }
+
+ function onexitcodefencedfenceinfo() {
+ var value = resume()
+ tag(' class="language-' + value + '"')
+ }
+
+ function onexitcodefencedfence() {
+ if (!getData('fencesCount')) {
+ tag('>')
+ setData('fencedCodeInside', true)
+ setData('slurpOneLineEnding', true)
+ }
+
+ setData('fencesCount', getData('fencesCount') + 1)
+ }
+
+ function onentercodeindented() {
+ lineEndingIfNeeded()
+ tag('<pre><code>')
+ }
+
+ function onexitflowcode() {
+ // Send an extra line feed if we saw data.
+ if (getData('flowCodeSeenData')) lineEndingIfNeeded()
+ tag('</code></pre>')
+ if (getData('fencesCount') < 2) lineEndingIfNeeded()
+ setData('flowCodeSeenData')
+ setData('fencesCount')
+ setData('slurpOneLineEnding')
+ }
+
+ function onenterimage() {
+ mediaStack.push({
+ image: true
+ })
+ tags = undefined // Disallow tags.
+ }
+
+ function onenterlink() {
+ mediaStack.push({})
+ }
+
+ function onexitlabeltext(token) {
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
+ }
+
+ function onexitlabel() {
+ mediaStack[mediaStack.length - 1].label = resume()
+ }
+
+ function onexitreferencestring(token) {
+ mediaStack[mediaStack.length - 1].referenceId = this.sliceSerialize(token)
+ }
+
+ function onenterresource() {
+ buffer() // We can have line endings in the resource, ignore them.
+
+ mediaStack[mediaStack.length - 1].destination = ''
+ }
+
+ function onenterresourcedestinationstring() {
+ buffer() // Ignore encoding the result, as we’ll first percent encode the url and
+ // encode manually after.
+
+ setData('ignoreEncode', true)
+ }
+
+ function onexitresourcedestinationstring() {
+ mediaStack[mediaStack.length - 1].destination = resume()
+ setData('ignoreEncode')
+ }
+
+ function onexitresourcetitlestring() {
+ mediaStack[mediaStack.length - 1].title = resume()
+ }
+
+ function onexitmedia() {
+ var index = mediaStack.length - 1 // Skip current.
+
+ var media = mediaStack[index]
+ var context =
+ media.destination === undefined
+ ? definitions[normalizeIdentifier(media.referenceId || media.labelId)]
+ : media
+ tags = true
+
+ while (index--) {
+ if (mediaStack[index].image) {
+ tags = undefined
+ break
+ }
+ }
+
+ if (media.image) {
+ tag('<img src="' + url(context.destination, protocolSrc) + '" alt="')
+ raw(media.label)
+ tag('"')
+ } else {
+ tag('<a href="' + url(context.destination, protocolHref) + '"')
+ }
+
+ tag(context.title ? ' title="' + context.title + '"' : '')
+
+ if (media.image) {
+ tag(' />')
+ } else {
+ tag('>')
+ raw(media.label)
+ tag('</a>')
+ }
+
+ mediaStack.pop()
+ }
+
+ function onenterdefinition() {
+ buffer()
+ mediaStack.push({})
+ }
+
+ function onexitdefinitionlabelstring(token) {
+ // Discard label, use the source content instead.
+ resume()
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
+ }
+
+ function onenterdefinitiondestinationstring() {
+ buffer()
+ setData('ignoreEncode', true)
+ }
+
+ function onexitdefinitiondestinationstring() {
+ mediaStack[mediaStack.length - 1].destination = resume()
+ setData('ignoreEncode')
+ }
+
+ function onexitdefinitiontitlestring() {
+ mediaStack[mediaStack.length - 1].title = resume()
+ }
+
+ function onexitdefinition() {
+ var id = normalizeIdentifier(mediaStack[mediaStack.length - 1].labelId)
+ resume()
+
+ if (!hasOwnProperty.call(definitions, id)) {
+ definitions[id] = mediaStack[mediaStack.length - 1]
+ }
+
+ mediaStack.pop()
+ }
+
+ function onentercontent() {
+ setData('slurpAllLineEndings', true)
+ }
+
+ function onexitatxheadingsequence(token) {
+ // Exit for further sequences.
+ if (getData('headingRank')) return
+ setData('headingRank', this.sliceSerialize(token).length)
+ lineEndingIfNeeded()
+ tag('<h' + getData('headingRank') + '>')
+ }
+
+ function onentersetextheading() {
+ buffer()
+ setData('slurpAllLineEndings')
+ }
+
+ function onexitsetextheadingtext() {
+ setData('slurpAllLineEndings', true)
+ }
+
+ function onexitatxheading() {
+ tag('</h' + getData('headingRank') + '>')
+ setData('headingRank')
+ }
+
+ function onexitsetextheadinglinesequence(token) {
+ setData(
+ 'headingRank',
+ this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2
+ )
+ }
+
+ function onexitsetextheading() {
+ var value = resume()
+ lineEndingIfNeeded()
+ tag('<h' + getData('headingRank') + '>')
+ raw(value)
+ tag('</h' + getData('headingRank') + '>')
+ setData('slurpAllLineEndings')
+ setData('headingRank')
+ }
+
+ function onexitdata(token) {
+ raw(encode(this.sliceSerialize(token)))
+ }
+
+ function onexitlineending(token) {
+ if (getData('slurpAllLineEndings')) {
+ return
+ }
+
+ if (getData('slurpOneLineEnding')) {
+ setData('slurpOneLineEnding')
+ return
+ }
+
+ if (getData('inCodeText')) {
+ raw(' ')
+ return
+ }
+
+ raw(encode(this.sliceSerialize(token)))
+ }
+
+ function onexitcodeflowvalue(token) {
+ raw(encode(this.sliceSerialize(token)))
+ setData('flowCodeSeenData', true)
+ }
+
+ function onexithardbreak() {
+ tag('<br />')
+ }
+
+ function onenterhtmlflow() {
+ lineEndingIfNeeded()
+ onenterhtml()
+ }
+
+ function onexithtml() {
+ setData('ignoreEncode')
+ }
+
+ function onenterhtml() {
+ if (settings.allowDangerousHtml) {
+ setData('ignoreEncode', true)
+ }
+ }
+
+ function onenteremphasis() {
+ tag('<em>')
+ }
+
+ function onenterstrong() {
+ tag('<strong>')
+ }
+
+ function onentercodetext() {
+ setData('inCodeText', true)
+ tag('<code>')
+ }
+
+ function onexitcodetext() {
+ setData('inCodeText')
+ tag('</code>')
+ }
+
+ function onexitemphasis() {
+ tag('</em>')
+ }
+
+ function onexitstrong() {
+ tag('</strong>')
+ }
+
+ function onexitthematicbreak() {
+ lineEndingIfNeeded()
+ tag('<hr />')
+ }
+
+ function onexitcharacterreferencemarker(token) {
+ setData('characterReferenceType', token.type)
+ }
+
+ function onexitcharacterreferencevalue(token) {
+ var value = this.sliceSerialize(token)
+ value = getData('characterReferenceType')
+ ? safeFromInt(
+ value,
+ getData('characterReferenceType') ===
+ 'characterReferenceMarkerNumeric'
+ ? 10
+ : 16
+ )
+ : decodeEntity__default['default'](value)
+ raw(encode(value))
+ setData('characterReferenceType')
+ }
+
+ function onexitautolinkprotocol(token) {
+ var uri = this.sliceSerialize(token)
+ tag('<a href="' + url(uri, protocolHref) + '">')
+ raw(encode(uri))
+ tag('</a>')
+ }
+
+ function onexitautolinkemail(token) {
+ var uri = this.sliceSerialize(token)
+ tag('<a href="' + url('mailto:' + uri, protocolHref) + '">')
+ raw(encode(uri))
+ tag('</a>')
+ }
+}
+
+module.exports = compileHtml
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/assign.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/assign.js
new file mode 100644
index 0000000000..b6ae48a090
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/assign.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var assign = Object.assign
+
+module.exports = assign
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/constants.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/constants.js
new file mode 100644
index 0000000000..8877249488
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/constants.js
@@ -0,0 +1,71 @@
+'use strict'
+
+// This module is compiled away!
+//
+// Parsing markdown comes with a couple of constants, such as minimum or maximum
+// sizes of certain sequences.
+// Additionally, there are a couple symbols used inside micromark.
+// These are all defined here, but compiled away by scripts.
+var constants = {
+ attentionSideBefore: 1,
+ // Symbol to mark an attention sequence as before content: `*a`
+ attentionSideAfter: 2,
+ // Symbol to mark an attention sequence as after content: `a*`
+ atxHeadingOpeningFenceSizeMax: 6,
+ // 6 number signs is fine, 7 isn’t.
+ autolinkDomainSizeMax: 63,
+ // 63 characters is fine, 64 is too many.
+ autolinkSchemeSizeMax: 32,
+ // 32 characters is fine, 33 is too many.
+ cdataOpeningString: 'CDATA[',
+ // And preceded by `<![`.
+ characterGroupWhitespace: 1,
+ // Symbol used to indicate a character is whitespace
+ characterGroupPunctuation: 2,
+ // Symbol used to indicate a character is whitespace
+ characterReferenceDecimalSizeMax: 7,
+ // `&#9999999;`.
+ characterReferenceHexadecimalSizeMax: 6,
+ // `&#xff9999;`.
+ characterReferenceNamedSizeMax: 31,
+ // `&CounterClockwiseContourIntegral;`.
+ codeFencedSequenceSizeMin: 3,
+ // At least 3 ticks or tildes are needed.
+ contentTypeFlow: 'flow',
+ contentTypeContent: 'content',
+ contentTypeString: 'string',
+ contentTypeText: 'text',
+ hardBreakPrefixSizeMin: 2,
+ // At least 2 trailing spaces are needed.
+ htmlRaw: 1,
+ // Symbol for `<script>`
+ htmlComment: 2,
+ // Symbol for `<!---->`
+ htmlInstruction: 3,
+ // Symbol for `<?php?>`
+ htmlDeclaration: 4,
+ // Symbol for `<!doctype>`
+ htmlCdata: 5,
+ // Symbol for `<![CDATA[]]>`
+ htmlBasic: 6,
+ // Symbol for `<div`
+ htmlComplete: 7,
+ // Symbol for `<x>`
+ htmlRawSizeMax: 8,
+ // Length of `textarea`.
+ linkResourceDestinationBalanceMax: 3,
+ // See: <https://spec.commonmark.org/0.29/#link-destination>
+ linkReferenceSizeMax: 999,
+ // See: <https://spec.commonmark.org/0.29/#link-label>
+ listItemValueSizeMax: 10,
+ // See: <https://spec.commonmark.org/0.29/#ordered-list-marker>
+ numericBaseDecimal: 10,
+ numericBaseHexadecimal: 0x10,
+ tabSize: 4,
+ // Tabs have a hard-coded size of 4, per CommonMark.
+ thematicBreakMarkerCountMin: 3,
+ // At least 3 asterisks, dashes, or underscores are needed.
+ v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks.
+}
+
+module.exports = constants
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/from-char-code.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/from-char-code.js
new file mode 100644
index 0000000000..232eac7405
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/from-char-code.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var fromCharCode = String.fromCharCode
+
+module.exports = fromCharCode
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/has-own-property.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/has-own-property.js
new file mode 100644
index 0000000000..aa9197cd25
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/has-own-property.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var own = {}.hasOwnProperty
+
+module.exports = own
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/html-block-names.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/html-block-names.js
new file mode 100644
index 0000000000..9b5ada73f0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/html-block-names.js
@@ -0,0 +1,69 @@
+'use strict'
+
+// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.
+var basics = [
+ 'address',
+ 'article',
+ 'aside',
+ 'base',
+ 'basefont',
+ 'blockquote',
+ 'body',
+ 'caption',
+ 'center',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'details',
+ 'dialog',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'fieldset',
+ 'figcaption',
+ 'figure',
+ 'footer',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'header',
+ 'hr',
+ 'html',
+ 'iframe',
+ 'legend',
+ 'li',
+ 'link',
+ 'main',
+ 'menu',
+ 'menuitem',
+ 'nav',
+ 'noframes',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'section',
+ 'source',
+ 'summary',
+ 'table',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'title',
+ 'tr',
+ 'track',
+ 'ul'
+]
+
+module.exports = basics
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/html-raw-names.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/html-raw-names.js
new file mode 100644
index 0000000000..c22a395429
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/html-raw-names.js
@@ -0,0 +1,6 @@
+'use strict'
+
+// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.
+var raws = ['pre', 'script', 'style', 'textarea']
+
+module.exports = raws
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/splice.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/splice.js
new file mode 100644
index 0000000000..8917210ac7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/splice.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var splice = [].splice
+
+module.exports = splice
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/types.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/types.js
new file mode 100644
index 0000000000..b4e8787fb9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/types.js
@@ -0,0 +1,357 @@
+'use strict'
+
+// This module is compiled away!
+//
+// Here is the list of all types of tokens exposed by micromark, with a short
+// explanation of what they include and where they are found.
+// In picking names, generally, the rule is to be as explicit as possible
+// instead of reusing names.
+// For example, there is a `definitionDestination` and a `resourceDestination`,
+// instead of one shared name.
+var types = {
+ // Generic type for data, such as in a title, a destination, etc.
+ data: 'data',
+ // Generic type for syntactic whitespace (tabs, virtual spaces, spaces).
+ // Such as, between a fenced code fence and an info string.
+ whitespace: 'whitespace',
+ // Generic type for line endings (line feed, carriage return, carriage return +
+ // line feed).
+ lineEnding: 'lineEnding',
+ // A line ending, but ending a blank line.
+ lineEndingBlank: 'lineEndingBlank',
+ // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a
+ // line.
+ linePrefix: 'linePrefix',
+ // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a
+ // line.
+ lineSuffix: 'lineSuffix',
+ // Whole ATX heading:
+ //
+ // ```markdown
+ // #
+ // ## Alpha
+ // ### Bravo ###
+ // ```
+ //
+ // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`.
+ atxHeading: 'atxHeading',
+ // Sequence of number signs in an ATX heading (`###`).
+ atxHeadingSequence: 'atxHeadingSequence',
+ // Content in an ATX heading (`alpha`).
+ // Includes text.
+ atxHeadingText: 'atxHeadingText',
+ // Whole autolink (`<https://example.com>` or `<admin@example.com>`)
+ // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`.
+ autolink: 'autolink',
+ // Email autolink w/o markers (`admin@example.com`)
+ autolinkEmail: 'autolinkEmail',
+ // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`).
+ autolinkMarker: 'autolinkMarker',
+ // Protocol autolink w/o markers (`https://example.com`)
+ autolinkProtocol: 'autolinkProtocol',
+ // A whole character escape (`\-`).
+ // Includes `escapeMarker` and `characterEscapeValue`.
+ characterEscape: 'characterEscape',
+ // The escaped character (`-`).
+ characterEscapeValue: 'characterEscapeValue',
+ // A whole character reference (`&amp;`, `&#8800;`, or `&#x1D306;`).
+ // Includes `characterReferenceMarker`, an optional
+ // `characterReferenceMarkerNumeric`, in which case an optional
+ // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`.
+ characterReference: 'characterReference',
+ // The start or end marker (`&` or `;`).
+ characterReferenceMarker: 'characterReferenceMarker',
+ // Mark reference as numeric (`#`).
+ characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric',
+ // Mark reference as numeric (`x` or `X`).
+ characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal',
+ // Value of character reference w/o markers (`amp`, `8800`, or `1D306`).
+ characterReferenceValue: 'characterReferenceValue',
+ // Whole fenced code:
+ //
+ // ````markdown
+ // ```js
+ // alert(1)
+ // ```
+ // ````
+ codeFenced: 'codeFenced',
+ // A fenced code fence, including whitespace, sequence, info, and meta
+ // (` ```js `).
+ codeFencedFence: 'codeFencedFence',
+ // Sequence of grave accent or tilde characters (` ``` `) in a fence.
+ codeFencedFenceSequence: 'codeFencedFenceSequence',
+ // Info word (`js`) in a fence.
+ // Includes string.
+ codeFencedFenceInfo: 'codeFencedFenceInfo',
+ // Meta words (`highlight="1"`) in a fence.
+ // Includes string.
+ codeFencedFenceMeta: 'codeFencedFenceMeta',
+ // A line of code.
+ codeFlowValue: 'codeFlowValue',
+ // Whole indented code:
+ //
+ // ```markdown
+ // alert(1)
+ // ```
+ //
+ // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`.
+ codeIndented: 'codeIndented',
+ // A text code (``` `alpha` ```).
+ // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include
+ // `codeTextPadding`.
+ codeText: 'codeText',
+ codeTextData: 'codeTextData',
+ // A space or line ending right after or before a tick.
+ codeTextPadding: 'codeTextPadding',
+ // A text code fence (` `` `).
+ codeTextSequence: 'codeTextSequence',
+ // Whole content:
+ //
+ // ```markdown
+ // [a]: b
+ // c
+ // =
+ // d
+ // ```
+ //
+ // Includes `paragraph` and `definition`.
+ content: 'content',
+ // Whole definition:
+ //
+ // ```markdown
+ // [micromark]: https://github.com/micromark/micromark
+ // ```
+ //
+ // Includes `definitionLabel`, `definitionMarker`, `whitespace`,
+ // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`.
+ definition: 'definition',
+ // Destination of a definition (`https://github.com/micromark/micromark` or
+ // `<https://github.com/micromark/micromark>`).
+ // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`.
+ definitionDestination: 'definitionDestination',
+ // Enclosed destination of a definition
+ // (`<https://github.com/micromark/micromark>`).
+ // Includes `definitionDestinationLiteralMarker` and optionally
+ // `definitionDestinationString`.
+ definitionDestinationLiteral: 'definitionDestinationLiteral',
+ // Markers of an enclosed definition destination (`<` or `>`).
+ definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker',
+ // Unenclosed destination of a definition
+ // (`https://github.com/micromark/micromark`).
+ // Includes `definitionDestinationString`.
+ definitionDestinationRaw: 'definitionDestinationRaw',
+ // Text in an destination (`https://github.com/micromark/micromark`).
+ // Includes string.
+ definitionDestinationString: 'definitionDestinationString',
+ // Label of a definition (`[micromark]`).
+ // Includes `definitionLabelMarker` and `definitionLabelString`.
+ definitionLabel: 'definitionLabel',
+ // Markers of a definition label (`[` or `]`).
+ definitionLabelMarker: 'definitionLabelMarker',
+ // Value of a definition label (`micromark`).
+ // Includes string.
+ definitionLabelString: 'definitionLabelString',
+ // Marker between a label and a destination (`:`).
+ definitionMarker: 'definitionMarker',
+ // Title of a definition (`"x"`, `'y'`, or `(z)`).
+ // Includes `definitionTitleMarker` and optionally `definitionTitleString`.
+ definitionTitle: 'definitionTitle',
+ // Marker around a title of a definition (`"`, `'`, `(`, or `)`).
+ definitionTitleMarker: 'definitionTitleMarker',
+ // Data without markers in a title (`z`).
+ // Includes string.
+ definitionTitleString: 'definitionTitleString',
+ // Emphasis (`*alpha*`).
+ // Includes `emphasisSequence` and `emphasisText`.
+ emphasis: 'emphasis',
+ // Sequence of emphasis markers (`*` or `_`).
+ emphasisSequence: 'emphasisSequence',
+ // Emphasis text (`alpha`).
+ // Includes text.
+ emphasisText: 'emphasisText',
+ // The character escape marker (`\`).
+ escapeMarker: 'escapeMarker',
+ // A hard break created with a backslash (`\\n`).
+ // Includes `escapeMarker` (does not include the line ending)
+ hardBreakEscape: 'hardBreakEscape',
+ // A hard break created with trailing spaces (` \n`).
+ // Does not include the line ending.
+ hardBreakTrailing: 'hardBreakTrailing',
+ // Flow HTML:
+ //
+ // ```markdown
+ // <div
+ // ```
+ //
+ // Inlcudes `lineEnding`, `htmlFlowData`.
+ htmlFlow: 'htmlFlow',
+ htmlFlowData: 'htmlFlowData',
+ // HTML in text (the tag in `a <i> b`).
+ // Includes `lineEnding`, `htmlTextData`.
+ htmlText: 'htmlText',
+ htmlTextData: 'htmlTextData',
+ // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or
+ // `![alpha]`).
+ // Includes `label` and an optional `resource` or `reference`.
+ image: 'image',
+ // Whole link label (`[*alpha*]`).
+ // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`.
+ label: 'label',
+ // Text in an label (`*alpha*`).
+ // Includes text.
+ labelText: 'labelText',
+ // Start a link label (`[`).
+ // Includes a `labelMarker`.
+ labelLink: 'labelLink',
+ // Start an image label (`![`).
+ // Includes `labelImageMarker` and `labelMarker`.
+ labelImage: 'labelImage',
+ // Marker of a label (`[` or `]`).
+ labelMarker: 'labelMarker',
+ // Marker to start an image (`!`).
+ labelImageMarker: 'labelImageMarker',
+ // End a label (`]`).
+ // Includes `labelMarker`.
+ labelEnd: 'labelEnd',
+ // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`).
+ // Includes `label` and an optional `resource` or `reference`.
+ link: 'link',
+ // Whole paragraph:
+ //
+ // ```markdown
+ // alpha
+ // bravo.
+ // ```
+ //
+ // Includes text.
+ paragraph: 'paragraph',
+ // A reference (`[alpha]` or `[]`).
+ // Includes `referenceMarker` and an optional `referenceString`.
+ reference: 'reference',
+ // A reference marker (`[` or `]`).
+ referenceMarker: 'referenceMarker',
+ // Reference text (`alpha`).
+ // Includes string.
+ referenceString: 'referenceString',
+ // A resource (`(https://example.com "alpha")`).
+ // Includes `resourceMarker`, an optional `resourceDestination` with an optional
+ // `whitespace` and `resourceTitle`.
+ resource: 'resource',
+ // A resource destination (`https://example.com`).
+ // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`.
+ resourceDestination: 'resourceDestination',
+ // A literal resource destination (`<https://example.com>`).
+ // Includes `resourceDestinationLiteralMarker` and optionally
+ // `resourceDestinationString`.
+ resourceDestinationLiteral: 'resourceDestinationLiteral',
+ // A resource destination marker (`<` or `>`).
+ resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker',
+ // A raw resource destination (`https://example.com`).
+ // Includes `resourceDestinationString`.
+ resourceDestinationRaw: 'resourceDestinationRaw',
+ // Resource destination text (`https://example.com`).
+ // Includes string.
+ resourceDestinationString: 'resourceDestinationString',
+ // A resource marker (`(` or `)`).
+ resourceMarker: 'resourceMarker',
+ // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`).
+ // Includes `resourceTitleMarker` and optionally `resourceTitleString`.
+ resourceTitle: 'resourceTitle',
+ // A resource title marker (`"`, `'`, `(`, or `)`).
+ resourceTitleMarker: 'resourceTitleMarker',
+ // Resource destination title (`alpha`).
+ // Includes string.
+ resourceTitleString: 'resourceTitleString',
+ // Whole setext heading:
+ //
+ // ```markdown
+ // alpha
+ // bravo
+ // =====
+ // ```
+ //
+ // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and
+ // `setextHeadingLine`.
+ setextHeading: 'setextHeading',
+ // Content in a setext heading (`alpha\nbravo`).
+ // Includes text.
+ setextHeadingText: 'setextHeadingText',
+ // Underline in a setext heading, including whitespace suffix (`==`).
+ // Includes `setextHeadingLineSequence`.
+ setextHeadingLine: 'setextHeadingLine',
+ // Sequence of equals or dash characters in underline in a setext heading (`-`).
+ setextHeadingLineSequence: 'setextHeadingLineSequence',
+ // Strong (`**alpha**`).
+ // Includes `strongSequence` and `strongText`.
+ strong: 'strong',
+ // Sequence of strong markers (`**` or `__`).
+ strongSequence: 'strongSequence',
+ // Strong text (`alpha`).
+ // Includes text.
+ strongText: 'strongText',
+ // Whole thematic break:
+ //
+ // ```markdown
+ // * * *
+ // ```
+ //
+ // Includes `thematicBreakSequence` and `whitespace`.
+ thematicBreak: 'thematicBreak',
+ // A sequence of one or more thematic break markers (`***`).
+ thematicBreakSequence: 'thematicBreakSequence',
+ // Whole block quote:
+ //
+ // ```markdown
+ // > a
+ // >
+ // > b
+ // ```
+ //
+ // Includes `blockQuotePrefix` and flow.
+ blockQuote: 'blockQuote',
+ // The `>` or `> ` of a block quote.
+ blockQuotePrefix: 'blockQuotePrefix',
+ // The `>` of a block quote prefix.
+ blockQuoteMarker: 'blockQuoteMarker',
+ // The optional ` ` of a block quote prefix.
+ blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace',
+ // Whole unordered list:
+ //
+ // ```markdown
+ // - a
+ // b
+ // ```
+ //
+ // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further
+ // lines.
+ listOrdered: 'listOrdered',
+ // Whole ordered list:
+ //
+ // ```markdown
+ // 1. a
+ // b
+ // ```
+ //
+ // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further
+ // lines.
+ listUnordered: 'listUnordered',
+ // The indent of further list item lines.
+ listItemIndent: 'listItemIndent',
+ // A marker, as in, `*`, `+`, `-`, `.`, or `)`.
+ listItemMarker: 'listItemMarker',
+ // The thing that starts a list item, such as `1. `.
+ // Includes `listItemValue` if ordered, `listItemMarker`, and
+ // `listItemPrefixWhitespace` (unless followed by a line ending).
+ listItemPrefix: 'listItemPrefix',
+ // The whitespace after a marker.
+ listItemPrefixWhitespace: 'listItemPrefixWhitespace',
+ // The numerical value of an ordered item.
+ listItemValue: 'listItemValue',
+ // Internal types used for subtokenizers, compiled away
+ chunkContent: 'chunkContent',
+ chunkFlow: 'chunkFlow',
+ chunkText: 'chunkText',
+ chunkString: 'chunkString'
+}
+
+module.exports = types
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constant/unicode-punctuation-regex.js b/tools/node_modules/eslint/node_modules/micromark/dist/constant/unicode-punctuation-regex.js
new file mode 100644
index 0000000000..6d25ee4bae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constant/unicode-punctuation-regex.js
@@ -0,0 +1,11 @@
+'use strict'
+
+// This module is generated by `script/`.
+//
+// CommonMark handles attention (emphasis, strong) markers based on what comes
+// before or after them.
+// One such difference is if those characters are Unicode punctuation.
+// This script is generated from the Unicode data.
+var unicodePunctuation = /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/
+
+module.exports = unicodePunctuation
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/constructs.js b/tools/node_modules/eslint/node_modules/micromark/dist/constructs.js
new file mode 100644
index 0000000000..adcc84a44b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/constructs.js
@@ -0,0 +1,127 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var text$1 = require('./initialize/text.js')
+var attention = require('./tokenize/attention.js')
+var autolink = require('./tokenize/autolink.js')
+var blockQuote = require('./tokenize/block-quote.js')
+var characterEscape = require('./tokenize/character-escape.js')
+var characterReference = require('./tokenize/character-reference.js')
+var codeFenced = require('./tokenize/code-fenced.js')
+var codeIndented = require('./tokenize/code-indented.js')
+var codeText = require('./tokenize/code-text.js')
+var definition = require('./tokenize/definition.js')
+var hardBreakEscape = require('./tokenize/hard-break-escape.js')
+var headingAtx = require('./tokenize/heading-atx.js')
+var htmlFlow = require('./tokenize/html-flow.js')
+var htmlText = require('./tokenize/html-text.js')
+var labelEnd = require('./tokenize/label-end.js')
+var labelStartImage = require('./tokenize/label-start-image.js')
+var labelStartLink = require('./tokenize/label-start-link.js')
+var lineEnding = require('./tokenize/line-ending.js')
+var list = require('./tokenize/list.js')
+var setextUnderline = require('./tokenize/setext-underline.js')
+var thematicBreak = require('./tokenize/thematic-break.js')
+
+var document = {
+ 42: list,
+ // Asterisk
+ 43: list,
+ // Plus sign
+ 45: list,
+ // Dash
+ 48: list,
+ // 0
+ 49: list,
+ // 1
+ 50: list,
+ // 2
+ 51: list,
+ // 3
+ 52: list,
+ // 4
+ 53: list,
+ // 5
+ 54: list,
+ // 6
+ 55: list,
+ // 7
+ 56: list,
+ // 8
+ 57: list,
+ // 9
+ 62: blockQuote // Greater than
+}
+var contentInitial = {
+ 91: definition // Left square bracket
+}
+var flowInitial = {
+ '-2': codeIndented,
+ // Horizontal tab
+ '-1': codeIndented,
+ // Virtual space
+ 32: codeIndented // Space
+}
+var flow = {
+ 35: headingAtx,
+ // Number sign
+ 42: thematicBreak,
+ // Asterisk
+ 45: [setextUnderline, thematicBreak],
+ // Dash
+ 60: htmlFlow,
+ // Less than
+ 61: setextUnderline,
+ // Equals to
+ 95: thematicBreak,
+ // Underscore
+ 96: codeFenced,
+ // Grave accent
+ 126: codeFenced // Tilde
+}
+var string = {
+ 38: characterReference,
+ // Ampersand
+ 92: characterEscape // Backslash
+}
+var text = {
+ '-5': lineEnding,
+ // Carriage return
+ '-4': lineEnding,
+ // Line feed
+ '-3': lineEnding,
+ // Carriage return + line feed
+ 33: labelStartImage,
+ // Exclamation mark
+ 38: characterReference,
+ // Ampersand
+ 42: attention,
+ // Asterisk
+ 60: [autolink, htmlText],
+ // Less than
+ 91: labelStartLink,
+ // Left square bracket
+ 92: [hardBreakEscape, characterEscape],
+ // Backslash
+ 93: labelEnd,
+ // Right square bracket
+ 95: attention,
+ // Underscore
+ 96: codeText // Grave accent
+}
+var insideSpan = {
+ null: [attention, text$1.resolver]
+}
+var disable = {
+ null: []
+}
+
+exports.contentInitial = contentInitial
+exports.disable = disable
+exports.document = document
+exports.flow = flow
+exports.flowInitial = flowInitial
+exports.insideSpan = insideSpan
+exports.string = string
+exports.text = text
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/index.js b/tools/node_modules/eslint/node_modules/micromark/dist/index.js
new file mode 100644
index 0000000000..8b289a298f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/index.js
@@ -0,0 +1,21 @@
+'use strict'
+
+var html = require('./compile/html.js')
+var parse = require('./parse.js')
+var postprocess = require('./postprocess.js')
+var preprocess = require('./preprocess.js')
+
+function buffer(value, encoding, options) {
+ if (typeof encoding !== 'string') {
+ options = encoding
+ encoding = undefined
+ }
+
+ return html(options)(
+ postprocess(
+ parse(options).document().write(preprocess()(value, encoding, true))
+ )
+ )
+}
+
+module.exports = buffer
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/initialize/content.js b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/content.js
new file mode 100644
index 0000000000..546aafece6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/content.js
@@ -0,0 +1,69 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var factorySpace = require('../tokenize/factory-space.js')
+
+var tokenize = initializeContent
+
+function initializeContent(effects) {
+ var contentStart = effects.attempt(
+ this.parser.constructs.contentInitial,
+ afterContentStartConstruct,
+ paragraphInitial
+ )
+ var previous
+ return contentStart
+
+ function afterContentStartConstruct(code) {
+ if (code === null) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return factorySpace(effects, contentStart, 'linePrefix')
+ }
+
+ function paragraphInitial(code) {
+ effects.enter('paragraph')
+ return lineStart(code)
+ }
+
+ function lineStart(code) {
+ var token = effects.enter('chunkText', {
+ contentType: 'text',
+ previous: previous
+ })
+
+ if (previous) {
+ previous.next = token
+ }
+
+ previous = token
+ return data(code)
+ }
+
+ function data(code) {
+ if (code === null) {
+ effects.exit('chunkText')
+ effects.exit('paragraph')
+ effects.consume(code)
+ return
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.consume(code)
+ effects.exit('chunkText')
+ return lineStart
+ } // Data.
+
+ effects.consume(code)
+ return data
+ }
+}
+
+exports.tokenize = tokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/initialize/document.js b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/document.js
new file mode 100644
index 0000000000..fa357fc3d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/document.js
@@ -0,0 +1,237 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var factorySpace = require('../tokenize/factory-space.js')
+var partialBlankLine = require('../tokenize/partial-blank-line.js')
+
+var tokenize = initializeDocument
+var containerConstruct = {
+ tokenize: tokenizeContainer
+}
+var lazyFlowConstruct = {
+ tokenize: tokenizeLazyFlow
+}
+
+function initializeDocument(effects) {
+ var self = this
+ var stack = []
+ var continued = 0
+ var inspectConstruct = {
+ tokenize: tokenizeInspect,
+ partial: true
+ }
+ var inspectResult
+ var childFlow
+ var childToken
+ return start
+
+ function start(code) {
+ if (continued < stack.length) {
+ self.containerState = stack[continued][1]
+ return effects.attempt(
+ stack[continued][0].continuation,
+ documentContinue,
+ documentContinued
+ )(code)
+ }
+
+ return documentContinued(code)
+ }
+
+ function documentContinue(code) {
+ continued++
+ return start(code)
+ }
+
+ function documentContinued(code) {
+ // If we’re in a concrete construct (such as when expecting another line of
+ // HTML, or we resulted in lazy content), we can immediately start flow.
+ if (inspectResult && inspectResult.flowContinue) {
+ return flowStart(code)
+ }
+
+ self.interrupt =
+ childFlow &&
+ childFlow.currentConstruct &&
+ childFlow.currentConstruct.interruptible
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ containerContinue,
+ flowStart
+ )(code)
+ }
+
+ function containerContinue(code) {
+ stack.push([self.currentConstruct, self.containerState])
+ self.containerState = undefined
+ return documentContinued(code)
+ }
+
+ function flowStart(code) {
+ if (code === null) {
+ exitContainers(0, true)
+ effects.consume(code)
+ return
+ }
+
+ childFlow = childFlow || self.parser.flow(self.now())
+ effects.enter('chunkFlow', {
+ contentType: 'flow',
+ previous: childToken,
+ _tokenizer: childFlow
+ })
+ return flowContinue(code)
+ }
+
+ function flowContinue(code) {
+ if (code === null) {
+ continueFlow(effects.exit('chunkFlow'))
+ return flowStart(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.consume(code)
+ continueFlow(effects.exit('chunkFlow'))
+ return effects.check(inspectConstruct, documentAfterPeek)
+ }
+
+ effects.consume(code)
+ return flowContinue
+ }
+
+ function documentAfterPeek(code) {
+ exitContainers(
+ inspectResult.continued,
+ inspectResult && inspectResult.flowEnd
+ )
+ continued = 0
+ return start(code)
+ }
+
+ function continueFlow(token) {
+ if (childToken) childToken.next = token
+ childToken = token
+ childFlow.lazy = inspectResult && inspectResult.lazy
+ childFlow.defineSkip(token.start)
+ childFlow.write(self.sliceStream(token))
+ }
+
+ function exitContainers(size, end) {
+ var index = stack.length // Close the flow.
+
+ if (childFlow && end) {
+ childFlow.write([null])
+ childToken = childFlow = undefined
+ } // Exit open containers.
+
+ while (index-- > size) {
+ self.containerState = stack[index][1]
+ stack[index][0].exit.call(self, effects)
+ }
+
+ stack.length = size
+ }
+
+ function tokenizeInspect(effects, ok) {
+ var subcontinued = 0
+ inspectResult = {}
+ return inspectStart
+
+ function inspectStart(code) {
+ if (subcontinued < stack.length) {
+ self.containerState = stack[subcontinued][1]
+ return effects.attempt(
+ stack[subcontinued][0].continuation,
+ inspectContinue,
+ inspectLess
+ )(code)
+ } // If we’re continued but in a concrete flow, we can’t have more
+ // containers.
+
+ if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {
+ inspectResult.flowContinue = true
+ return inspectDone(code)
+ }
+
+ self.interrupt =
+ childFlow.currentConstruct && childFlow.currentConstruct.interruptible
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ inspectFlowEnd,
+ inspectDone
+ )(code)
+ }
+
+ function inspectContinue(code) {
+ subcontinued++
+ return self.containerState._closeFlow
+ ? inspectFlowEnd(code)
+ : inspectStart(code)
+ }
+
+ function inspectLess(code) {
+ if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {
+ // Maybe another container?
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ inspectFlowEnd, // Maybe flow, or a blank line?
+ effects.attempt(
+ lazyFlowConstruct,
+ inspectFlowEnd,
+ effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)
+ )
+ )(code)
+ } // Otherwise we’re interrupting.
+
+ return inspectFlowEnd(code)
+ }
+
+ function inspectLazy(code) {
+ // Act as if all containers are continued.
+ subcontinued = stack.length
+ inspectResult.lazy = true
+ inspectResult.flowContinue = true
+ return inspectDone(code)
+ } // We’re done with flow if we have more containers, or an interruption.
+
+ function inspectFlowEnd(code) {
+ inspectResult.flowEnd = true
+ return inspectDone(code)
+ }
+
+ function inspectDone(code) {
+ inspectResult.continued = subcontinued
+ self.interrupt = self.containerState = undefined
+ return ok(code)
+ }
+ }
+}
+
+function tokenizeContainer(effects, ok, nok) {
+ return factorySpace(
+ effects,
+ effects.attempt(this.parser.constructs.document, ok, nok),
+ 'linePrefix',
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4
+ )
+}
+
+function tokenizeLazyFlow(effects, ok, nok) {
+ return factorySpace(
+ effects,
+ effects.lazy(this.parser.constructs.flow, ok, nok),
+ 'linePrefix',
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4
+ )
+}
+
+exports.tokenize = tokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/initialize/flow.js b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/flow.js
new file mode 100644
index 0000000000..0b7813c892
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/flow.js
@@ -0,0 +1,60 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var content = require('../tokenize/content.js')
+var factorySpace = require('../tokenize/factory-space.js')
+var partialBlankLine = require('../tokenize/partial-blank-line.js')
+
+var tokenize = initializeFlow
+
+function initializeFlow(effects) {
+ var self = this
+ var initial = effects.attempt(
+ // Try to parse a blank line.
+ partialBlankLine,
+ atBlankEnding, // Try to parse initial flow (essentially, only code).
+ effects.attempt(
+ this.parser.constructs.flowInitial,
+ afterConstruct,
+ factorySpace(
+ effects,
+ effects.attempt(
+ this.parser.constructs.flow,
+ afterConstruct,
+ effects.attempt(content, afterConstruct)
+ ),
+ 'linePrefix'
+ )
+ )
+ )
+ return initial
+
+ function atBlankEnding(code) {
+ if (code === null) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter('lineEndingBlank')
+ effects.consume(code)
+ effects.exit('lineEndingBlank')
+ self.currentConstruct = undefined
+ return initial
+ }
+
+ function afterConstruct(code) {
+ if (code === null) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ self.currentConstruct = undefined
+ return initial
+ }
+}
+
+exports.tokenize = tokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/initialize/text.js b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/text.js
new file mode 100644
index 0000000000..d0d460f4c0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/initialize/text.js
@@ -0,0 +1,201 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var assign = require('../constant/assign.js')
+var shallow = require('../util/shallow.js')
+
+var text = initializeFactory('text')
+var string = initializeFactory('string')
+var resolver = {
+ resolveAll: createResolver()
+}
+
+function initializeFactory(field) {
+ return {
+ tokenize: initializeText,
+ resolveAll: createResolver(
+ field === 'text' ? resolveAllLineSuffixes : undefined
+ )
+ }
+
+ function initializeText(effects) {
+ var self = this
+ var constructs = this.parser.constructs[field]
+ var text = effects.attempt(constructs, start, notText)
+ return start
+
+ function start(code) {
+ return atBreak(code) ? text(code) : notText(code)
+ }
+
+ function notText(code) {
+ if (code === null) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter('data')
+ effects.consume(code)
+ return data
+ }
+
+ function data(code) {
+ if (atBreak(code)) {
+ effects.exit('data')
+ return text(code)
+ } // Data.
+
+ effects.consume(code)
+ return data
+ }
+
+ function atBreak(code) {
+ var list = constructs[code]
+ var index = -1
+
+ if (code === null) {
+ return true
+ }
+
+ if (list) {
+ while (++index < list.length) {
+ if (
+ !list[index].previous ||
+ list[index].previous.call(self, self.previous)
+ ) {
+ return true
+ }
+ }
+ }
+ }
+ }
+}
+
+function createResolver(extraResolver) {
+ return resolveAllText
+
+ function resolveAllText(events, context) {
+ var index = -1
+ var enter // A rather boring computation (to merge adjacent `data` events) which
+ // improves mm performance by 29%.
+
+ while (++index <= events.length) {
+ if (enter === undefined) {
+ if (events[index] && events[index][1].type === 'data') {
+ enter = index
+ index++
+ }
+ } else if (!events[index] || events[index][1].type !== 'data') {
+ // Don’t do anything if there is one data token.
+ if (index !== enter + 2) {
+ events[enter][1].end = events[index - 1][1].end
+ events.splice(enter + 2, index - enter - 2)
+ index = enter + 2
+ }
+
+ enter = undefined
+ }
+ }
+
+ return extraResolver ? extraResolver(events, context) : events
+ }
+} // A rather ugly set of instructions which again looks at chunks in the input
+// stream.
+// The reason to do this here is that it is *much* faster to parse in reverse.
+// And that we can’t hook into `null` to split the line suffix before an EOF.
+// To do: figure out if we can make this into a clean utility, or even in core.
+// As it will be useful for GFMs literal autolink extension (and maybe even
+// tables?)
+
+function resolveAllLineSuffixes(events, context) {
+ var eventIndex = -1
+ var chunks
+ var data
+ var chunk
+ var index
+ var bufferIndex
+ var size
+ var tabs
+ var token
+
+ while (++eventIndex <= events.length) {
+ if (
+ (eventIndex === events.length ||
+ events[eventIndex][1].type === 'lineEnding') &&
+ events[eventIndex - 1][1].type === 'data'
+ ) {
+ data = events[eventIndex - 1][1]
+ chunks = context.sliceStream(data)
+ index = chunks.length
+ bufferIndex = -1
+ size = 0
+ tabs = undefined
+
+ while (index--) {
+ chunk = chunks[index]
+
+ if (typeof chunk === 'string') {
+ bufferIndex = chunk.length
+
+ while (chunk.charCodeAt(bufferIndex - 1) === 32) {
+ size++
+ bufferIndex--
+ }
+
+ if (bufferIndex) break
+ bufferIndex = -1
+ } // Number
+ else if (chunk === -2) {
+ tabs = true
+ size++
+ } else if (chunk === -1);
+ else {
+ // Replacement character, exit.
+ index++
+ break
+ }
+ }
+
+ if (size) {
+ token = {
+ type:
+ eventIndex === events.length || tabs || size < 2
+ ? 'lineSuffix'
+ : 'hardBreakTrailing',
+ start: {
+ line: data.end.line,
+ column: data.end.column - size,
+ offset: data.end.offset - size,
+ _index: data.start._index + index,
+ _bufferIndex: index
+ ? bufferIndex
+ : data.start._bufferIndex + bufferIndex
+ },
+ end: shallow(data.end)
+ }
+ data.end = shallow(token.start)
+
+ if (data.start.offset === data.end.offset) {
+ assign(data, token)
+ } else {
+ events.splice(
+ eventIndex,
+ 0,
+ ['enter', token, context],
+ ['exit', token, context]
+ )
+ eventIndex += 2
+ }
+ }
+
+ eventIndex++
+ }
+ }
+
+ return events
+}
+
+exports.resolver = resolver
+exports.string = string
+exports.text = text
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/parse.js b/tools/node_modules/eslint/node_modules/micromark/dist/parse.js
new file mode 100644
index 0000000000..9482300adc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/parse.js
@@ -0,0 +1,36 @@
+'use strict'
+
+var content = require('./initialize/content.js')
+var document = require('./initialize/document.js')
+var flow = require('./initialize/flow.js')
+var text = require('./initialize/text.js')
+var combineExtensions = require('./util/combine-extensions.js')
+var createTokenizer = require('./util/create-tokenizer.js')
+var miniflat = require('./util/miniflat.js')
+var constructs = require('./constructs.js')
+
+function parse(options) {
+ var settings = options || {}
+ var parser = {
+ defined: [],
+ constructs: combineExtensions(
+ [constructs].concat(miniflat(settings.extensions))
+ ),
+ content: create(content),
+ document: create(document),
+ flow: create(flow),
+ string: create(text.string),
+ text: create(text.text)
+ }
+ return parser
+
+ function create(initializer) {
+ return creator
+
+ function creator(from) {
+ return createTokenizer(parser, initializer, from)
+ }
+ }
+}
+
+module.exports = parse
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/postprocess.js b/tools/node_modules/eslint/node_modules/micromark/dist/postprocess.js
new file mode 100644
index 0000000000..842f8ce8bf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/postprocess.js
@@ -0,0 +1,13 @@
+'use strict'
+
+var subtokenize = require('./util/subtokenize.js')
+
+function postprocess(events) {
+ while (!subtokenize(events)) {
+ // Empty
+ }
+
+ return events
+}
+
+module.exports = postprocess
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/preprocess.js b/tools/node_modules/eslint/node_modules/micromark/dist/preprocess.js
new file mode 100644
index 0000000000..b7186454e7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/preprocess.js
@@ -0,0 +1,87 @@
+'use strict'
+
+var search = /[\0\t\n\r]/g
+
+function preprocess() {
+ var start = true
+ var column = 1
+ var buffer = ''
+ var atCarriageReturn
+ return preprocessor
+
+ function preprocessor(value, encoding, end) {
+ var chunks = []
+ var match
+ var next
+ var startPosition
+ var endPosition
+ var code
+ value = buffer + value.toString(encoding)
+ startPosition = 0
+ buffer = ''
+
+ if (start) {
+ if (value.charCodeAt(0) === 65279) {
+ startPosition++
+ }
+
+ start = undefined
+ }
+
+ while (startPosition < value.length) {
+ search.lastIndex = startPosition
+ match = search.exec(value)
+ endPosition = match ? match.index : value.length
+ code = value.charCodeAt(endPosition)
+
+ if (!match) {
+ buffer = value.slice(startPosition)
+ break
+ }
+
+ if (code === 10 && startPosition === endPosition && atCarriageReturn) {
+ chunks.push(-3)
+ atCarriageReturn = undefined
+ } else {
+ if (atCarriageReturn) {
+ chunks.push(-5)
+ atCarriageReturn = undefined
+ }
+
+ if (startPosition < endPosition) {
+ chunks.push(value.slice(startPosition, endPosition))
+ column += endPosition - startPosition
+ }
+
+ if (code === 0) {
+ chunks.push(65533)
+ column++
+ } else if (code === 9) {
+ next = Math.ceil(column / 4) * 4
+ chunks.push(-2)
+
+ while (column++ < next) chunks.push(-1)
+ } else if (code === 10) {
+ chunks.push(-4)
+ column = 1
+ } // Must be carriage return.
+ else {
+ atCarriageReturn = true
+ column = 1
+ }
+ }
+
+ startPosition = endPosition + 1
+ }
+
+ if (end) {
+ if (atCarriageReturn) chunks.push(-5)
+ if (buffer) chunks.push(buffer)
+ chunks.push(null)
+ }
+
+ return chunks
+ }
+}
+
+module.exports = preprocess
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/stream.js b/tools/node_modules/eslint/node_modules/micromark/dist/stream.js
new file mode 100644
index 0000000000..c26d4d3b5f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/stream.js
@@ -0,0 +1,103 @@
+'use strict'
+
+var events = require('events')
+var html = require('./compile/html.js')
+var parse = require('./parse.js')
+var postprocess = require('./postprocess.js')
+var preprocess = require('./preprocess.js')
+
+function stream(options) {
+ var preprocess$1 = preprocess()
+ var tokenize = parse(options).document().write
+ var compile = html(options)
+ var emitter = new events.EventEmitter()
+ var ended
+ emitter.writable = emitter.readable = true
+ emitter.write = write
+ emitter.end = end
+ emitter.pipe = pipe
+ return emitter // Write a chunk into memory.
+
+ function write(chunk, encoding, callback) {
+ if (typeof encoding === 'function') {
+ callback = encoding
+ encoding = undefined
+ }
+
+ if (ended) {
+ throw new Error('Did not expect `write` after `end`')
+ }
+
+ tokenize(preprocess$1(chunk || '', encoding))
+
+ if (callback) {
+ callback()
+ } // Signal succesful write.
+
+ return true
+ } // End the writing.
+ // Passes all arguments to a final `write`.
+
+ function end(chunk, encoding, callback) {
+ write(chunk, encoding, callback)
+ emitter.emit(
+ 'data',
+ compile(postprocess(tokenize(preprocess$1('', encoding, true))))
+ )
+ emitter.emit('end')
+ ended = true
+ return true
+ } // Pipe the processor into a writable stream.
+ // Basically `Stream#pipe`, but inlined and simplified to keep the bundled
+ // size down.
+ // See: <https://github.com/nodejs/node/blob/43a5170/lib/internal/streams/legacy.js#L13>.
+
+ function pipe(dest, options) {
+ emitter.on('data', ondata)
+ emitter.on('error', onerror)
+ emitter.on('end', cleanup)
+ emitter.on('close', cleanup) // If the `end` option is not supplied, `dest.end()` will be called when the
+ // `end` or `close` events are received.
+
+ if (!dest._isStdio && (!options || options.end !== false)) {
+ emitter.on('end', onend)
+ }
+
+ dest.on('error', onerror)
+ dest.on('close', cleanup)
+ dest.emit('pipe', emitter)
+ return dest // End destination.
+
+ function onend() {
+ if (dest.end) {
+ dest.end()
+ }
+ } // Handle data.
+
+ function ondata(chunk) {
+ if (dest.writable) {
+ dest.write(chunk)
+ }
+ } // Clean listeners.
+
+ function cleanup() {
+ emitter.removeListener('data', ondata)
+ emitter.removeListener('end', onend)
+ emitter.removeListener('error', onerror)
+ emitter.removeListener('end', cleanup)
+ emitter.removeListener('close', cleanup)
+ dest.removeListener('error', onerror)
+ dest.removeListener('close', cleanup)
+ } // Close dangling pipes and handle unheard errors.
+
+ function onerror(error) {
+ cleanup()
+
+ if (!emitter.listenerCount('error')) {
+ throw error // Unhandled stream error in pipe.
+ }
+ }
+ }
+}
+
+module.exports = stream
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/attention.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/attention.js
new file mode 100644
index 0000000000..b34be6f204
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/attention.js
@@ -0,0 +1,186 @@
+'use strict'
+
+var chunkedPush = require('../util/chunked-push.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var classifyCharacter = require('../util/classify-character.js')
+var movePoint = require('../util/move-point.js')
+var resolveAll = require('../util/resolve-all.js')
+var shallow = require('../util/shallow.js')
+
+var attention = {
+ name: 'attention',
+ tokenize: tokenizeAttention,
+ resolveAll: resolveAllAttention
+}
+
+function resolveAllAttention(events, context) {
+ var index = -1
+ var open
+ var group
+ var text
+ var openingSequence
+ var closingSequence
+ var use
+ var nextEvents
+ var offset // Walk through all events.
+ //
+ // Note: performance of this is fine on an mb of normal markdown, but it’s
+ // a bottleneck for malicious stuff.
+
+ while (++index < events.length) {
+ // Find a token that can close.
+ if (
+ events[index][0] === 'enter' &&
+ events[index][1].type === 'attentionSequence' &&
+ events[index][1]._close
+ ) {
+ open = index // Now walk back to find an opener.
+
+ while (open--) {
+ // Find a token that can open the closer.
+ if (
+ events[open][0] === 'exit' &&
+ events[open][1].type === 'attentionSequence' &&
+ events[open][1]._open && // If the markers are the same:
+ context.sliceSerialize(events[open][1]).charCodeAt(0) ===
+ context.sliceSerialize(events[index][1]).charCodeAt(0)
+ ) {
+ // If the opening can close or the closing can open,
+ // and the close size *is not* a multiple of three,
+ // but the sum of the opening and closing size *is* multiple of three,
+ // then don’t match.
+ if (
+ (events[open][1]._close || events[index][1]._open) &&
+ (events[index][1].end.offset - events[index][1].start.offset) % 3 &&
+ !(
+ (events[open][1].end.offset -
+ events[open][1].start.offset +
+ events[index][1].end.offset -
+ events[index][1].start.offset) %
+ 3
+ )
+ ) {
+ continue
+ } // Number of markers to use from the sequence.
+
+ use =
+ events[open][1].end.offset - events[open][1].start.offset > 1 &&
+ events[index][1].end.offset - events[index][1].start.offset > 1
+ ? 2
+ : 1
+ openingSequence = {
+ type: use > 1 ? 'strongSequence' : 'emphasisSequence',
+ start: movePoint(shallow(events[open][1].end), -use),
+ end: shallow(events[open][1].end)
+ }
+ closingSequence = {
+ type: use > 1 ? 'strongSequence' : 'emphasisSequence',
+ start: shallow(events[index][1].start),
+ end: movePoint(shallow(events[index][1].start), use)
+ }
+ text = {
+ type: use > 1 ? 'strongText' : 'emphasisText',
+ start: shallow(events[open][1].end),
+ end: shallow(events[index][1].start)
+ }
+ group = {
+ type: use > 1 ? 'strong' : 'emphasis',
+ start: shallow(openingSequence.start),
+ end: shallow(closingSequence.end)
+ }
+ events[open][1].end = shallow(openingSequence.start)
+ events[index][1].start = shallow(closingSequence.end)
+ nextEvents = [] // If there are more markers in the opening, add them before.
+
+ if (events[open][1].end.offset - events[open][1].start.offset) {
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', events[open][1], context],
+ ['exit', events[open][1], context]
+ ])
+ } // Opening.
+
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', group, context],
+ ['enter', openingSequence, context],
+ ['exit', openingSequence, context],
+ ['enter', text, context]
+ ]) // Between.
+
+ nextEvents = chunkedPush(
+ nextEvents,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + 1, index),
+ context
+ )
+ ) // Closing.
+
+ nextEvents = chunkedPush(nextEvents, [
+ ['exit', text, context],
+ ['enter', closingSequence, context],
+ ['exit', closingSequence, context],
+ ['exit', group, context]
+ ]) // If there are more markers in the closing, add them after.
+
+ if (events[index][1].end.offset - events[index][1].start.offset) {
+ offset = 2
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', events[index][1], context],
+ ['exit', events[index][1], context]
+ ])
+ } else {
+ offset = 0
+ }
+
+ chunkedSplice(events, open - 1, index - open + 3, nextEvents)
+ index = open + nextEvents.length - offset - 2
+ break
+ }
+ }
+ }
+ } // Remove remaining sequences.
+
+ index = -1
+
+ while (++index < events.length) {
+ if (events[index][1].type === 'attentionSequence') {
+ events[index][1].type = 'data'
+ }
+ }
+
+ return events
+}
+
+function tokenizeAttention(effects, ok) {
+ var before = classifyCharacter(this.previous)
+ var marker
+ return start
+
+ function start(code) {
+ effects.enter('attentionSequence')
+ marker = code
+ return sequence(code)
+ }
+
+ function sequence(code) {
+ var token
+ var after
+ var open
+ var close
+
+ if (code === marker) {
+ effects.consume(code)
+ return sequence
+ }
+
+ token = effects.exit('attentionSequence')
+ after = classifyCharacter(code)
+ open = !after || (after === 2 && before)
+ close = !before || (before === 2 && after)
+ token._open = marker === 42 ? open : open && (before || !close)
+ token._close = marker === 42 ? close : close && (after || !open)
+ return ok(code)
+ }
+}
+
+module.exports = attention
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/autolink.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/autolink.js
new file mode 100644
index 0000000000..d235d5f46d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/autolink.js
@@ -0,0 +1,125 @@
+'use strict'
+
+var asciiAlpha = require('../character/ascii-alpha.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var asciiAtext = require('../character/ascii-atext.js')
+var asciiControl = require('../character/ascii-control.js')
+
+var autolink = {
+ name: 'autolink',
+ tokenize: tokenizeAutolink
+}
+
+function tokenizeAutolink(effects, ok, nok) {
+ var size = 1
+ return start
+
+ function start(code) {
+ effects.enter('autolink')
+ effects.enter('autolinkMarker')
+ effects.consume(code)
+ effects.exit('autolinkMarker')
+ effects.enter('autolinkProtocol')
+ return open
+ }
+
+ function open(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return schemeOrEmailAtext
+ }
+
+ return asciiAtext(code) ? emailAtext(code) : nok(code)
+ }
+
+ function schemeOrEmailAtext(code) {
+ return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)
+ ? schemeInsideOrEmailAtext(code)
+ : emailAtext(code)
+ }
+
+ function schemeInsideOrEmailAtext(code) {
+ if (code === 58) {
+ effects.consume(code)
+ return urlInside
+ }
+
+ if (
+ (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&
+ size++ < 32
+ ) {
+ effects.consume(code)
+ return schemeInsideOrEmailAtext
+ }
+
+ return emailAtext(code)
+ }
+
+ function urlInside(code) {
+ if (code === 62) {
+ effects.exit('autolinkProtocol')
+ return end(code)
+ }
+
+ if (code === 32 || code === 60 || asciiControl(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return urlInside
+ }
+
+ function emailAtext(code) {
+ if (code === 64) {
+ effects.consume(code)
+ size = 0
+ return emailAtSignOrDot
+ }
+
+ if (asciiAtext(code)) {
+ effects.consume(code)
+ return emailAtext
+ }
+
+ return nok(code)
+ }
+
+ function emailAtSignOrDot(code) {
+ return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)
+ }
+
+ function emailLabel(code) {
+ if (code === 46) {
+ effects.consume(code)
+ size = 0
+ return emailAtSignOrDot
+ }
+
+ if (code === 62) {
+ // Exit, then change the type.
+ effects.exit('autolinkProtocol').type = 'autolinkEmail'
+ return end(code)
+ }
+
+ return emailValue(code)
+ }
+
+ function emailValue(code) {
+ if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {
+ effects.consume(code)
+ return code === 45 ? emailValue : emailLabel
+ }
+
+ return nok(code)
+ }
+
+ function end(code) {
+ effects.enter('autolinkMarker')
+ effects.consume(code)
+ effects.exit('autolinkMarker')
+ effects.exit('autolink')
+ return ok
+ }
+}
+
+module.exports = autolink
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/block-quote.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/block-quote.js
new file mode 100644
index 0000000000..b3090ca238
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/block-quote.js
@@ -0,0 +1,67 @@
+'use strict'
+
+var markdownSpace = require('../character/markdown-space.js')
+var factorySpace = require('./factory-space.js')
+
+var blockQuote = {
+ name: 'blockQuote',
+ tokenize: tokenizeBlockQuoteStart,
+ continuation: {
+ tokenize: tokenizeBlockQuoteContinuation
+ },
+ exit: exit
+}
+
+function tokenizeBlockQuoteStart(effects, ok, nok) {
+ var self = this
+ return start
+
+ function start(code) {
+ if (code === 62) {
+ if (!self.containerState.open) {
+ effects.enter('blockQuote', {
+ _container: true
+ })
+ self.containerState.open = true
+ }
+
+ effects.enter('blockQuotePrefix')
+ effects.enter('blockQuoteMarker')
+ effects.consume(code)
+ effects.exit('blockQuoteMarker')
+ return after
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ if (markdownSpace(code)) {
+ effects.enter('blockQuotePrefixWhitespace')
+ effects.consume(code)
+ effects.exit('blockQuotePrefixWhitespace')
+ effects.exit('blockQuotePrefix')
+ return ok
+ }
+
+ effects.exit('blockQuotePrefix')
+ return ok(code)
+ }
+}
+
+function tokenizeBlockQuoteContinuation(effects, ok, nok) {
+ return factorySpace(
+ effects,
+ effects.attempt(blockQuote, ok, nok),
+ 'linePrefix',
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4
+ )
+}
+
+function exit(effects) {
+ effects.exit('blockQuote')
+}
+
+module.exports = blockQuote
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-escape.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-escape.js
new file mode 100644
index 0000000000..dcad7353cd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-escape.js
@@ -0,0 +1,34 @@
+'use strict'
+
+var asciiPunctuation = require('../character/ascii-punctuation.js')
+
+var characterEscape = {
+ name: 'characterEscape',
+ tokenize: tokenizeCharacterEscape
+}
+
+function tokenizeCharacterEscape(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ effects.enter('characterEscape')
+ effects.enter('escapeMarker')
+ effects.consume(code)
+ effects.exit('escapeMarker')
+ return open
+ }
+
+ function open(code) {
+ if (asciiPunctuation(code)) {
+ effects.enter('characterEscapeValue')
+ effects.consume(code)
+ effects.exit('characterEscapeValue')
+ effects.exit('characterEscape')
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = characterEscape
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-reference.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-reference.js
new file mode 100644
index 0000000000..101027dbde
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/character-reference.js
@@ -0,0 +1,94 @@
+'use strict'
+
+var decodeEntity = require('parse-entities/decode-entity.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var asciiDigit = require('../character/ascii-digit.js')
+var asciiHexDigit = require('../character/ascii-hex-digit.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)
+
+var characterReference = {
+ name: 'characterReference',
+ tokenize: tokenizeCharacterReference
+}
+
+function tokenizeCharacterReference(effects, ok, nok) {
+ var self = this
+ var size = 0
+ var max
+ var test
+ return start
+
+ function start(code) {
+ effects.enter('characterReference')
+ effects.enter('characterReferenceMarker')
+ effects.consume(code)
+ effects.exit('characterReferenceMarker')
+ return open
+ }
+
+ function open(code) {
+ if (code === 35) {
+ effects.enter('characterReferenceMarkerNumeric')
+ effects.consume(code)
+ effects.exit('characterReferenceMarkerNumeric')
+ return numeric
+ }
+
+ effects.enter('characterReferenceValue')
+ max = 31
+ test = asciiAlphanumeric
+ return value(code)
+ }
+
+ function numeric(code) {
+ if (code === 88 || code === 120) {
+ effects.enter('characterReferenceMarkerHexadecimal')
+ effects.consume(code)
+ effects.exit('characterReferenceMarkerHexadecimal')
+ effects.enter('characterReferenceValue')
+ max = 6
+ test = asciiHexDigit
+ return value
+ }
+
+ effects.enter('characterReferenceValue')
+ max = 7
+ test = asciiDigit
+ return value(code)
+ }
+
+ function value(code) {
+ var token
+
+ if (code === 59 && size) {
+ token = effects.exit('characterReferenceValue')
+
+ if (
+ test === asciiAlphanumeric &&
+ !decodeEntity__default['default'](self.sliceSerialize(token))
+ ) {
+ return nok(code)
+ }
+
+ effects.enter('characterReferenceMarker')
+ effects.consume(code)
+ effects.exit('characterReferenceMarker')
+ effects.exit('characterReference')
+ return ok
+ }
+
+ if (test(code) && size++ < max) {
+ effects.consume(code)
+ return value
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = characterReference
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-fenced.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-fenced.js
new file mode 100644
index 0000000000..16f8894704
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-fenced.js
@@ -0,0 +1,176 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var prefixSize = require('../util/prefix-size.js')
+var factorySpace = require('./factory-space.js')
+
+var codeFenced = {
+ name: 'codeFenced',
+ tokenize: tokenizeCodeFenced,
+ concrete: true
+}
+
+function tokenizeCodeFenced(effects, ok, nok) {
+ var self = this
+ var closingFenceConstruct = {
+ tokenize: tokenizeClosingFence,
+ partial: true
+ }
+ var initialPrefix = prefixSize(this.events, 'linePrefix')
+ var sizeOpen = 0
+ var marker
+ return start
+
+ function start(code) {
+ effects.enter('codeFenced')
+ effects.enter('codeFencedFence')
+ effects.enter('codeFencedFenceSequence')
+ marker = code
+ return sequenceOpen(code)
+ }
+
+ function sequenceOpen(code) {
+ if (code === marker) {
+ effects.consume(code)
+ sizeOpen++
+ return sequenceOpen
+ }
+
+ effects.exit('codeFencedFenceSequence')
+ return sizeOpen < 3
+ ? nok(code)
+ : factorySpace(effects, infoOpen, 'whitespace')(code)
+ }
+
+ function infoOpen(code) {
+ if (code === null || markdownLineEnding(code)) {
+ return openAfter(code)
+ }
+
+ effects.enter('codeFencedFenceInfo')
+ effects.enter('chunkString', {
+ contentType: 'string'
+ })
+ return info(code)
+ }
+
+ function info(code) {
+ if (code === null || markdownLineEndingOrSpace(code)) {
+ effects.exit('chunkString')
+ effects.exit('codeFencedFenceInfo')
+ return factorySpace(effects, infoAfter, 'whitespace')(code)
+ }
+
+ if (code === 96 && code === marker) return nok(code)
+ effects.consume(code)
+ return info
+ }
+
+ function infoAfter(code) {
+ if (code === null || markdownLineEnding(code)) {
+ return openAfter(code)
+ }
+
+ effects.enter('codeFencedFenceMeta')
+ effects.enter('chunkString', {
+ contentType: 'string'
+ })
+ return meta(code)
+ }
+
+ function meta(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('chunkString')
+ effects.exit('codeFencedFenceMeta')
+ return openAfter(code)
+ }
+
+ if (code === 96 && code === marker) return nok(code)
+ effects.consume(code)
+ return meta
+ }
+
+ function openAfter(code) {
+ effects.exit('codeFencedFence')
+ return self.interrupt ? ok(code) : content(code)
+ }
+
+ function content(code) {
+ if (code === null) {
+ return after(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return effects.attempt(
+ closingFenceConstruct,
+ after,
+ initialPrefix
+ ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)
+ : content
+ )
+ }
+
+ effects.enter('codeFlowValue')
+ return contentContinue(code)
+ }
+
+ function contentContinue(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('codeFlowValue')
+ return content(code)
+ }
+
+ effects.consume(code)
+ return contentContinue
+ }
+
+ function after(code) {
+ effects.exit('codeFenced')
+ return ok(code)
+ }
+
+ function tokenizeClosingFence(effects, ok, nok) {
+ var size = 0
+ return factorySpace(
+ effects,
+ closingSequenceStart,
+ 'linePrefix',
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4
+ )
+
+ function closingSequenceStart(code) {
+ effects.enter('codeFencedFence')
+ effects.enter('codeFencedFenceSequence')
+ return closingSequence(code)
+ }
+
+ function closingSequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ size++
+ return closingSequence
+ }
+
+ if (size < sizeOpen) return nok(code)
+ effects.exit('codeFencedFenceSequence')
+ return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)
+ }
+
+ function closingSequenceEnd(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('codeFencedFence')
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+ }
+}
+
+module.exports = codeFenced
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-indented.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-indented.js
new file mode 100644
index 0000000000..604f094dbc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-indented.js
@@ -0,0 +1,72 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var prefixSize = require('../util/prefix-size.js')
+var factorySpace = require('./factory-space.js')
+
+var codeIndented = {
+ name: 'codeIndented',
+ tokenize: tokenizeCodeIndented,
+ resolve: resolveCodeIndented
+}
+var indentedContentConstruct = {
+ tokenize: tokenizeIndentedContent,
+ partial: true
+}
+
+function resolveCodeIndented(events, context) {
+ var code = {
+ type: 'codeIndented',
+ start: events[0][1].start,
+ end: events[events.length - 1][1].end
+ }
+ chunkedSplice(events, 0, 0, [['enter', code, context]])
+ chunkedSplice(events, events.length, 0, [['exit', code, context]])
+ return events
+}
+
+function tokenizeCodeIndented(effects, ok, nok) {
+ return effects.attempt(indentedContentConstruct, afterPrefix, nok)
+
+ function afterPrefix(code) {
+ if (code === null) {
+ return ok(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)
+ }
+
+ effects.enter('codeFlowValue')
+ return content(code)
+ }
+
+ function content(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('codeFlowValue')
+ return afterPrefix(code)
+ }
+
+ effects.consume(code)
+ return content
+ }
+}
+
+function tokenizeIndentedContent(effects, ok, nok) {
+ var self = this
+ return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)
+
+ function afterPrefix(code) {
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)
+ }
+
+ return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)
+ }
+}
+
+module.exports = codeIndented
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-text.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-text.js
new file mode 100644
index 0000000000..d4a8fbe31c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/code-text.js
@@ -0,0 +1,162 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+
+var codeText = {
+ name: 'codeText',
+ tokenize: tokenizeCodeText,
+ resolve: resolveCodeText,
+ previous: previous
+}
+
+function resolveCodeText(events) {
+ var tailExitIndex = events.length - 4
+ var headEnterIndex = 3
+ var index
+ var enter // If we start and end with an EOL or a space.
+
+ if (
+ (events[headEnterIndex][1].type === 'lineEnding' ||
+ events[headEnterIndex][1].type === 'space') &&
+ (events[tailExitIndex][1].type === 'lineEnding' ||
+ events[tailExitIndex][1].type === 'space')
+ ) {
+ index = headEnterIndex // And we have data.
+
+ while (++index < tailExitIndex) {
+ if (events[index][1].type === 'codeTextData') {
+ // Then we have padding.
+ events[tailExitIndex][1].type = events[headEnterIndex][1].type =
+ 'codeTextPadding'
+ headEnterIndex += 2
+ tailExitIndex -= 2
+ break
+ }
+ }
+ } // Merge adjacent spaces and data.
+
+ index = headEnterIndex - 1
+ tailExitIndex++
+
+ while (++index <= tailExitIndex) {
+ if (enter === undefined) {
+ if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {
+ enter = index
+ }
+ } else if (
+ index === tailExitIndex ||
+ events[index][1].type === 'lineEnding'
+ ) {
+ events[enter][1].type = 'codeTextData'
+
+ if (index !== enter + 2) {
+ events[enter][1].end = events[index - 1][1].end
+ events.splice(enter + 2, index - enter - 2)
+ tailExitIndex -= index - enter - 2
+ index = enter + 2
+ }
+
+ enter = undefined
+ }
+ }
+
+ return events
+}
+
+function previous(code) {
+ // If there is a previous code, there will always be a tail.
+ return (
+ code !== 96 ||
+ this.events[this.events.length - 1][1].type === 'characterEscape'
+ )
+}
+
+function tokenizeCodeText(effects, ok, nok) {
+ var sizeOpen = 0
+ var size
+ var token
+ return start
+
+ function start(code) {
+ effects.enter('codeText')
+ effects.enter('codeTextSequence')
+ return openingSequence(code)
+ }
+
+ function openingSequence(code) {
+ if (code === 96) {
+ effects.consume(code)
+ sizeOpen++
+ return openingSequence
+ }
+
+ effects.exit('codeTextSequence')
+ return gap(code)
+ }
+
+ function gap(code) {
+ // EOF.
+ if (code === null) {
+ return nok(code)
+ } // Closing fence?
+ // Could also be data.
+
+ if (code === 96) {
+ token = effects.enter('codeTextSequence')
+ size = 0
+ return closingSequence(code)
+ } // Tabs don’t work, and virtual spaces don’t make sense.
+
+ if (code === 32) {
+ effects.enter('space')
+ effects.consume(code)
+ effects.exit('space')
+ return gap
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return gap
+ } // Data.
+
+ effects.enter('codeTextData')
+ return data(code)
+ } // In code.
+
+ function data(code) {
+ if (
+ code === null ||
+ code === 32 ||
+ code === 96 ||
+ markdownLineEnding(code)
+ ) {
+ effects.exit('codeTextData')
+ return gap(code)
+ }
+
+ effects.consume(code)
+ return data
+ } // Closing fence.
+
+ function closingSequence(code) {
+ // More.
+ if (code === 96) {
+ effects.consume(code)
+ size++
+ return closingSequence
+ } // Done!
+
+ if (size === sizeOpen) {
+ effects.exit('codeTextSequence')
+ effects.exit('codeText')
+ return ok(code)
+ } // More or less accents: mark as data.
+
+ token.type = 'codeTextData'
+ return data(code)
+ }
+}
+
+module.exports = codeText
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/content.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/content.js
new file mode 100644
index 0000000000..e1a712eb8b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/content.js
@@ -0,0 +1,99 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var prefixSize = require('../util/prefix-size.js')
+var subtokenize = require('../util/subtokenize.js')
+var factorySpace = require('./factory-space.js')
+
+// No name because it must not be turned off.
+var content = {
+ tokenize: tokenizeContent,
+ resolve: resolveContent,
+ interruptible: true,
+ lazy: true
+}
+var continuationConstruct = {
+ tokenize: tokenizeContinuation,
+ partial: true
+} // Content is transparent: it’s parsed right now. That way, definitions are also
+// parsed right now: before text in paragraphs (specifically, media) are parsed.
+
+function resolveContent(events) {
+ subtokenize(events)
+ return events
+}
+
+function tokenizeContent(effects, ok) {
+ var previous
+ return start
+
+ function start(code) {
+ effects.enter('content')
+ previous = effects.enter('chunkContent', {
+ contentType: 'content'
+ })
+ return data(code)
+ }
+
+ function data(code) {
+ if (code === null) {
+ return contentEnd(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ return effects.check(
+ continuationConstruct,
+ contentContinue,
+ contentEnd
+ )(code)
+ } // Data.
+
+ effects.consume(code)
+ return data
+ }
+
+ function contentEnd(code) {
+ effects.exit('chunkContent')
+ effects.exit('content')
+ return ok(code)
+ }
+
+ function contentContinue(code) {
+ effects.consume(code)
+ effects.exit('chunkContent')
+ previous = previous.next = effects.enter('chunkContent', {
+ contentType: 'content',
+ previous: previous
+ })
+ return data
+ }
+}
+
+function tokenizeContinuation(effects, ok, nok) {
+ var self = this
+ return startLookahead
+
+ function startLookahead(code) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return factorySpace(effects, prefixed, 'linePrefix')
+ }
+
+ function prefixed(code) {
+ if (code === null || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ if (
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||
+ prefixSize(self.events, 'linePrefix') < 4
+ ) {
+ return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)
+ }
+
+ return ok(code)
+ }
+}
+
+module.exports = content
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/definition.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/definition.js
new file mode 100644
index 0000000000..21505d8943
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/definition.js
@@ -0,0 +1,115 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var normalizeIdentifier = require('../util/normalize-identifier.js')
+var factoryDestination = require('./factory-destination.js')
+var factoryLabel = require('./factory-label.js')
+var factorySpace = require('./factory-space.js')
+var factoryWhitespace = require('./factory-whitespace.js')
+var factoryTitle = require('./factory-title.js')
+
+var definition = {
+ name: 'definition',
+ tokenize: tokenizeDefinition
+}
+var titleConstruct = {
+ tokenize: tokenizeTitle,
+ partial: true
+}
+
+function tokenizeDefinition(effects, ok, nok) {
+ var self = this
+ var identifier
+ return start
+
+ function start(code) {
+ effects.enter('definition')
+ return factoryLabel.call(
+ self,
+ effects,
+ labelAfter,
+ nok,
+ 'definitionLabel',
+ 'definitionLabelMarker',
+ 'definitionLabelString'
+ )(code)
+ }
+
+ function labelAfter(code) {
+ identifier = normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+
+ if (code === 58) {
+ effects.enter('definitionMarker')
+ effects.consume(code)
+ effects.exit('definitionMarker') // Note: blank lines can’t exist in content.
+
+ return factoryWhitespace(
+ effects,
+ factoryDestination(
+ effects,
+ effects.attempt(
+ titleConstruct,
+ factorySpace(effects, after, 'whitespace'),
+ factorySpace(effects, after, 'whitespace')
+ ),
+ nok,
+ 'definitionDestination',
+ 'definitionDestinationLiteral',
+ 'definitionDestinationLiteralMarker',
+ 'definitionDestinationRaw',
+ 'definitionDestinationString'
+ )
+ )
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('definition')
+
+ if (self.parser.defined.indexOf(identifier) < 0) {
+ self.parser.defined.push(identifier)
+ }
+
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+function tokenizeTitle(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ return markdownLineEndingOrSpace(code)
+ ? factoryWhitespace(effects, before)(code)
+ : nok(code)
+ }
+
+ function before(code) {
+ if (code === 34 || code === 39 || code === 40) {
+ return factoryTitle(
+ effects,
+ factorySpace(effects, after, 'whitespace'),
+ nok,
+ 'definitionTitle',
+ 'definitionTitleMarker',
+ 'definitionTitleString'
+ )(code)
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ return code === null || markdownLineEnding(code) ? ok(code) : nok(code)
+ }
+}
+
+module.exports = definition
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-destination.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-destination.js
new file mode 100644
index 0000000000..1572025cff
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-destination.js
@@ -0,0 +1,131 @@
+'use strict'
+
+var asciiControl = require('../character/ascii-control.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+
+// eslint-disable-next-line max-params
+function destinationFactory(
+ effects,
+ ok,
+ nok,
+ type,
+ literalType,
+ literalMarkerType,
+ rawType,
+ stringType,
+ max
+) {
+ var limit = max || Infinity
+ var balance = 0
+ return start
+
+ function start(code) {
+ if (code === 60) {
+ effects.enter(type)
+ effects.enter(literalType)
+ effects.enter(literalMarkerType)
+ effects.consume(code)
+ effects.exit(literalMarkerType)
+ return destinationEnclosedBefore
+ }
+
+ if (asciiControl(code) || code === 41) {
+ return nok(code)
+ }
+
+ effects.enter(type)
+ effects.enter(rawType)
+ effects.enter(stringType)
+ effects.enter('chunkString', {
+ contentType: 'string'
+ })
+ return destinationRaw(code)
+ }
+
+ function destinationEnclosedBefore(code) {
+ if (code === 62) {
+ effects.enter(literalMarkerType)
+ effects.consume(code)
+ effects.exit(literalMarkerType)
+ effects.exit(literalType)
+ effects.exit(type)
+ return ok
+ }
+
+ effects.enter(stringType)
+ effects.enter('chunkString', {
+ contentType: 'string'
+ })
+ return destinationEnclosed(code)
+ }
+
+ function destinationEnclosed(code) {
+ if (code === 62) {
+ effects.exit('chunkString')
+ effects.exit(stringType)
+ return destinationEnclosedBefore(code)
+ }
+
+ if (code === null || code === 60 || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return code === 92 ? destinationEnclosedEscape : destinationEnclosed
+ }
+
+ function destinationEnclosedEscape(code) {
+ if (code === 60 || code === 62 || code === 92) {
+ effects.consume(code)
+ return destinationEnclosed
+ }
+
+ return destinationEnclosed(code)
+ }
+
+ function destinationRaw(code) {
+ if (code === 40) {
+ if (++balance > limit) return nok(code)
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ if (code === 41) {
+ if (!balance--) {
+ effects.exit('chunkString')
+ effects.exit(stringType)
+ effects.exit(rawType)
+ effects.exit(type)
+ return ok(code)
+ }
+
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ if (code === null || markdownLineEndingOrSpace(code)) {
+ if (balance) return nok(code)
+ effects.exit('chunkString')
+ effects.exit(stringType)
+ effects.exit(rawType)
+ effects.exit(type)
+ return ok(code)
+ }
+
+ if (asciiControl(code)) return nok(code)
+ effects.consume(code)
+ return code === 92 ? destinationRawEscape : destinationRaw
+ }
+
+ function destinationRawEscape(code) {
+ if (code === 40 || code === 41 || code === 92) {
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ return destinationRaw(code)
+ }
+}
+
+module.exports = destinationFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-label.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-label.js
new file mode 100644
index 0000000000..500c95a8f7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-label.js
@@ -0,0 +1,88 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownSpace = require('../character/markdown-space.js')
+
+// eslint-disable-next-line max-params
+function labelFactory(effects, ok, nok, type, markerType, stringType) {
+ var self = this
+ var size = 0
+ var data
+ return start
+
+ function start(code) {
+ effects.enter(type)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.enter(stringType)
+ return atBreak
+ }
+
+ function atBreak(code) {
+ if (
+ code === null ||
+ code === 91 ||
+ (code === 93 && !data) ||
+ /* c8 ignore next */
+ (code === 94 &&
+ /* c8 ignore next */
+ !size &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs) ||
+ size > 999
+ ) {
+ return nok(code)
+ }
+
+ if (code === 93) {
+ effects.exit(stringType)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.exit(type)
+ return ok
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return atBreak
+ }
+
+ effects.enter('chunkString', {
+ contentType: 'string'
+ })
+ return label(code)
+ }
+
+ function label(code) {
+ if (
+ code === null ||
+ code === 91 ||
+ code === 93 ||
+ markdownLineEnding(code) ||
+ size++ > 999
+ ) {
+ effects.exit('chunkString')
+ return atBreak(code)
+ }
+
+ effects.consume(code)
+ data = data || !markdownSpace(code)
+ return code === 92 ? labelEscape : label
+ }
+
+ function labelEscape(code) {
+ if (code === 91 || code === 92 || code === 93) {
+ effects.consume(code)
+ size++
+ return label
+ }
+
+ return label(code)
+ }
+}
+
+module.exports = labelFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-space.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-space.js
new file mode 100644
index 0000000000..b1026df91f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-space.js
@@ -0,0 +1,30 @@
+'use strict'
+
+var markdownSpace = require('../character/markdown-space.js')
+
+function spaceFactory(effects, ok, type, max) {
+ var limit = max ? max - 1 : Infinity
+ var size = 0
+ return start
+
+ function start(code) {
+ if (markdownSpace(code)) {
+ effects.enter(type)
+ return prefix(code)
+ }
+
+ return ok(code)
+ }
+
+ function prefix(code) {
+ if (markdownSpace(code) && size++ < limit) {
+ effects.consume(code)
+ return prefix
+ }
+
+ effects.exit(type)
+ return ok(code)
+ }
+}
+
+module.exports = spaceFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-title.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-title.js
new file mode 100644
index 0000000000..6b3d05456e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-title.js
@@ -0,0 +1,75 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var factorySpace = require('./factory-space.js')
+
+function titleFactory(effects, ok, nok, type, markerType, stringType) {
+ var marker
+ return start
+
+ function start(code) {
+ effects.enter(type)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ marker = code === 40 ? 41 : code
+ return atFirstTitleBreak
+ }
+
+ function atFirstTitleBreak(code) {
+ if (code === marker) {
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.exit(type)
+ return ok
+ }
+
+ effects.enter(stringType)
+ return atTitleBreak(code)
+ }
+
+ function atTitleBreak(code) {
+ if (code === marker) {
+ effects.exit(stringType)
+ return atFirstTitleBreak(marker)
+ }
+
+ if (code === null) {
+ return nok(code)
+ } // Note: blank lines can’t exist in content.
+
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return factorySpace(effects, atTitleBreak, 'linePrefix')
+ }
+
+ effects.enter('chunkString', {
+ contentType: 'string'
+ })
+ return title(code)
+ }
+
+ function title(code) {
+ if (code === marker || code === null || markdownLineEnding(code)) {
+ effects.exit('chunkString')
+ return atTitleBreak(code)
+ }
+
+ effects.consume(code)
+ return code === 92 ? titleEscape : title
+ }
+
+ function titleEscape(code) {
+ if (code === marker || code === 92) {
+ effects.consume(code)
+ return title
+ }
+
+ return title(code)
+ }
+}
+
+module.exports = titleFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-whitespace.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-whitespace.js
new file mode 100644
index 0000000000..8141e961d3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/factory-whitespace.js
@@ -0,0 +1,32 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownSpace = require('../character/markdown-space.js')
+var factorySpace = require('./factory-space.js')
+
+function whitespaceFactory(effects, ok) {
+ var seen
+ return start
+
+ function start(code) {
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ seen = true
+ return start
+ }
+
+ if (markdownSpace(code)) {
+ return factorySpace(
+ effects,
+ start,
+ seen ? 'linePrefix' : 'lineSuffix'
+ )(code)
+ }
+
+ return ok(code)
+ }
+}
+
+module.exports = whitespaceFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/hard-break-escape.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/hard-break-escape.js
new file mode 100644
index 0000000000..bb49becb51
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/hard-break-escape.js
@@ -0,0 +1,31 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+
+var hardBreakEscape = {
+ name: 'hardBreakEscape',
+ tokenize: tokenizeHardBreakEscape
+}
+
+function tokenizeHardBreakEscape(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ effects.enter('hardBreakEscape')
+ effects.enter('escapeMarker')
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (markdownLineEnding(code)) {
+ effects.exit('escapeMarker')
+ effects.exit('hardBreakEscape')
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = hardBreakEscape
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/heading-atx.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/heading-atx.js
new file mode 100644
index 0000000000..8d8514ba03
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/heading-atx.js
@@ -0,0 +1,129 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownSpace = require('../character/markdown-space.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var factorySpace = require('./factory-space.js')
+
+var headingAtx = {
+ name: 'headingAtx',
+ tokenize: tokenizeHeadingAtx,
+ resolve: resolveHeadingAtx
+}
+
+function resolveHeadingAtx(events, context) {
+ var contentEnd = events.length - 2
+ var contentStart = 3
+ var content
+ var text // Prefix whitespace, part of the opening.
+
+ if (events[contentStart][1].type === 'whitespace') {
+ contentStart += 2
+ } // Suffix whitespace, part of the closing.
+
+ if (
+ contentEnd - 2 > contentStart &&
+ events[contentEnd][1].type === 'whitespace'
+ ) {
+ contentEnd -= 2
+ }
+
+ if (
+ events[contentEnd][1].type === 'atxHeadingSequence' &&
+ (contentStart === contentEnd - 1 ||
+ (contentEnd - 4 > contentStart &&
+ events[contentEnd - 2][1].type === 'whitespace'))
+ ) {
+ contentEnd -= contentStart + 1 === contentEnd ? 2 : 4
+ }
+
+ if (contentEnd > contentStart) {
+ content = {
+ type: 'atxHeadingText',
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end
+ }
+ text = {
+ type: 'chunkText',
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end,
+ contentType: 'text'
+ }
+ chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [
+ ['enter', content, context],
+ ['enter', text, context],
+ ['exit', text, context],
+ ['exit', content, context]
+ ])
+ }
+
+ return events
+}
+
+function tokenizeHeadingAtx(effects, ok, nok) {
+ var self = this
+ var size = 0
+ return start
+
+ function start(code) {
+ effects.enter('atxHeading')
+ effects.enter('atxHeadingSequence')
+ return fenceOpenInside(code)
+ }
+
+ function fenceOpenInside(code) {
+ if (code === 35 && size++ < 6) {
+ effects.consume(code)
+ return fenceOpenInside
+ }
+
+ if (code === null || markdownLineEndingOrSpace(code)) {
+ effects.exit('atxHeadingSequence')
+ return self.interrupt ? ok(code) : headingBreak(code)
+ }
+
+ return nok(code)
+ }
+
+ function headingBreak(code) {
+ if (code === 35) {
+ effects.enter('atxHeadingSequence')
+ return sequence(code)
+ }
+
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('atxHeading')
+ return ok(code)
+ }
+
+ if (markdownSpace(code)) {
+ return factorySpace(effects, headingBreak, 'whitespace')(code)
+ }
+
+ effects.enter('atxHeadingText')
+ return data(code)
+ }
+
+ function sequence(code) {
+ if (code === 35) {
+ effects.consume(code)
+ return sequence
+ }
+
+ effects.exit('atxHeadingSequence')
+ return headingBreak(code)
+ }
+
+ function data(code) {
+ if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {
+ effects.exit('atxHeadingText')
+ return headingBreak(code)
+ }
+
+ effects.consume(code)
+ return data
+ }
+}
+
+module.exports = headingAtx
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-flow.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-flow.js
new file mode 100644
index 0000000000..dc604bf71b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-flow.js
@@ -0,0 +1,486 @@
+'use strict'
+
+var asciiAlpha = require('../character/ascii-alpha.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownSpace = require('../character/markdown-space.js')
+var fromCharCode = require('../constant/from-char-code.js')
+var htmlBlockNames = require('../constant/html-block-names.js')
+var htmlRawNames = require('../constant/html-raw-names.js')
+var partialBlankLine = require('./partial-blank-line.js')
+
+var htmlFlow = {
+ name: 'htmlFlow',
+ tokenize: tokenizeHtmlFlow,
+ resolveTo: resolveToHtmlFlow,
+ concrete: true
+}
+var nextBlankConstruct = {
+ tokenize: tokenizeNextBlank,
+ partial: true
+}
+
+function resolveToHtmlFlow(events) {
+ var index = events.length
+
+ while (index--) {
+ if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {
+ break
+ }
+ }
+
+ if (index > 1 && events[index - 2][1].type === 'linePrefix') {
+ // Add the prefix start to the HTML token.
+ events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.
+
+ events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.
+
+ events.splice(index - 2, 2)
+ }
+
+ return events
+}
+
+function tokenizeHtmlFlow(effects, ok, nok) {
+ var self = this
+ var kind
+ var startTag
+ var buffer
+ var index
+ var marker
+ return start
+
+ function start(code) {
+ effects.enter('htmlFlow')
+ effects.enter('htmlFlowData')
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (code === 33) {
+ effects.consume(code)
+ return declarationStart
+ }
+
+ if (code === 47) {
+ effects.consume(code)
+ return tagCloseStart
+ }
+
+ if (code === 63) {
+ effects.consume(code)
+ kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`
+ // right now, so we do need to search for `>`, similar to declarations.
+
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ buffer = fromCharCode(code)
+ startTag = true
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function declarationStart(code) {
+ if (code === 45) {
+ effects.consume(code)
+ kind = 2
+ return commentOpenInside
+ }
+
+ if (code === 91) {
+ effects.consume(code)
+ kind = 5
+ buffer = 'CDATA['
+ index = 0
+ return cdataOpenInside
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ kind = 4
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ return nok(code)
+ }
+
+ function commentOpenInside(code) {
+ if (code === 45) {
+ effects.consume(code)
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ return nok(code)
+ }
+
+ function cdataOpenInside(code) {
+ if (code === buffer.charCodeAt(index++)) {
+ effects.consume(code)
+ return index === buffer.length
+ ? self.interrupt
+ ? ok
+ : continuation
+ : cdataOpenInside
+ }
+
+ return nok(code)
+ }
+
+ function tagCloseStart(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ buffer = fromCharCode(code)
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function tagName(code) {
+ if (
+ code === null ||
+ code === 47 ||
+ code === 62 ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ if (
+ code !== 47 &&
+ startTag &&
+ htmlRawNames.indexOf(buffer.toLowerCase()) > -1
+ ) {
+ kind = 1
+ return self.interrupt ? ok(code) : continuation(code)
+ }
+
+ if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {
+ kind = 6
+
+ if (code === 47) {
+ effects.consume(code)
+ return basicSelfClosing
+ }
+
+ return self.interrupt ? ok(code) : continuation(code)
+ }
+
+ kind = 7 // Do not support complete HTML when interrupting.
+
+ return self.interrupt
+ ? nok(code)
+ : startTag
+ ? completeAttributeNameBefore(code)
+ : completeClosingTagAfter(code)
+ }
+
+ if (code === 45 || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ buffer += fromCharCode(code)
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function basicSelfClosing(code) {
+ if (code === 62) {
+ effects.consume(code)
+ return self.interrupt ? ok : continuation
+ }
+
+ return nok(code)
+ }
+
+ function completeClosingTagAfter(code) {
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeClosingTagAfter
+ }
+
+ return completeEnd(code)
+ }
+
+ function completeAttributeNameBefore(code) {
+ if (code === 47) {
+ effects.consume(code)
+ return completeEnd
+ }
+
+ if (code === 58 || code === 95 || asciiAlpha(code)) {
+ effects.consume(code)
+ return completeAttributeName
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeNameBefore
+ }
+
+ return completeEnd(code)
+ }
+
+ function completeAttributeName(code) {
+ if (
+ code === 45 ||
+ code === 46 ||
+ code === 58 ||
+ code === 95 ||
+ asciiAlphanumeric(code)
+ ) {
+ effects.consume(code)
+ return completeAttributeName
+ }
+
+ return completeAttributeNameAfter(code)
+ }
+
+ function completeAttributeNameAfter(code) {
+ if (code === 61) {
+ effects.consume(code)
+ return completeAttributeValueBefore
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeNameAfter
+ }
+
+ return completeAttributeNameBefore(code)
+ }
+
+ function completeAttributeValueBefore(code) {
+ if (
+ code === null ||
+ code === 60 ||
+ code === 61 ||
+ code === 62 ||
+ code === 96
+ ) {
+ return nok(code)
+ }
+
+ if (code === 34 || code === 39) {
+ effects.consume(code)
+ marker = code
+ return completeAttributeValueQuoted
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeValueBefore
+ }
+
+ marker = undefined
+ return completeAttributeValueUnquoted(code)
+ }
+
+ function completeAttributeValueQuoted(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return completeAttributeValueQuotedAfter
+ }
+
+ if (code === null || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return completeAttributeValueQuoted
+ }
+
+ function completeAttributeValueUnquoted(code) {
+ if (
+ code === null ||
+ code === 34 ||
+ code === 39 ||
+ code === 60 ||
+ code === 61 ||
+ code === 62 ||
+ code === 96 ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return completeAttributeNameAfter(code)
+ }
+
+ effects.consume(code)
+ return completeAttributeValueUnquoted
+ }
+
+ function completeAttributeValueQuotedAfter(code) {
+ if (code === 47 || code === 62 || markdownSpace(code)) {
+ return completeAttributeNameBefore(code)
+ }
+
+ return nok(code)
+ }
+
+ function completeEnd(code) {
+ if (code === 62) {
+ effects.consume(code)
+ return completeAfter
+ }
+
+ return nok(code)
+ }
+
+ function completeAfter(code) {
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAfter
+ }
+
+ return code === null || markdownLineEnding(code)
+ ? continuation(code)
+ : nok(code)
+ }
+
+ function continuation(code) {
+ if (code === 45 && kind === 2) {
+ effects.consume(code)
+ return continuationCommentInside
+ }
+
+ if (code === 60 && kind === 1) {
+ effects.consume(code)
+ return continuationRawTagOpen
+ }
+
+ if (code === 62 && kind === 4) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ if (code === 63 && kind === 3) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ if (code === 93 && kind === 5) {
+ effects.consume(code)
+ return continuationCharacterDataInside
+ }
+
+ if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {
+ return effects.check(
+ nextBlankConstruct,
+ continuationClose,
+ continuationAtLineEnding
+ )(code)
+ }
+
+ if (code === null || markdownLineEnding(code)) {
+ return continuationAtLineEnding(code)
+ }
+
+ effects.consume(code)
+ return continuation
+ }
+
+ function continuationAtLineEnding(code) {
+ effects.exit('htmlFlowData')
+ return htmlContinueStart(code)
+ }
+
+ function htmlContinueStart(code) {
+ if (code === null) {
+ return done(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return htmlContinueStart
+ }
+
+ effects.enter('htmlFlowData')
+ return continuation(code)
+ }
+
+ function continuationCommentInside(code) {
+ if (code === 45) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ return continuation(code)
+ }
+
+ function continuationRawTagOpen(code) {
+ if (code === 47) {
+ effects.consume(code)
+ buffer = ''
+ return continuationRawEndTag
+ }
+
+ return continuation(code)
+ }
+
+ function continuationRawEndTag(code) {
+ if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ if (asciiAlpha(code) && buffer.length < 8) {
+ effects.consume(code)
+ buffer += fromCharCode(code)
+ return continuationRawEndTag
+ }
+
+ return continuation(code)
+ }
+
+ function continuationCharacterDataInside(code) {
+ if (code === 93) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ return continuation(code)
+ }
+
+ function continuationDeclarationInside(code) {
+ if (code === 62) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ return continuation(code)
+ }
+
+ function continuationClose(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('htmlFlowData')
+ return done(code)
+ }
+
+ effects.consume(code)
+ return continuationClose
+ }
+
+ function done(code) {
+ effects.exit('htmlFlow')
+ return ok(code)
+ }
+}
+
+function tokenizeNextBlank(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ effects.exit('htmlFlowData')
+ effects.enter('lineEndingBlank')
+ effects.consume(code)
+ effects.exit('lineEndingBlank')
+ return effects.attempt(partialBlankLine, ok, nok)
+ }
+}
+
+module.exports = htmlFlow
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-text.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-text.js
new file mode 100644
index 0000000000..92d1eeeccd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/html-text.js
@@ -0,0 +1,435 @@
+'use strict'
+
+var asciiAlpha = require('../character/ascii-alpha.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownSpace = require('../character/markdown-space.js')
+var factorySpace = require('./factory-space.js')
+
+var htmlText = {
+ name: 'htmlText',
+ tokenize: tokenizeHtmlText
+}
+
+function tokenizeHtmlText(effects, ok, nok) {
+ var self = this
+ var marker
+ var buffer
+ var index
+ var returnState
+ return start
+
+ function start(code) {
+ effects.enter('htmlText')
+ effects.enter('htmlTextData')
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (code === 33) {
+ effects.consume(code)
+ return declarationOpen
+ }
+
+ if (code === 47) {
+ effects.consume(code)
+ return tagCloseStart
+ }
+
+ if (code === 63) {
+ effects.consume(code)
+ return instruction
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return tagOpen
+ }
+
+ return nok(code)
+ }
+
+ function declarationOpen(code) {
+ if (code === 45) {
+ effects.consume(code)
+ return commentOpen
+ }
+
+ if (code === 91) {
+ effects.consume(code)
+ buffer = 'CDATA['
+ index = 0
+ return cdataOpen
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return declaration
+ }
+
+ return nok(code)
+ }
+
+ function commentOpen(code) {
+ if (code === 45) {
+ effects.consume(code)
+ return commentStart
+ }
+
+ return nok(code)
+ }
+
+ function commentStart(code) {
+ if (code === null || code === 62) {
+ return nok(code)
+ }
+
+ if (code === 45) {
+ effects.consume(code)
+ return commentStartDash
+ }
+
+ return comment(code)
+ }
+
+ function commentStartDash(code) {
+ if (code === null || code === 62) {
+ return nok(code)
+ }
+
+ return comment(code)
+ }
+
+ function comment(code) {
+ if (code === null) {
+ return nok(code)
+ }
+
+ if (code === 45) {
+ effects.consume(code)
+ return commentClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = comment
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return comment
+ }
+
+ function commentClose(code) {
+ if (code === 45) {
+ effects.consume(code)
+ return end
+ }
+
+ return comment(code)
+ }
+
+ function cdataOpen(code) {
+ if (code === buffer.charCodeAt(index++)) {
+ effects.consume(code)
+ return index === buffer.length ? cdata : cdataOpen
+ }
+
+ return nok(code)
+ }
+
+ function cdata(code) {
+ if (code === null) {
+ return nok(code)
+ }
+
+ if (code === 93) {
+ effects.consume(code)
+ return cdataClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = cdata
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return cdata
+ }
+
+ function cdataClose(code) {
+ if (code === 93) {
+ effects.consume(code)
+ return cdataEnd
+ }
+
+ return cdata(code)
+ }
+
+ function cdataEnd(code) {
+ if (code === 62) {
+ return end(code)
+ }
+
+ if (code === 93) {
+ effects.consume(code)
+ return cdataEnd
+ }
+
+ return cdata(code)
+ }
+
+ function declaration(code) {
+ if (code === null || code === 62) {
+ return end(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = declaration
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return declaration
+ }
+
+ function instruction(code) {
+ if (code === null) {
+ return nok(code)
+ }
+
+ if (code === 63) {
+ effects.consume(code)
+ return instructionClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = instruction
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return instruction
+ }
+
+ function instructionClose(code) {
+ return code === 62 ? end(code) : instruction(code)
+ }
+
+ function tagCloseStart(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return tagClose
+ }
+
+ return nok(code)
+ }
+
+ function tagClose(code) {
+ if (code === 45 || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ return tagClose
+ }
+
+ return tagCloseBetween(code)
+ }
+
+ function tagCloseBetween(code) {
+ if (markdownLineEnding(code)) {
+ returnState = tagCloseBetween
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagCloseBetween
+ }
+
+ return end(code)
+ }
+
+ function tagOpen(code) {
+ if (code === 45 || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ return tagOpen
+ }
+
+ if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {
+ return tagOpenBetween(code)
+ }
+
+ return nok(code)
+ }
+
+ function tagOpenBetween(code) {
+ if (code === 47) {
+ effects.consume(code)
+ return end
+ }
+
+ if (code === 58 || code === 95 || asciiAlpha(code)) {
+ effects.consume(code)
+ return tagOpenAttributeName
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenBetween
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenBetween
+ }
+
+ return end(code)
+ }
+
+ function tagOpenAttributeName(code) {
+ if (
+ code === 45 ||
+ code === 46 ||
+ code === 58 ||
+ code === 95 ||
+ asciiAlphanumeric(code)
+ ) {
+ effects.consume(code)
+ return tagOpenAttributeName
+ }
+
+ return tagOpenAttributeNameAfter(code)
+ }
+
+ function tagOpenAttributeNameAfter(code) {
+ if (code === 61) {
+ effects.consume(code)
+ return tagOpenAttributeValueBefore
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeNameAfter
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenAttributeNameAfter
+ }
+
+ return tagOpenBetween(code)
+ }
+
+ function tagOpenAttributeValueBefore(code) {
+ if (
+ code === null ||
+ code === 60 ||
+ code === 61 ||
+ code === 62 ||
+ code === 96
+ ) {
+ return nok(code)
+ }
+
+ if (code === 34 || code === 39) {
+ effects.consume(code)
+ marker = code
+ return tagOpenAttributeValueQuoted
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeValueBefore
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenAttributeValueBefore
+ }
+
+ effects.consume(code)
+ marker = undefined
+ return tagOpenAttributeValueUnquoted
+ }
+
+ function tagOpenAttributeValueQuoted(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return tagOpenAttributeValueQuotedAfter
+ }
+
+ if (code === null) {
+ return nok(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeValueQuoted
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return tagOpenAttributeValueQuoted
+ }
+
+ function tagOpenAttributeValueQuotedAfter(code) {
+ if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {
+ return tagOpenBetween(code)
+ }
+
+ return nok(code)
+ }
+
+ function tagOpenAttributeValueUnquoted(code) {
+ if (
+ code === null ||
+ code === 34 ||
+ code === 39 ||
+ code === 60 ||
+ code === 61 ||
+ code === 96
+ ) {
+ return nok(code)
+ }
+
+ if (code === 62 || markdownLineEndingOrSpace(code)) {
+ return tagOpenBetween(code)
+ }
+
+ effects.consume(code)
+ return tagOpenAttributeValueUnquoted
+ } // We can’t have blank lines in content, so no need to worry about empty
+ // tokens.
+
+ function atLineEnding(code) {
+ effects.exit('htmlTextData')
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return factorySpace(
+ effects,
+ afterPrefix,
+ 'linePrefix',
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4
+ )
+ }
+
+ function afterPrefix(code) {
+ effects.enter('htmlTextData')
+ return returnState(code)
+ }
+
+ function end(code) {
+ if (code === 62) {
+ effects.consume(code)
+ effects.exit('htmlTextData')
+ effects.exit('htmlText')
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = htmlText
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-end.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-end.js
new file mode 100644
index 0000000000..9e8ffce8c8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-end.js
@@ -0,0 +1,330 @@
+'use strict'
+
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var chunkedPush = require('../util/chunked-push.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var normalizeIdentifier = require('../util/normalize-identifier.js')
+var resolveAll = require('../util/resolve-all.js')
+var shallow = require('../util/shallow.js')
+var factoryDestination = require('./factory-destination.js')
+var factoryLabel = require('./factory-label.js')
+var factoryTitle = require('./factory-title.js')
+var factoryWhitespace = require('./factory-whitespace.js')
+
+var labelEnd = {
+ name: 'labelEnd',
+ tokenize: tokenizeLabelEnd,
+ resolveTo: resolveToLabelEnd,
+ resolveAll: resolveAllLabelEnd
+}
+var resourceConstruct = {
+ tokenize: tokenizeResource
+}
+var fullReferenceConstruct = {
+ tokenize: tokenizeFullReference
+}
+var collapsedReferenceConstruct = {
+ tokenize: tokenizeCollapsedReference
+}
+
+function resolveAllLabelEnd(events) {
+ var index = -1
+ var token
+
+ while (++index < events.length) {
+ token = events[index][1]
+
+ if (
+ !token._used &&
+ (token.type === 'labelImage' ||
+ token.type === 'labelLink' ||
+ token.type === 'labelEnd')
+ ) {
+ // Remove the marker.
+ events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)
+ token.type = 'data'
+ index++
+ }
+ }
+
+ return events
+}
+
+function resolveToLabelEnd(events, context) {
+ var index = events.length
+ var offset = 0
+ var group
+ var label
+ var text
+ var token
+ var open
+ var close
+ var media // Find an opening.
+
+ while (index--) {
+ token = events[index][1]
+
+ if (open) {
+ // If we see another link, or inactive link label, we’ve been here before.
+ if (
+ token.type === 'link' ||
+ (token.type === 'labelLink' && token._inactive)
+ ) {
+ break
+ } // Mark other link openings as inactive, as we can’t have links in
+ // links.
+
+ if (events[index][0] === 'enter' && token.type === 'labelLink') {
+ token._inactive = true
+ }
+ } else if (close) {
+ if (
+ events[index][0] === 'enter' &&
+ (token.type === 'labelImage' || token.type === 'labelLink') &&
+ !token._balanced
+ ) {
+ open = index
+
+ if (token.type !== 'labelLink') {
+ offset = 2
+ break
+ }
+ }
+ } else if (token.type === 'labelEnd') {
+ close = index
+ }
+ }
+
+ group = {
+ type: events[open][1].type === 'labelLink' ? 'link' : 'image',
+ start: shallow(events[open][1].start),
+ end: shallow(events[events.length - 1][1].end)
+ }
+ label = {
+ type: 'label',
+ start: shallow(events[open][1].start),
+ end: shallow(events[close][1].end)
+ }
+ text = {
+ type: 'labelText',
+ start: shallow(events[open + offset + 2][1].end),
+ end: shallow(events[close - 2][1].start)
+ }
+ media = [
+ ['enter', group, context],
+ ['enter', label, context]
+ ] // Opening marker.
+
+ media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.
+
+ media = chunkedPush(media, [['enter', text, context]]) // Between.
+
+ media = chunkedPush(
+ media,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + offset + 4, close - 3),
+ context
+ )
+ ) // Text close, marker close, label close.
+
+ media = chunkedPush(media, [
+ ['exit', text, context],
+ events[close - 2],
+ events[close - 1],
+ ['exit', label, context]
+ ]) // Reference, resource, or so.
+
+ media = chunkedPush(media, events.slice(close + 1)) // Media close.
+
+ media = chunkedPush(media, [['exit', group, context]])
+ chunkedSplice(events, open, events.length, media)
+ return events
+}
+
+function tokenizeLabelEnd(effects, ok, nok) {
+ var self = this
+ var index = self.events.length
+ var labelStart
+ var defined // Find an opening.
+
+ while (index--) {
+ if (
+ (self.events[index][1].type === 'labelImage' ||
+ self.events[index][1].type === 'labelLink') &&
+ !self.events[index][1]._balanced
+ ) {
+ labelStart = self.events[index][1]
+ break
+ }
+ }
+
+ return start
+
+ function start(code) {
+ if (!labelStart) {
+ return nok(code)
+ } // It’s a balanced bracket, but contains a link.
+
+ if (labelStart._inactive) return balanced(code)
+ defined =
+ self.parser.defined.indexOf(
+ normalizeIdentifier(
+ self.sliceSerialize({
+ start: labelStart.end,
+ end: self.now()
+ })
+ )
+ ) > -1
+ effects.enter('labelEnd')
+ effects.enter('labelMarker')
+ effects.consume(code)
+ effects.exit('labelMarker')
+ effects.exit('labelEnd')
+ return afterLabelEnd
+ }
+
+ function afterLabelEnd(code) {
+ // Resource: `[asd](fgh)`.
+ if (code === 40) {
+ return effects.attempt(
+ resourceConstruct,
+ ok,
+ defined ? ok : balanced
+ )(code)
+ } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?
+
+ if (code === 91) {
+ return effects.attempt(
+ fullReferenceConstruct,
+ ok,
+ defined
+ ? effects.attempt(collapsedReferenceConstruct, ok, balanced)
+ : balanced
+ )(code)
+ } // Shortcut reference: `[asd]`?
+
+ return defined ? ok(code) : balanced(code)
+ }
+
+ function balanced(code) {
+ labelStart._balanced = true
+ return nok(code)
+ }
+}
+
+function tokenizeResource(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ effects.enter('resource')
+ effects.enter('resourceMarker')
+ effects.consume(code)
+ effects.exit('resourceMarker')
+ return factoryWhitespace(effects, open)
+ }
+
+ function open(code) {
+ if (code === 41) {
+ return end(code)
+ }
+
+ return factoryDestination(
+ effects,
+ destinationAfter,
+ nok,
+ 'resourceDestination',
+ 'resourceDestinationLiteral',
+ 'resourceDestinationLiteralMarker',
+ 'resourceDestinationRaw',
+ 'resourceDestinationString',
+ 3
+ )(code)
+ }
+
+ function destinationAfter(code) {
+ return markdownLineEndingOrSpace(code)
+ ? factoryWhitespace(effects, between)(code)
+ : end(code)
+ }
+
+ function between(code) {
+ if (code === 34 || code === 39 || code === 40) {
+ return factoryTitle(
+ effects,
+ factoryWhitespace(effects, end),
+ nok,
+ 'resourceTitle',
+ 'resourceTitleMarker',
+ 'resourceTitleString'
+ )(code)
+ }
+
+ return end(code)
+ }
+
+ function end(code) {
+ if (code === 41) {
+ effects.enter('resourceMarker')
+ effects.consume(code)
+ effects.exit('resourceMarker')
+ effects.exit('resource')
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+function tokenizeFullReference(effects, ok, nok) {
+ var self = this
+ return start
+
+ function start(code) {
+ return factoryLabel.call(
+ self,
+ effects,
+ afterLabel,
+ nok,
+ 'reference',
+ 'referenceMarker',
+ 'referenceString'
+ )(code)
+ }
+
+ function afterLabel(code) {
+ return self.parser.defined.indexOf(
+ normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+ ) < 0
+ ? nok(code)
+ : ok(code)
+ }
+}
+
+function tokenizeCollapsedReference(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ effects.enter('reference')
+ effects.enter('referenceMarker')
+ effects.consume(code)
+ effects.exit('referenceMarker')
+ return open
+ }
+
+ function open(code) {
+ if (code === 93) {
+ effects.enter('referenceMarker')
+ effects.consume(code)
+ effects.exit('referenceMarker')
+ effects.exit('reference')
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = labelEnd
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-image.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-image.js
new file mode 100644
index 0000000000..90bc3d90dd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-image.js
@@ -0,0 +1,46 @@
+'use strict'
+
+var labelEnd = require('./label-end.js')
+
+var labelStartImage = {
+ name: 'labelStartImage',
+ tokenize: tokenizeLabelStartImage,
+ resolveAll: labelEnd.resolveAll
+}
+
+function tokenizeLabelStartImage(effects, ok, nok) {
+ var self = this
+ return start
+
+ function start(code) {
+ effects.enter('labelImage')
+ effects.enter('labelImageMarker')
+ effects.consume(code)
+ effects.exit('labelImageMarker')
+ return open
+ }
+
+ function open(code) {
+ if (code === 91) {
+ effects.enter('labelMarker')
+ effects.consume(code)
+ effects.exit('labelMarker')
+ effects.exit('labelImage')
+ return after
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ /* c8 ignore next */
+ return code === 94 &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs
+ ? /* c8 ignore next */
+ nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = labelStartImage
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-link.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-link.js
new file mode 100644
index 0000000000..2294205997
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/label-start-link.js
@@ -0,0 +1,35 @@
+'use strict'
+
+var labelEnd = require('./label-end.js')
+
+var labelStartLink = {
+ name: 'labelStartLink',
+ tokenize: tokenizeLabelStartLink,
+ resolveAll: labelEnd.resolveAll
+}
+
+function tokenizeLabelStartLink(effects, ok, nok) {
+ var self = this
+ return start
+
+ function start(code) {
+ effects.enter('labelLink')
+ effects.enter('labelMarker')
+ effects.consume(code)
+ effects.exit('labelMarker')
+ effects.exit('labelLink')
+ return after
+ }
+
+ function after(code) {
+ /* c8 ignore next */
+ return code === 94 &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs
+ ? /* c8 ignore next */
+ nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = labelStartLink
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/line-ending.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/line-ending.js
new file mode 100644
index 0000000000..d381f6dc89
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/line-ending.js
@@ -0,0 +1,21 @@
+'use strict'
+
+var factorySpace = require('./factory-space.js')
+
+var lineEnding = {
+ name: 'lineEnding',
+ tokenize: tokenizeLineEnding
+}
+
+function tokenizeLineEnding(effects, ok) {
+ return start
+
+ function start(code) {
+ effects.enter('lineEnding')
+ effects.consume(code)
+ effects.exit('lineEnding')
+ return factorySpace(effects, ok, 'linePrefix')
+ }
+}
+
+module.exports = lineEnding
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/list.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/list.js
new file mode 100644
index 0000000000..21f14c37b2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/list.js
@@ -0,0 +1,214 @@
+'use strict'
+
+var asciiDigit = require('../character/ascii-digit.js')
+var markdownSpace = require('../character/markdown-space.js')
+var prefixSize = require('../util/prefix-size.js')
+var sizeChunks = require('../util/size-chunks.js')
+var factorySpace = require('./factory-space.js')
+var partialBlankLine = require('./partial-blank-line.js')
+var thematicBreak = require('./thematic-break.js')
+
+var list = {
+ name: 'list',
+ tokenize: tokenizeListStart,
+ continuation: {
+ tokenize: tokenizeListContinuation
+ },
+ exit: tokenizeListEnd
+}
+var listItemPrefixWhitespaceConstruct = {
+ tokenize: tokenizeListItemPrefixWhitespace,
+ partial: true
+}
+var indentConstruct = {
+ tokenize: tokenizeIndent,
+ partial: true
+}
+
+function tokenizeListStart(effects, ok, nok) {
+ var self = this
+ var initialSize = prefixSize(self.events, 'linePrefix')
+ var size = 0
+ return start
+
+ function start(code) {
+ var kind =
+ self.containerState.type ||
+ (code === 42 || code === 43 || code === 45
+ ? 'listUnordered'
+ : 'listOrdered')
+
+ if (
+ kind === 'listUnordered'
+ ? !self.containerState.marker || code === self.containerState.marker
+ : asciiDigit(code)
+ ) {
+ if (!self.containerState.type) {
+ self.containerState.type = kind
+ effects.enter(kind, {
+ _container: true
+ })
+ }
+
+ if (kind === 'listUnordered') {
+ effects.enter('listItemPrefix')
+ return code === 42 || code === 45
+ ? effects.check(thematicBreak, nok, atMarker)(code)
+ : atMarker(code)
+ }
+
+ if (!self.interrupt || code === 49) {
+ effects.enter('listItemPrefix')
+ effects.enter('listItemValue')
+ return inside(code)
+ }
+ }
+
+ return nok(code)
+ }
+
+ function inside(code) {
+ if (asciiDigit(code) && ++size < 10) {
+ effects.consume(code)
+ return inside
+ }
+
+ if (
+ (!self.interrupt || size < 2) &&
+ (self.containerState.marker
+ ? code === self.containerState.marker
+ : code === 41 || code === 46)
+ ) {
+ effects.exit('listItemValue')
+ return atMarker(code)
+ }
+
+ return nok(code)
+ }
+
+ function atMarker(code) {
+ effects.enter('listItemMarker')
+ effects.consume(code)
+ effects.exit('listItemMarker')
+ self.containerState.marker = self.containerState.marker || code
+ return effects.check(
+ partialBlankLine, // Can’t be empty when interrupting.
+ self.interrupt ? nok : onBlank,
+ effects.attempt(
+ listItemPrefixWhitespaceConstruct,
+ endOfPrefix,
+ otherPrefix
+ )
+ )
+ }
+
+ function onBlank(code) {
+ self.containerState.initialBlankLine = true
+ initialSize++
+ return endOfPrefix(code)
+ }
+
+ function otherPrefix(code) {
+ if (markdownSpace(code)) {
+ effects.enter('listItemPrefixWhitespace')
+ effects.consume(code)
+ effects.exit('listItemPrefixWhitespace')
+ return endOfPrefix
+ }
+
+ return nok(code)
+ }
+
+ function endOfPrefix(code) {
+ self.containerState.size =
+ initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))
+ return ok(code)
+ }
+}
+
+function tokenizeListContinuation(effects, ok, nok) {
+ var self = this
+ self.containerState._closeFlow = undefined
+ return effects.check(partialBlankLine, onBlank, notBlank)
+
+ function onBlank(code) {
+ self.containerState.furtherBlankLines =
+ self.containerState.furtherBlankLines ||
+ self.containerState.initialBlankLine // We have a blank line.
+ // Still, try to consume at most the items size.
+
+ return factorySpace(
+ effects,
+ ok,
+ 'listItemIndent',
+ self.containerState.size + 1
+ )(code)
+ }
+
+ function notBlank(code) {
+ if (self.containerState.furtherBlankLines || !markdownSpace(code)) {
+ self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined
+ return notInCurrentItem(code)
+ }
+
+ self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined
+ return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)
+ }
+
+ function notInCurrentItem(code) {
+ // While we do continue, we signal that the flow should be closed.
+ self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.
+
+ self.interrupt = undefined
+ return factorySpace(
+ effects,
+ effects.attempt(list, ok, nok),
+ 'linePrefix',
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4
+ )(code)
+ }
+}
+
+function tokenizeIndent(effects, ok, nok) {
+ var self = this
+ return factorySpace(
+ effects,
+ afterPrefix,
+ 'listItemIndent',
+ self.containerState.size + 1
+ )
+
+ function afterPrefix(code) {
+ return prefixSize(self.events, 'listItemIndent') ===
+ self.containerState.size
+ ? ok(code)
+ : nok(code)
+ }
+}
+
+function tokenizeListEnd(effects) {
+ effects.exit(this.containerState.type)
+}
+
+function tokenizeListItemPrefixWhitespace(effects, ok, nok) {
+ var self = this
+ return factorySpace(
+ effects,
+ afterPrefix,
+ 'listItemPrefixWhitespace',
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : 4 + 1
+ )
+
+ function afterPrefix(code) {
+ return markdownSpace(code) ||
+ !prefixSize(self.events, 'listItemPrefixWhitespace')
+ ? nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = list
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/partial-blank-line.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/partial-blank-line.js
new file mode 100644
index 0000000000..b5207df206
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/partial-blank-line.js
@@ -0,0 +1,19 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var factorySpace = require('./factory-space.js')
+
+var partialBlankLine = {
+ tokenize: tokenizePartialBlankLine,
+ partial: true
+}
+
+function tokenizePartialBlankLine(effects, ok, nok) {
+ return factorySpace(effects, afterWhitespace, 'linePrefix')
+
+ function afterWhitespace(code) {
+ return code === null || markdownLineEnding(code) ? ok(code) : nok(code)
+ }
+}
+
+module.exports = partialBlankLine
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/setext-underline.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/setext-underline.js
new file mode 100644
index 0000000000..4f2770707c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/setext-underline.js
@@ -0,0 +1,117 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var shallow = require('../util/shallow.js')
+var factorySpace = require('./factory-space.js')
+
+var setextUnderline = {
+ name: 'setextUnderline',
+ tokenize: tokenizeSetextUnderline,
+ resolveTo: resolveToSetextUnderline
+}
+
+function resolveToSetextUnderline(events, context) {
+ var index = events.length
+ var content
+ var text
+ var definition
+ var heading // Find the opening of the content.
+ // It’ll always exist: we don’t tokenize if it isn’t there.
+
+ while (index--) {
+ if (events[index][0] === 'enter') {
+ if (events[index][1].type === 'content') {
+ content = index
+ break
+ }
+
+ if (events[index][1].type === 'paragraph') {
+ text = index
+ }
+ } // Exit
+ else {
+ if (events[index][1].type === 'content') {
+ // Remove the content end (if needed we’ll add it later)
+ events.splice(index, 1)
+ }
+
+ if (!definition && events[index][1].type === 'definition') {
+ definition = index
+ }
+ }
+ }
+
+ heading = {
+ type: 'setextHeading',
+ start: shallow(events[text][1].start),
+ end: shallow(events[events.length - 1][1].end)
+ } // Change the paragraph to setext heading text.
+
+ events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,
+ // but we need move it.
+
+ if (definition) {
+ events.splice(text, 0, ['enter', heading, context])
+ events.splice(definition + 1, 0, ['exit', events[content][1], context])
+ events[content][1].end = shallow(events[definition][1].end)
+ } else {
+ events[content][1] = heading
+ } // Add the heading exit at the end.
+
+ events.push(['exit', heading, context])
+ return events
+}
+
+function tokenizeSetextUnderline(effects, ok, nok) {
+ var self = this
+ var index = self.events.length
+ var marker
+ var paragraph // Find an opening.
+
+ while (index--) {
+ // Skip enter/exit of line ending, line prefix, and content.
+ // We can now either have a definition or a paragraph.
+ if (
+ self.events[index][1].type !== 'lineEnding' &&
+ self.events[index][1].type !== 'linePrefix' &&
+ self.events[index][1].type !== 'content'
+ ) {
+ paragraph = self.events[index][1].type === 'paragraph'
+ break
+ }
+ }
+
+ return start
+
+ function start(code) {
+ if (!self.lazy && (self.interrupt || paragraph)) {
+ effects.enter('setextHeadingLine')
+ effects.enter('setextHeadingLineSequence')
+ marker = code
+ return closingSequence(code)
+ }
+
+ return nok(code)
+ }
+
+ function closingSequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return closingSequence
+ }
+
+ effects.exit('setextHeadingLineSequence')
+ return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)
+ }
+
+ function closingSequenceEnd(code) {
+ if (code === null || markdownLineEnding(code)) {
+ effects.exit('setextHeadingLine')
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = setextUnderline
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/thematic-break.js b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/thematic-break.js
new file mode 100644
index 0000000000..3abbe554e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/tokenize/thematic-break.js
@@ -0,0 +1,53 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownSpace = require('../character/markdown-space.js')
+var factorySpace = require('./factory-space.js')
+
+var thematicBreak = {
+ name: 'thematicBreak',
+ tokenize: tokenizeThematicBreak
+}
+
+function tokenizeThematicBreak(effects, ok, nok) {
+ var size = 0
+ var marker
+ return start
+
+ function start(code) {
+ effects.enter('thematicBreak')
+ marker = code
+ return atBreak(code)
+ }
+
+ function atBreak(code) {
+ if (code === marker) {
+ effects.enter('thematicBreakSequence')
+ return sequence(code)
+ }
+
+ if (markdownSpace(code)) {
+ return factorySpace(effects, atBreak, 'whitespace')(code)
+ }
+
+ if (size < 3 || (code !== null && !markdownLineEnding(code))) {
+ return nok(code)
+ }
+
+ effects.exit('thematicBreak')
+ return ok(code)
+ }
+
+ function sequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ size++
+ return sequence
+ }
+
+ effects.exit('thematicBreakSequence')
+ return atBreak(code)
+ }
+}
+
+module.exports = thematicBreak
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-push.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-push.js
new file mode 100644
index 0000000000..7768977995
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-push.js
@@ -0,0 +1,14 @@
+'use strict'
+
+var chunkedSplice = require('./chunked-splice.js')
+
+function chunkedPush(list, items) {
+ if (list.length) {
+ chunkedSplice(list, list.length, 0, items)
+ return list
+ }
+
+ return items
+}
+
+module.exports = chunkedPush
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-splice.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-splice.js
new file mode 100644
index 0000000000..99525d76a2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/chunked-splice.js
@@ -0,0 +1,38 @@
+'use strict'
+
+var splice = require('../constant/splice.js')
+
+// causes a stack overflow in V8 when trying to insert 100k items for instance.
+
+function chunkedSplice(list, start, remove, items) {
+ var end = list.length
+ var chunkStart = 0
+ var parameters // Make start between zero and `end` (included).
+
+ if (start < 0) {
+ start = -start > end ? 0 : end + start
+ } else {
+ start = start > end ? end : start
+ }
+
+ remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.
+
+ if (items.length < 10000) {
+ parameters = Array.from(items)
+ parameters.unshift(start, remove)
+ splice.apply(list, parameters)
+ } else {
+ // Delete `remove` items starting from `start`
+ if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.
+
+ while (chunkStart < items.length) {
+ parameters = items.slice(chunkStart, chunkStart + 10000)
+ parameters.unshift(start, 0)
+ splice.apply(list, parameters)
+ chunkStart += 10000
+ start += 10000
+ }
+ }
+}
+
+module.exports = chunkedSplice
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/classify-character.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/classify-character.js
new file mode 100644
index 0000000000..9d3b21b96a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/classify-character.js
@@ -0,0 +1,25 @@
+'use strict'
+
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var unicodePunctuation = require('../character/unicode-punctuation.js')
+var unicodeWhitespace = require('../character/unicode-whitespace.js')
+
+// Classify whether a character is unicode whitespace, unicode punctuation, or
+// anything else.
+// Used for attention (emphasis, strong), whose sequences can open or close
+// based on the class of surrounding characters.
+function classifyCharacter(code) {
+ if (
+ code === null ||
+ markdownLineEndingOrSpace(code) ||
+ unicodeWhitespace(code)
+ ) {
+ return 1
+ }
+
+ if (unicodePunctuation(code)) {
+ return 2
+ }
+}
+
+module.exports = classifyCharacter
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/combine-extensions.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/combine-extensions.js
new file mode 100644
index 0000000000..a6f8f347b8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/combine-extensions.js
@@ -0,0 +1,49 @@
+'use strict'
+
+var hasOwnProperty = require('../constant/has-own-property.js')
+var chunkedSplice = require('./chunked-splice.js')
+var miniflat = require('./miniflat.js')
+
+function combineExtensions(extensions) {
+ var all = {}
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(all, extensions[index])
+ }
+
+ return all
+}
+
+function extension(all, extension) {
+ var hook
+ var left
+ var right
+ var code
+
+ for (hook in extension) {
+ left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})
+ right = extension[hook]
+
+ for (code in right) {
+ left[code] = constructs(
+ miniflat(right[code]),
+ hasOwnProperty.call(left, code) ? left[code] : []
+ )
+ }
+ }
+}
+
+function constructs(list, existing) {
+ var index = -1
+ var before = []
+
+ while (++index < list.length) {
+ ;(list[index].add === 'after' ? existing : before).push(list[index])
+ }
+
+ chunkedSplice(existing, 0, 0, before)
+ return existing
+}
+
+module.exports = combineExtensions
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/combine-html-extensions.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/combine-html-extensions.js
new file mode 100644
index 0000000000..c54258783a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/combine-html-extensions.js
@@ -0,0 +1,34 @@
+'use strict'
+
+var hasOwnProperty = require('../constant/has-own-property.js')
+
+function combineHtmlExtensions(extensions) {
+ var handlers = {}
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(handlers, extensions[index])
+ }
+
+ return handlers
+}
+
+function extension(handlers, extension) {
+ var hook
+ var left
+ var right
+ var type
+
+ for (hook in extension) {
+ left = hasOwnProperty.call(handlers, hook)
+ ? handlers[hook]
+ : (handlers[hook] = {})
+ right = extension[hook]
+
+ for (type in right) {
+ left[type] = right[type]
+ }
+ }
+}
+
+module.exports = combineHtmlExtensions
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/create-tokenizer.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/create-tokenizer.js
new file mode 100644
index 0000000000..9051658c83
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/create-tokenizer.js
@@ -0,0 +1,316 @@
+'use strict'
+
+var assign = require('../constant/assign.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var chunkedPush = require('./chunked-push.js')
+var chunkedSplice = require('./chunked-splice.js')
+var miniflat = require('./miniflat.js')
+var resolveAll = require('./resolve-all.js')
+var serializeChunks = require('./serialize-chunks.js')
+var shallow = require('./shallow.js')
+var sliceChunks = require('./slice-chunks.js')
+
+// Create a tokenizer.
+// Tokenizers deal with one type of data (e.g., containers, flow, text).
+// The parser is the object dealing with it all.
+// `initialize` works like other constructs, except that only its `tokenize`
+// function is used, in which case it doesn’t receive an `ok` or `nok`.
+// `from` can be given to set the point before the first character, although
+// when further lines are indented, they must be set with `defineSkip`.
+function createTokenizer(parser, initialize, from) {
+ var point = from
+ ? shallow(from)
+ : {
+ line: 1,
+ column: 1,
+ offset: 0
+ }
+ var columnStart = {}
+ var resolveAllConstructs = []
+ var chunks = []
+ var stack = []
+
+ var effects = {
+ consume: consume,
+ enter: enter,
+ exit: exit,
+ attempt: constructFactory(onsuccessfulconstruct),
+ check: constructFactory(onsuccessfulcheck),
+ interrupt: constructFactory(onsuccessfulcheck, {
+ interrupt: true
+ }),
+ lazy: constructFactory(onsuccessfulcheck, {
+ lazy: true
+ })
+ } // State and tools for resolving and serializing.
+
+ var context = {
+ previous: null,
+ events: [],
+ parser: parser,
+ sliceStream: sliceStream,
+ sliceSerialize: sliceSerialize,
+ now: now,
+ defineSkip: skip,
+ write: write
+ } // The state function.
+
+ var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.
+
+ if (initialize.resolveAll) {
+ resolveAllConstructs.push(initialize)
+ } // Store where we are in the input stream.
+
+ point._index = 0
+ point._bufferIndex = -1
+ return context
+
+ function write(slice) {
+ chunks = chunkedPush(chunks, slice)
+ main() // Exit if we’re not done, resolve might change stuff.
+
+ if (chunks[chunks.length - 1] !== null) {
+ return []
+ }
+
+ addResult(initialize, 0) // Otherwise, resolve, and exit.
+
+ context.events = resolveAll(resolveAllConstructs, context.events, context)
+ return context.events
+ } //
+ // Tools.
+ //
+
+ function sliceSerialize(token) {
+ return serializeChunks(sliceStream(token))
+ }
+
+ function sliceStream(token) {
+ return sliceChunks(chunks, token)
+ }
+
+ function now() {
+ return shallow(point)
+ }
+
+ function skip(value) {
+ columnStart[value.line] = value.column
+ accountForPotentialSkip()
+ } //
+ // State management.
+ //
+ // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by
+ // `consume`).
+ // Here is where we walk through the chunks, which either include strings of
+ // several characters, or numerical character codes.
+ // The reason to do this in a loop instead of a call is so the stack can
+ // drain.
+
+ function main() {
+ var chunkIndex
+ var chunk
+
+ while (point._index < chunks.length) {
+ chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.
+
+ if (typeof chunk === 'string') {
+ chunkIndex = point._index
+
+ if (point._bufferIndex < 0) {
+ point._bufferIndex = 0
+ }
+
+ while (
+ point._index === chunkIndex &&
+ point._bufferIndex < chunk.length
+ ) {
+ go(chunk.charCodeAt(point._bufferIndex))
+ }
+ } else {
+ go(chunk)
+ }
+ }
+ } // Deal with one code.
+
+ function go(code) {
+ state = state(code)
+ } // Move a character forward.
+
+ function consume(code) {
+ if (markdownLineEnding(code)) {
+ point.line++
+ point.column = 1
+ point.offset += code === -3 ? 2 : 1
+ accountForPotentialSkip()
+ } else if (code !== -1) {
+ point.column++
+ point.offset++
+ } // Not in a string chunk.
+
+ if (point._bufferIndex < 0) {
+ point._index++
+ } else {
+ point._bufferIndex++ // At end of string chunk.
+
+ if (point._bufferIndex === chunks[point._index].length) {
+ point._bufferIndex = -1
+ point._index++
+ }
+ } // Expose the previous character.
+
+ context.previous = code // Mark as consumed.
+ } // Start a token.
+
+ function enter(type, fields) {
+ var token = fields || {}
+ token.type = type
+ token.start = now()
+ context.events.push(['enter', token, context])
+ stack.push(token)
+ return token
+ } // Stop a token.
+
+ function exit(type) {
+ var token = stack.pop()
+ token.end = now()
+ context.events.push(['exit', token, context])
+ return token
+ } // Use results.
+
+ function onsuccessfulconstruct(construct, info) {
+ addResult(construct, info.from)
+ } // Discard results.
+
+ function onsuccessfulcheck(construct, info) {
+ info.restore()
+ } // Factory to attempt/check/interrupt.
+
+ function constructFactory(onreturn, fields) {
+ return hook // Handle either an object mapping codes to constructs, a list of
+ // constructs, or a single construct.
+
+ function hook(constructs, returnState, bogusState) {
+ var listOfConstructs
+ var constructIndex
+ var currentConstruct
+ var info
+ return constructs.tokenize || 'length' in constructs
+ ? handleListOfConstructs(miniflat(constructs))
+ : handleMapOfConstructs
+
+ function handleMapOfConstructs(code) {
+ if (code in constructs || null in constructs) {
+ return handleListOfConstructs(
+ constructs.null
+ ? /* c8 ignore next */
+ miniflat(constructs[code]).concat(miniflat(constructs.null))
+ : constructs[code]
+ )(code)
+ }
+
+ return bogusState(code)
+ }
+
+ function handleListOfConstructs(list) {
+ listOfConstructs = list
+ constructIndex = 0
+ return handleConstruct(list[constructIndex])
+ }
+
+ function handleConstruct(construct) {
+ return start
+
+ function start(code) {
+ // To do: not nede to store if there is no bogus state, probably?
+ // Currently doesn’t work because `inspect` in document does a check
+ // w/o a bogus, which doesn’t make sense. But it does seem to help perf
+ // by not storing.
+ info = store()
+ currentConstruct = construct
+
+ if (!construct.partial) {
+ context.currentConstruct = construct
+ }
+
+ if (
+ construct.name &&
+ context.parser.constructs.disable.null.indexOf(construct.name) > -1
+ ) {
+ return nok()
+ }
+
+ return construct.tokenize.call(
+ fields ? assign({}, context, fields) : context,
+ effects,
+ ok,
+ nok
+ )(code)
+ }
+ }
+
+ function ok(code) {
+ onreturn(currentConstruct, info)
+ return returnState
+ }
+
+ function nok(code) {
+ info.restore()
+
+ if (++constructIndex < listOfConstructs.length) {
+ return handleConstruct(listOfConstructs[constructIndex])
+ }
+
+ return bogusState
+ }
+ }
+ }
+
+ function addResult(construct, from) {
+ if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {
+ resolveAllConstructs.push(construct)
+ }
+
+ if (construct.resolve) {
+ chunkedSplice(
+ context.events,
+ from,
+ context.events.length - from,
+ construct.resolve(context.events.slice(from), context)
+ )
+ }
+
+ if (construct.resolveTo) {
+ context.events = construct.resolveTo(context.events, context)
+ }
+ }
+
+ function store() {
+ var startPoint = now()
+ var startPrevious = context.previous
+ var startCurrentConstruct = context.currentConstruct
+ var startEventsIndex = context.events.length
+ var startStack = Array.from(stack)
+ return {
+ restore: restore,
+ from: startEventsIndex
+ }
+
+ function restore() {
+ point = startPoint
+ context.previous = startPrevious
+ context.currentConstruct = startCurrentConstruct
+ context.events.length = startEventsIndex
+ stack = startStack
+ accountForPotentialSkip()
+ }
+ }
+
+ function accountForPotentialSkip() {
+ if (point.line in columnStart && point.column < 2) {
+ point.column = columnStart[point.line]
+ point.offset += columnStart[point.line] - 1
+ }
+ }
+}
+
+module.exports = createTokenizer
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/miniflat.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/miniflat.js
new file mode 100644
index 0000000000..39c5dd4f64
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/miniflat.js
@@ -0,0 +1,11 @@
+'use strict'
+
+function miniflat(value) {
+ return value === null || value === undefined
+ ? []
+ : 'length' in value
+ ? value
+ : [value]
+}
+
+module.exports = miniflat
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/move-point.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/move-point.js
new file mode 100644
index 0000000000..63c69a2b41
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/move-point.js
@@ -0,0 +1,12 @@
+'use strict'
+
+// chunks (replacement characters, tabs, or line endings).
+
+function movePoint(point, offset) {
+ point.column += offset
+ point.offset += offset
+ point._bufferIndex += offset
+ return point
+}
+
+module.exports = movePoint
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-identifier.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-identifier.js
new file mode 100644
index 0000000000..f063213454
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-identifier.js
@@ -0,0 +1,18 @@
+'use strict'
+
+function normalizeIdentifier(value) {
+ return (
+ value // Collapse Markdown whitespace.
+ .replace(/[\t\n\r ]+/g, ' ') // Trim.
+ .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase
+ // counterpart is uppercased will result in a different uppercase
+ // character.
+ // Hence, to get that form, we perform both lower- and uppercase.
+ // Upper case makes sure keys will not interact with default prototypal
+ // methods: no object method is uppercase.
+ .toLowerCase()
+ .toUpperCase()
+ )
+}
+
+module.exports = normalizeIdentifier
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-uri.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-uri.js
new file mode 100644
index 0000000000..8a19ace277
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/normalize-uri.js
@@ -0,0 +1,62 @@
+'use strict'
+
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var fromCharCode = require('../constant/from-char-code.js')
+
+// encoded sequences.
+
+function normalizeUri(value) {
+ var index = -1
+ var result = []
+ var start = 0
+ var skip = 0
+ var code
+ var next
+ var replace
+
+ while (++index < value.length) {
+ code = value.charCodeAt(index) // A correct percent encoded value.
+
+ if (
+ code === 37 &&
+ asciiAlphanumeric(value.charCodeAt(index + 1)) &&
+ asciiAlphanumeric(value.charCodeAt(index + 2))
+ ) {
+ skip = 2
+ } // ASCII.
+ else if (code < 128) {
+ if (!/[!#$&-;=?-Z_a-z~]/.test(fromCharCode(code))) {
+ replace = fromCharCode(code)
+ }
+ } // Astral.
+ else if (code > 55295 && code < 57344) {
+ next = value.charCodeAt(index + 1) // A correct surrogate pair.
+
+ if (code < 56320 && next > 56319 && next < 57344) {
+ replace = fromCharCode(code, next)
+ skip = 1
+ } // Lone surrogate.
+ else {
+ replace = '\uFFFD'
+ }
+ } // Unicode.
+ else {
+ replace = fromCharCode(code)
+ }
+
+ if (replace) {
+ result.push(value.slice(start, index), encodeURIComponent(replace))
+ start = index + skip + 1
+ replace = undefined
+ }
+
+ if (skip) {
+ index += skip
+ skip = 0
+ }
+ }
+
+ return result.join('') + value.slice(start)
+}
+
+module.exports = normalizeUri
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/prefix-size.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/prefix-size.js
new file mode 100644
index 0000000000..a560e3e83a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/prefix-size.js
@@ -0,0 +1,11 @@
+'use strict'
+
+var sizeChunks = require('./size-chunks.js')
+
+function prefixSize(events, type) {
+ var tail = events[events.length - 1]
+ if (!tail || tail[1].type !== type) return 0
+ return sizeChunks(tail[2].sliceStream(tail[1]))
+}
+
+module.exports = prefixSize
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/regex-check.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/regex-check.js
new file mode 100644
index 0000000000..b879f444f3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/regex-check.js
@@ -0,0 +1,13 @@
+'use strict'
+
+var fromCharCode = require('../constant/from-char-code.js')
+
+function regexCheck(regex) {
+ return check
+
+ function check(code) {
+ return regex.test(fromCharCode(code))
+ }
+}
+
+module.exports = regexCheck
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/resolve-all.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/resolve-all.js
new file mode 100644
index 0000000000..3e8d76b4a4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/resolve-all.js
@@ -0,0 +1,20 @@
+'use strict'
+
+function resolveAll(constructs, events, context) {
+ var called = []
+ var index = -1
+ var resolve
+
+ while (++index < constructs.length) {
+ resolve = constructs[index].resolveAll
+
+ if (resolve && called.indexOf(resolve) < 0) {
+ events = resolve(events, context)
+ called.push(resolve)
+ }
+ }
+
+ return events
+}
+
+module.exports = resolveAll
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/safe-from-int.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/safe-from-int.js
new file mode 100644
index 0000000000..08dcac944c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/safe-from-int.js
@@ -0,0 +1,26 @@
+'use strict'
+
+var fromCharCode = require('../constant/from-char-code.js')
+
+function safeFromInt(value, base) {
+ var code = parseInt(value, base)
+
+ if (
+ // C0 except for HT, LF, FF, CR, space
+ code < 9 ||
+ code === 11 ||
+ (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.
+ (code > 126 && code < 160) || // Lone high surrogates and low surrogates.
+ (code > 55295 && code < 57344) || // Noncharacters.
+ (code > 64975 && code < 65008) ||
+ (code & 65535) === 65535 ||
+ (code & 65535) === 65534 || // Out of range
+ code > 1114111
+ ) {
+ return '\uFFFD'
+ }
+
+ return fromCharCode(code)
+}
+
+module.exports = safeFromInt
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/serialize-chunks.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/serialize-chunks.js
new file mode 100644
index 0000000000..48d9e24f51
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/serialize-chunks.js
@@ -0,0 +1,40 @@
+'use strict'
+
+var fromCharCode = require('../constant/from-char-code.js')
+
+function serializeChunks(chunks) {
+ var index = -1
+ var result = []
+ var chunk
+ var value
+ var atTab
+
+ while (++index < chunks.length) {
+ chunk = chunks[index]
+
+ if (typeof chunk === 'string') {
+ value = chunk
+ } else if (chunk === -5) {
+ value = '\r'
+ } else if (chunk === -4) {
+ value = '\n'
+ } else if (chunk === -3) {
+ value = '\r' + '\n'
+ } else if (chunk === -2) {
+ value = '\t'
+ } else if (chunk === -1) {
+ if (atTab) continue
+ value = ' '
+ } else {
+ // Currently only replacement character.
+ value = fromCharCode(chunk)
+ }
+
+ atTab = chunk === -2
+ result.push(value)
+ }
+
+ return result.join('')
+}
+
+module.exports = serializeChunks
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/shallow.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/shallow.js
new file mode 100644
index 0000000000..f980ab99e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/shallow.js
@@ -0,0 +1,9 @@
+'use strict'
+
+var assign = require('../constant/assign.js')
+
+function shallow(object) {
+ return assign({}, object)
+}
+
+module.exports = shallow
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/size-chunks.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/size-chunks.js
new file mode 100644
index 0000000000..85bacf0d4f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/size-chunks.js
@@ -0,0 +1,16 @@
+'use strict'
+
+// Counts tabs based on their expanded size, and CR+LF as one character.
+
+function sizeChunks(chunks) {
+ var index = -1
+ var size = 0
+
+ while (++index < chunks.length) {
+ size += typeof chunks[index] === 'string' ? chunks[index].length : 1
+ }
+
+ return size
+}
+
+module.exports = sizeChunks
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/slice-chunks.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/slice-chunks.js
new file mode 100644
index 0000000000..a1ad9289c1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/slice-chunks.js
@@ -0,0 +1,27 @@
+'use strict'
+
+function sliceChunks(chunks, token) {
+ var startIndex = token.start._index
+ var startBufferIndex = token.start._bufferIndex
+ var endIndex = token.end._index
+ var endBufferIndex = token.end._bufferIndex
+ var view
+
+ if (startIndex === endIndex) {
+ view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]
+ } else {
+ view = chunks.slice(startIndex, endIndex)
+
+ if (startBufferIndex > -1) {
+ view[0] = view[0].slice(startBufferIndex)
+ }
+
+ if (endBufferIndex > 0) {
+ view.push(chunks[endIndex].slice(0, endBufferIndex))
+ }
+ }
+
+ return view
+}
+
+module.exports = sliceChunks
diff --git a/tools/node_modules/eslint/node_modules/micromark/dist/util/subtokenize.js b/tools/node_modules/eslint/node_modules/micromark/dist/util/subtokenize.js
new file mode 100644
index 0000000000..dd960c6ee4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/dist/util/subtokenize.js
@@ -0,0 +1,199 @@
+'use strict'
+
+var assign = require('../constant/assign.js')
+var chunkedSplice = require('./chunked-splice.js')
+var shallow = require('./shallow.js')
+
+function subtokenize(events) {
+ var jumps = {}
+ var index = -1
+ var event
+ var lineIndex
+ var otherIndex
+ var otherEvent
+ var parameters
+ var subevents
+ var more
+
+ while (++index < events.length) {
+ while (index in jumps) {
+ index = jumps[index]
+ }
+
+ event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text
+ // is in the first content of a list item.
+
+ if (
+ index &&
+ event[1].type === 'chunkFlow' &&
+ events[index - 1][1].type === 'listItemPrefix'
+ ) {
+ subevents = event[1]._tokenizer.events
+ otherIndex = 0
+
+ if (
+ otherIndex < subevents.length &&
+ subevents[otherIndex][1].type === 'lineEndingBlank'
+ ) {
+ otherIndex += 2
+ }
+
+ if (
+ otherIndex < subevents.length &&
+ subevents[otherIndex][1].type === 'content'
+ ) {
+ while (++otherIndex < subevents.length) {
+ if (subevents[otherIndex][1].type === 'content') {
+ break
+ }
+
+ if (subevents[otherIndex][1].type === 'chunkText') {
+ subevents[otherIndex][1].isInFirstContentOfListItem = true
+ otherIndex++
+ }
+ }
+ }
+ } // Enter.
+
+ if (event[0] === 'enter') {
+ if (event[1].contentType) {
+ assign(jumps, subcontent(events, index))
+ index = jumps[index]
+ more = true
+ }
+ } // Exit.
+ else if (event[1]._container || event[1]._movePreviousLineEndings) {
+ otherIndex = index
+ lineIndex = undefined
+
+ while (otherIndex--) {
+ otherEvent = events[otherIndex]
+
+ if (
+ otherEvent[1].type === 'lineEnding' ||
+ otherEvent[1].type === 'lineEndingBlank'
+ ) {
+ if (otherEvent[0] === 'enter') {
+ if (lineIndex) {
+ events[lineIndex][1].type = 'lineEndingBlank'
+ }
+
+ otherEvent[1].type = 'lineEnding'
+ lineIndex = otherIndex
+ }
+ } else {
+ break
+ }
+ }
+
+ if (lineIndex) {
+ // Fix position.
+ event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.
+
+ parameters = events.slice(lineIndex, index)
+ parameters.unshift(event)
+ chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)
+ }
+ }
+ }
+
+ return !more
+}
+
+function subcontent(events, eventIndex) {
+ var token = events[eventIndex][1]
+ var context = events[eventIndex][2]
+ var startPosition = eventIndex - 1
+ var startPositions = []
+ var tokenizer =
+ token._tokenizer || context.parser[token.contentType](token.start)
+ var childEvents = tokenizer.events
+ var jumps = []
+ var gaps = {}
+ var stream
+ var previous
+ var index
+ var entered
+ var end
+ var adjust // Loop forward through the linked tokens to pass them in order to the
+ // subtokenizer.
+
+ while (token) {
+ // Find the position of the event for this token.
+ while (events[++startPosition][1] !== token) {
+ // Empty.
+ }
+
+ startPositions.push(startPosition)
+
+ if (!token._tokenizer) {
+ stream = context.sliceStream(token)
+
+ if (!token.next) {
+ stream.push(null)
+ }
+
+ if (previous) {
+ tokenizer.defineSkip(token.start)
+ }
+
+ if (token.isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = true
+ }
+
+ tokenizer.write(stream)
+
+ if (token.isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = undefined
+ }
+ } // Unravel the next token.
+
+ previous = token
+ token = token.next
+ } // Now, loop back through all events (and linked tokens), to figure out which
+ // parts belong where.
+
+ token = previous
+ index = childEvents.length
+
+ while (index--) {
+ // Make sure we’ve at least seen something (final eol is part of the last
+ // token).
+ if (childEvents[index][0] === 'enter') {
+ entered = true
+ } else if (
+ // Find a void token that includes a break.
+ entered &&
+ childEvents[index][1].type === childEvents[index - 1][1].type &&
+ childEvents[index][1].start.line !== childEvents[index][1].end.line
+ ) {
+ add(childEvents.slice(index + 1, end))
+ // Help GC.
+ token._tokenizer = token.next = undefined
+ token = token.previous
+ end = index + 1
+ }
+ }
+
+ // Help GC.
+ tokenizer.events = token._tokenizer = token.next = undefined // Do head:
+
+ add(childEvents.slice(0, end))
+ index = -1
+ adjust = 0
+
+ while (++index < jumps.length) {
+ gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]
+ adjust += jumps[index][1] - jumps[index][0] - 1
+ }
+
+ return gaps
+
+ function add(slice) {
+ var start = startPositions.pop()
+ jumps.unshift([start, start + slice.length - 1])
+ chunkedSplice(events, start, 2, slice)
+ }
+}
+
+module.exports = subtokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/index.js b/tools/node_modules/eslint/node_modules/micromark/index.js
new file mode 100644
index 0000000000..bb7c67d973
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/index.js
@@ -0,0 +1,3 @@
+'use strict'
+
+module.exports = require('./buffer.js')
diff --git a/tools/node_modules/eslint/node_modules/micromark/index.mjs b/tools/node_modules/eslint/node_modules/micromark/index.mjs
new file mode 100644
index 0000000000..2e841cc14a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/index.mjs
@@ -0,0 +1 @@
+export {default} from './buffer.mjs'
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.js
new file mode 100644
index 0000000000..4e5b20d20b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiAlpha = regexCheck(/[A-Za-z]/)
+
+module.exports = asciiAlpha
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.mjs
new file mode 100644
index 0000000000..f6f3aaba74
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alpha.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/[A-Za-z]/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.js
new file mode 100644
index 0000000000..4ab360273a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiAlphanumeric = regexCheck(/[\dA-Za-z]/)
+
+module.exports = asciiAlphanumeric
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.mjs
new file mode 100644
index 0000000000..efed714565
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-alphanumeric.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/[\dA-Za-z]/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.js
new file mode 100644
index 0000000000..8962f996ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiAtext = regexCheck(/[#-'*+\--9=?A-Z^-~]/)
+
+module.exports = asciiAtext
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.mjs
new file mode 100644
index 0000000000..56b84c42e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-atext.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/[#-'*+\--9=?A-Z^-~]/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.js
new file mode 100644
index 0000000000..c134a613fe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.js
@@ -0,0 +1,14 @@
+'use strict'
+
+var codes = require('./codes.js')
+
+// Note: EOF is seen as ASCII control here, because `null < 32 == true`.
+function asciiControl(code) {
+ return (
+ // Special whitespace codes (which have negative values), C0 and Control
+ // character DEL
+ code < codes.space || code === codes.del
+ )
+}
+
+module.exports = asciiControl
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.mjs
new file mode 100644
index 0000000000..0824191947
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-control.mjs
@@ -0,0 +1,12 @@
+export default asciiControl
+
+import codes from './codes.mjs'
+
+// Note: EOF is seen as ASCII control here, because `null < 32 == true`.
+function asciiControl(code) {
+ return (
+ // Special whitespace codes (which have negative values), C0 and Control
+ // character DEL
+ code < codes.space || code === codes.del
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.js
new file mode 100644
index 0000000000..da614c4e40
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiDigit = regexCheck(/\d/)
+
+module.exports = asciiDigit
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.mjs
new file mode 100644
index 0000000000..ec3b6e11db
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-digit.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/\d/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.js
new file mode 100644
index 0000000000..a0e7af43ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiHexDigit = regexCheck(/[\dA-Fa-f]/)
+
+module.exports = asciiHexDigit
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.mjs
new file mode 100644
index 0000000000..3eabedbf78
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-hex-digit.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/[\dA-Fa-f]/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.js
new file mode 100644
index 0000000000..596b45a5eb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)
+
+module.exports = asciiPunctuation
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.mjs
new file mode 100644
index 0000000000..d8308f1139
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/ascii-punctuation.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/[!-/:-@[-`{-~]/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/codes.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/codes.js
new file mode 100644
index 0000000000..46ab818040
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/codes.js
@@ -0,0 +1,158 @@
+'use strict'
+
+// This module is compiled away!
+//
+// micromark works based on character codes.
+// This module contains constants for the ASCII block and the replacement
+// character.
+// A couple of them are handled in a special way, such as the line endings
+// (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal
+// tab) and its expansion based on what column it’s at (virtual space),
+// and the end-of-file (eof) character.
+// As values are preprocessed before handling them, the actual characters LF,
+// CR, HT, and NUL (which is present as the replacement character), are
+// guaranteed to not exist.
+//
+// Unicode basic latin block.
+var codes = {
+ carriageReturn: -5,
+ lineFeed: -4,
+ carriageReturnLineFeed: -3,
+ horizontalTab: -2,
+ virtualSpace: -1,
+ eof: null,
+ nul: 0,
+ soh: 1,
+ stx: 2,
+ etx: 3,
+ eot: 4,
+ enq: 5,
+ ack: 6,
+ bel: 7,
+ bs: 8,
+ ht: 9, // `\t`
+ lf: 10, // `\n`
+ vt: 11, // `\v`
+ ff: 12, // `\f`
+ cr: 13, // `\r`
+ so: 14,
+ si: 15,
+ dle: 16,
+ dc1: 17,
+ dc2: 18,
+ dc3: 19,
+ dc4: 20,
+ nak: 21,
+ syn: 22,
+ etb: 23,
+ can: 24,
+ em: 25,
+ sub: 26,
+ esc: 27,
+ fs: 28,
+ gs: 29,
+ rs: 30,
+ us: 31,
+ space: 32,
+ exclamationMark: 33, // `!`
+ quotationMark: 34, // `"`
+ numberSign: 35, // `#`
+ dollarSign: 36, // `$`
+ percentSign: 37, // `%`
+ ampersand: 38, // `&`
+ apostrophe: 39, // `'`
+ leftParenthesis: 40, // `(`
+ rightParenthesis: 41, // `)`
+ asterisk: 42, // `*`
+ plusSign: 43, // `+`
+ comma: 44, // `,`
+ dash: 45, // `-`
+ dot: 46, // `.`
+ slash: 47, // `/`
+ digit0: 48, // `0`
+ digit1: 49, // `1`
+ digit2: 50, // `2`
+ digit3: 51, // `3`
+ digit4: 52, // `4`
+ digit5: 53, // `5`
+ digit6: 54, // `6`
+ digit7: 55, // `7`
+ digit8: 56, // `8`
+ digit9: 57, // `9`
+ colon: 58, // `:`
+ semicolon: 59, // `;`
+ lessThan: 60, // `<`
+ equalsTo: 61, // `=`
+ greaterThan: 62, // `>`
+ questionMark: 63, // `?`
+ atSign: 64, // `@`
+ uppercaseA: 65, // `A`
+ uppercaseB: 66, // `B`
+ uppercaseC: 67, // `C`
+ uppercaseD: 68, // `D`
+ uppercaseE: 69, // `E`
+ uppercaseF: 70, // `F`
+ uppercaseG: 71, // `G`
+ uppercaseH: 72, // `H`
+ uppercaseI: 73, // `I`
+ uppercaseJ: 74, // `J`
+ uppercaseK: 75, // `K`
+ uppercaseL: 76, // `L`
+ uppercaseM: 77, // `M`
+ uppercaseN: 78, // `N`
+ uppercaseO: 79, // `O`
+ uppercaseP: 80, // `P`
+ uppercaseQ: 81, // `Q`
+ uppercaseR: 82, // `R`
+ uppercaseS: 83, // `S`
+ uppercaseT: 84, // `T`
+ uppercaseU: 85, // `U`
+ uppercaseV: 86, // `V`
+ uppercaseW: 87, // `W`
+ uppercaseX: 88, // `X`
+ uppercaseY: 89, // `Y`
+ uppercaseZ: 90, // `Z`
+ leftSquareBracket: 91, // `[`
+ backslash: 92, // `\`
+ rightSquareBracket: 93, // `]`
+ caret: 94, // `^`
+ underscore: 95, // `_`
+ graveAccent: 96, // `` ` ``
+ lowercaseA: 97, // `a`
+ lowercaseB: 98, // `b`
+ lowercaseC: 99, // `c`
+ lowercaseD: 100, // `d`
+ lowercaseE: 101, // `e`
+ lowercaseF: 102, // `f`
+ lowercaseG: 103, // `g`
+ lowercaseH: 104, // `h`
+ lowercaseI: 105, // `i`
+ lowercaseJ: 106, // `j`
+ lowercaseK: 107, // `k`
+ lowercaseL: 108, // `l`
+ lowercaseM: 109, // `m`
+ lowercaseN: 110, // `n`
+ lowercaseO: 111, // `o`
+ lowercaseP: 112, // `p`
+ lowercaseQ: 113, // `q`
+ lowercaseR: 114, // `r`
+ lowercaseS: 115, // `s`
+ lowercaseT: 116, // `t`
+ lowercaseU: 117, // `u`
+ lowercaseV: 118, // `v`
+ lowercaseW: 119, // `w`
+ lowercaseX: 120, // `x`
+ lowercaseY: 121, // `y`
+ lowercaseZ: 122, // `z`
+ leftCurlyBrace: 123, // `{`
+ verticalBar: 124, // `|`
+ rightCurlyBrace: 125, // `}`
+ tilde: 126, // `~`
+ del: 127,
+ // Unicode Specials block.
+ byteOrderMarker: 65279,
+ // Unicode Specials block.
+ replacementCharacter: 65533 // `�`
+}
+
+module.exports = codes
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/codes.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/codes.mjs
new file mode 100644
index 0000000000..7503f4728e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/codes.mjs
@@ -0,0 +1,154 @@
+// This module is compiled away!
+//
+// micromark works based on character codes.
+// This module contains constants for the ASCII block and the replacement
+// character.
+// A couple of them are handled in a special way, such as the line endings
+// (CR, LF, and CR+LF, commonly known as end-of-line: EOLs), the tab (horizontal
+// tab) and its expansion based on what column it’s at (virtual space),
+// and the end-of-file (eof) character.
+// As values are preprocessed before handling them, the actual characters LF,
+// CR, HT, and NUL (which is present as the replacement character), are
+// guaranteed to not exist.
+//
+// Unicode basic latin block.
+export default {
+ carriageReturn: -5,
+ lineFeed: -4,
+ carriageReturnLineFeed: -3,
+ horizontalTab: -2,
+ virtualSpace: -1,
+ eof: null,
+ nul: 0,
+ soh: 1,
+ stx: 2,
+ etx: 3,
+ eot: 4,
+ enq: 5,
+ ack: 6,
+ bel: 7,
+ bs: 8,
+ ht: 9, // `\t`
+ lf: 10, // `\n`
+ vt: 11, // `\v`
+ ff: 12, // `\f`
+ cr: 13, // `\r`
+ so: 14,
+ si: 15,
+ dle: 16,
+ dc1: 17,
+ dc2: 18,
+ dc3: 19,
+ dc4: 20,
+ nak: 21,
+ syn: 22,
+ etb: 23,
+ can: 24,
+ em: 25,
+ sub: 26,
+ esc: 27,
+ fs: 28,
+ gs: 29,
+ rs: 30,
+ us: 31,
+ space: 32,
+ exclamationMark: 33, // `!`
+ quotationMark: 34, // `"`
+ numberSign: 35, // `#`
+ dollarSign: 36, // `$`
+ percentSign: 37, // `%`
+ ampersand: 38, // `&`
+ apostrophe: 39, // `'`
+ leftParenthesis: 40, // `(`
+ rightParenthesis: 41, // `)`
+ asterisk: 42, // `*`
+ plusSign: 43, // `+`
+ comma: 44, // `,`
+ dash: 45, // `-`
+ dot: 46, // `.`
+ slash: 47, // `/`
+ digit0: 48, // `0`
+ digit1: 49, // `1`
+ digit2: 50, // `2`
+ digit3: 51, // `3`
+ digit4: 52, // `4`
+ digit5: 53, // `5`
+ digit6: 54, // `6`
+ digit7: 55, // `7`
+ digit8: 56, // `8`
+ digit9: 57, // `9`
+ colon: 58, // `:`
+ semicolon: 59, // `;`
+ lessThan: 60, // `<`
+ equalsTo: 61, // `=`
+ greaterThan: 62, // `>`
+ questionMark: 63, // `?`
+ atSign: 64, // `@`
+ uppercaseA: 65, // `A`
+ uppercaseB: 66, // `B`
+ uppercaseC: 67, // `C`
+ uppercaseD: 68, // `D`
+ uppercaseE: 69, // `E`
+ uppercaseF: 70, // `F`
+ uppercaseG: 71, // `G`
+ uppercaseH: 72, // `H`
+ uppercaseI: 73, // `I`
+ uppercaseJ: 74, // `J`
+ uppercaseK: 75, // `K`
+ uppercaseL: 76, // `L`
+ uppercaseM: 77, // `M`
+ uppercaseN: 78, // `N`
+ uppercaseO: 79, // `O`
+ uppercaseP: 80, // `P`
+ uppercaseQ: 81, // `Q`
+ uppercaseR: 82, // `R`
+ uppercaseS: 83, // `S`
+ uppercaseT: 84, // `T`
+ uppercaseU: 85, // `U`
+ uppercaseV: 86, // `V`
+ uppercaseW: 87, // `W`
+ uppercaseX: 88, // `X`
+ uppercaseY: 89, // `Y`
+ uppercaseZ: 90, // `Z`
+ leftSquareBracket: 91, // `[`
+ backslash: 92, // `\`
+ rightSquareBracket: 93, // `]`
+ caret: 94, // `^`
+ underscore: 95, // `_`
+ graveAccent: 96, // `` ` ``
+ lowercaseA: 97, // `a`
+ lowercaseB: 98, // `b`
+ lowercaseC: 99, // `c`
+ lowercaseD: 100, // `d`
+ lowercaseE: 101, // `e`
+ lowercaseF: 102, // `f`
+ lowercaseG: 103, // `g`
+ lowercaseH: 104, // `h`
+ lowercaseI: 105, // `i`
+ lowercaseJ: 106, // `j`
+ lowercaseK: 107, // `k`
+ lowercaseL: 108, // `l`
+ lowercaseM: 109, // `m`
+ lowercaseN: 110, // `n`
+ lowercaseO: 111, // `o`
+ lowercaseP: 112, // `p`
+ lowercaseQ: 113, // `q`
+ lowercaseR: 114, // `r`
+ lowercaseS: 115, // `s`
+ lowercaseT: 116, // `t`
+ lowercaseU: 117, // `u`
+ lowercaseV: 118, // `v`
+ lowercaseW: 119, // `w`
+ lowercaseX: 120, // `x`
+ lowercaseY: 121, // `y`
+ lowercaseZ: 122, // `z`
+ leftCurlyBrace: 123, // `{`
+ verticalBar: 124, // `|`
+ rightCurlyBrace: 125, // `}`
+ tilde: 126, // `~`
+ del: 127,
+ // Unicode Specials block.
+ byteOrderMarker: 65279,
+ // Unicode Specials block.
+ replacementCharacter: 65533 // `�`
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.js
new file mode 100644
index 0000000000..2b6ffb9b59
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.js
@@ -0,0 +1,9 @@
+'use strict'
+
+var codes = require('./codes.js')
+
+function markdownLineEndingOrSpace(code) {
+ return code < codes.nul || code === codes.space
+}
+
+module.exports = markdownLineEndingOrSpace
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.mjs
new file mode 100644
index 0000000000..6e27e03752
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending-or-space.mjs
@@ -0,0 +1,7 @@
+export default markdownLineEndingOrSpace
+
+import codes from './codes.mjs'
+
+function markdownLineEndingOrSpace(code) {
+ return code < codes.nul || code === codes.space
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.js
new file mode 100644
index 0000000000..05032eefc5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.js
@@ -0,0 +1,9 @@
+'use strict'
+
+var codes = require('./codes.js')
+
+function markdownLineEnding(code) {
+ return code < codes.horizontalTab
+}
+
+module.exports = markdownLineEnding
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.mjs
new file mode 100644
index 0000000000..63c1b71c07
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-line-ending.mjs
@@ -0,0 +1,7 @@
+export default markdownLineEnding
+
+import codes from './codes.mjs'
+
+function markdownLineEnding(code) {
+ return code < codes.horizontalTab
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.js
new file mode 100644
index 0000000000..6273782f9d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.js
@@ -0,0 +1,13 @@
+'use strict'
+
+var codes = require('./codes.js')
+
+function markdownSpace(code) {
+ return (
+ code === codes.horizontalTab ||
+ code === codes.virtualSpace ||
+ code === codes.space
+ )
+}
+
+module.exports = markdownSpace
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.mjs
new file mode 100644
index 0000000000..03b72a18fe
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/markdown-space.mjs
@@ -0,0 +1,11 @@
+export default markdownSpace
+
+import codes from './codes.mjs'
+
+function markdownSpace(code) {
+ return (
+ code === codes.horizontalTab ||
+ code === codes.virtualSpace ||
+ code === codes.space
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.js
new file mode 100644
index 0000000000..ae28b17310
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.js
@@ -0,0 +1,10 @@
+'use strict'
+
+var unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')
+var regexCheck = require('../util/regex-check.js')
+
+// Size note: removing ASCII from the regex and using `ascii-punctuation` here
+// In fact adds to the bundle size.
+var unicodePunctuation = regexCheck(unicodePunctuationRegex)
+
+module.exports = unicodePunctuation
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.mjs
new file mode 100644
index 0000000000..037f7f9bea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-punctuation.mjs
@@ -0,0 +1,6 @@
+import unicodePunctuation from '../constant/unicode-punctuation-regex.mjs'
+import check from '../util/regex-check.mjs'
+
+// Size note: removing ASCII from the regex and using `ascii-punctuation` here
+// In fact adds to the bundle size.
+export default check(unicodePunctuation)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.js
new file mode 100644
index 0000000000..b09537ea08
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.js
@@ -0,0 +1,7 @@
+'use strict'
+
+var regexCheck = require('../util/regex-check.js')
+
+var unicodeWhitespace = regexCheck(/\s/)
+
+module.exports = unicodeWhitespace
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.mjs
new file mode 100644
index 0000000000..5a7a530ac7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/unicode-whitespace.mjs
@@ -0,0 +1,3 @@
+import check from '../util/regex-check.mjs'
+
+export default check(/\s/)
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/values.js b/tools/node_modules/eslint/node_modules/micromark/lib/character/values.js
new file mode 100644
index 0000000000..cd1794fd97
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/values.js
@@ -0,0 +1,111 @@
+'use strict'
+
+// This module is compiled away!
+//
+// While micromark works based on character codes, this module includes the
+// string versions of ’em.
+// The C0 block, except for LF, CR, HT, and w/ the replacement character added,
+// are available here.
+var values = {
+ ht: '\t',
+ lf: '\n',
+ cr: '\r',
+ space: ' ',
+ exclamationMark: '!',
+ quotationMark: '"',
+ numberSign: '#',
+ dollarSign: '$',
+ percentSign: '%',
+ ampersand: '&',
+ apostrophe: "'",
+ leftParenthesis: '(',
+ rightParenthesis: ')',
+ asterisk: '*',
+ plusSign: '+',
+ comma: ',',
+ dash: '-',
+ dot: '.',
+ slash: '/',
+ digit0: '0',
+ digit1: '1',
+ digit2: '2',
+ digit3: '3',
+ digit4: '4',
+ digit5: '5',
+ digit6: '6',
+ digit7: '7',
+ digit8: '8',
+ digit9: '9',
+ colon: ':',
+ semicolon: ';',
+ lessThan: '<',
+ equalsTo: '=',
+ greaterThan: '>',
+ questionMark: '?',
+ atSign: '@',
+ uppercaseA: 'A',
+ uppercaseB: 'B',
+ uppercaseC: 'C',
+ uppercaseD: 'D',
+ uppercaseE: 'E',
+ uppercaseF: 'F',
+ uppercaseG: 'G',
+ uppercaseH: 'H',
+ uppercaseI: 'I',
+ uppercaseJ: 'J',
+ uppercaseK: 'K',
+ uppercaseL: 'L',
+ uppercaseM: 'M',
+ uppercaseN: 'N',
+ uppercaseO: 'O',
+ uppercaseP: 'P',
+ uppercaseQ: 'Q',
+ uppercaseR: 'R',
+ uppercaseS: 'S',
+ uppercaseT: 'T',
+ uppercaseU: 'U',
+ uppercaseV: 'V',
+ uppercaseW: 'W',
+ uppercaseX: 'X',
+ uppercaseY: 'Y',
+ uppercaseZ: 'Z',
+ leftSquareBracket: '[',
+ backslash: '\\',
+ rightSquareBracket: ']',
+ caret: '^',
+ underscore: '_',
+ graveAccent: '`',
+ lowercaseA: 'a',
+ lowercaseB: 'b',
+ lowercaseC: 'c',
+ lowercaseD: 'd',
+ lowercaseE: 'e',
+ lowercaseF: 'f',
+ lowercaseG: 'g',
+ lowercaseH: 'h',
+ lowercaseI: 'i',
+ lowercaseJ: 'j',
+ lowercaseK: 'k',
+ lowercaseL: 'l',
+ lowercaseM: 'm',
+ lowercaseN: 'n',
+ lowercaseO: 'o',
+ lowercaseP: 'p',
+ lowercaseQ: 'q',
+ lowercaseR: 'r',
+ lowercaseS: 's',
+ lowercaseT: 't',
+ lowercaseU: 'u',
+ lowercaseV: 'v',
+ lowercaseW: 'w',
+ lowercaseX: 'x',
+ lowercaseY: 'y',
+ lowercaseZ: 'z',
+ leftCurlyBrace: '{',
+ verticalBar: '|',
+ rightCurlyBrace: '}',
+ tilde: '~',
+ replacementCharacter: '�'
+}
+
+module.exports = values
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/character/values.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/character/values.mjs
new file mode 100644
index 0000000000..bc0be3fee9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/character/values.mjs
@@ -0,0 +1,107 @@
+// This module is compiled away!
+//
+// While micromark works based on character codes, this module includes the
+// string versions of ’em.
+// The C0 block, except for LF, CR, HT, and w/ the replacement character added,
+// are available here.
+export default {
+ ht: '\t',
+ lf: '\n',
+ cr: '\r',
+ space: ' ',
+ exclamationMark: '!',
+ quotationMark: '"',
+ numberSign: '#',
+ dollarSign: '$',
+ percentSign: '%',
+ ampersand: '&',
+ apostrophe: "'",
+ leftParenthesis: '(',
+ rightParenthesis: ')',
+ asterisk: '*',
+ plusSign: '+',
+ comma: ',',
+ dash: '-',
+ dot: '.',
+ slash: '/',
+ digit0: '0',
+ digit1: '1',
+ digit2: '2',
+ digit3: '3',
+ digit4: '4',
+ digit5: '5',
+ digit6: '6',
+ digit7: '7',
+ digit8: '8',
+ digit9: '9',
+ colon: ':',
+ semicolon: ';',
+ lessThan: '<',
+ equalsTo: '=',
+ greaterThan: '>',
+ questionMark: '?',
+ atSign: '@',
+ uppercaseA: 'A',
+ uppercaseB: 'B',
+ uppercaseC: 'C',
+ uppercaseD: 'D',
+ uppercaseE: 'E',
+ uppercaseF: 'F',
+ uppercaseG: 'G',
+ uppercaseH: 'H',
+ uppercaseI: 'I',
+ uppercaseJ: 'J',
+ uppercaseK: 'K',
+ uppercaseL: 'L',
+ uppercaseM: 'M',
+ uppercaseN: 'N',
+ uppercaseO: 'O',
+ uppercaseP: 'P',
+ uppercaseQ: 'Q',
+ uppercaseR: 'R',
+ uppercaseS: 'S',
+ uppercaseT: 'T',
+ uppercaseU: 'U',
+ uppercaseV: 'V',
+ uppercaseW: 'W',
+ uppercaseX: 'X',
+ uppercaseY: 'Y',
+ uppercaseZ: 'Z',
+ leftSquareBracket: '[',
+ backslash: '\\',
+ rightSquareBracket: ']',
+ caret: '^',
+ underscore: '_',
+ graveAccent: '`',
+ lowercaseA: 'a',
+ lowercaseB: 'b',
+ lowercaseC: 'c',
+ lowercaseD: 'd',
+ lowercaseE: 'e',
+ lowercaseF: 'f',
+ lowercaseG: 'g',
+ lowercaseH: 'h',
+ lowercaseI: 'i',
+ lowercaseJ: 'j',
+ lowercaseK: 'k',
+ lowercaseL: 'l',
+ lowercaseM: 'm',
+ lowercaseN: 'n',
+ lowercaseO: 'o',
+ lowercaseP: 'p',
+ lowercaseQ: 'q',
+ lowercaseR: 'r',
+ lowercaseS: 's',
+ lowercaseT: 't',
+ lowercaseU: 'u',
+ lowercaseV: 'v',
+ lowercaseW: 'w',
+ lowercaseX: 'x',
+ lowercaseY: 'y',
+ lowercaseZ: 'z',
+ leftCurlyBrace: '{',
+ verticalBar: '|',
+ rightCurlyBrace: '}',
+ tilde: '~',
+ replacementCharacter: '�'
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/compile/html.js b/tools/node_modules/eslint/node_modules/micromark/lib/compile/html.js
new file mode 100644
index 0000000000..ab6874b3cd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/compile/html.js
@@ -0,0 +1,810 @@
+'use strict'
+
+var decodeEntity = require('parse-entities/decode-entity.js')
+var codes = require('../character/codes.js')
+var assign = require('../constant/assign.js')
+var constants = require('../constant/constants.js')
+var hasOwnProperty = require('../constant/has-own-property.js')
+var types = require('../constant/types.js')
+var combineHtmlExtensions = require('../util/combine-html-extensions.js')
+var chunkedPush = require('../util/chunked-push.js')
+var miniflat = require('../util/miniflat.js')
+var normalizeIdentifier = require('../util/normalize-identifier.js')
+var normalizeUri = require('../util/normalize-uri.js')
+var safeFromInt = require('../util/safe-from-int.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)
+
+// While micromark is a lexer/tokenizer, the common case of going from markdown
+
+// This ensures that certain characters which have special meaning in HTML are
+// dealt with.
+// Technically, we can skip `>` and `"` in many cases, but CM includes them.
+var characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}
+
+// These two are allowlists of essentially safe protocols for full URLs in
+// respectively the `href` (on `<a>`) and `src` (on `<img>`) attributes.
+// They are based on what is allowed on GitHub,
+// <https://github.com/syntax-tree/hast-util-sanitize/blob/9275b21/lib/github.json#L31>
+var protocolHref = /^(https?|ircs?|mailto|xmpp)$/i
+var protocolSrc = /^https?$/i
+
+function compileHtml(options) {
+ // Configuration.
+ // Includes `htmlExtensions` (an array of extensions), `defaultLineEnding` (a
+ // preferred EOL), `allowDangerousProtocol` (whether to allow potential
+ // dangerous protocols), and `allowDangerousHtml` (whether to allow potential
+ // dangerous HTML).
+ var settings = options || {}
+ // Tags is needed because according to markdown, links and emphasis and
+ // whatnot can exist in images, however, as HTML doesn’t allow content in
+ // images, the tags are ignored in the `alt` attribute, but the content
+ // remains.
+ var tags = true
+ // An object to track identifiers to media (URLs and titles) defined with
+ // definitions.
+ var definitions = {}
+ // A lot of the handlers need to capture some of the output data, modify it
+ // somehow, and then deal with it.
+ // We do that by tracking a stack of buffers, that can be opened (with
+ // `buffer`) and closed (with `resume`) to access them.
+ var buffers = [[]]
+ // As we can have links in images and the other way around, where the deepest
+ // ones are closed first, we need to track which one we’re in.
+ var mediaStack = []
+ // Same for tightness, which is specific to lists.
+ // We need to track if we’re currently in a tight or loose container.
+ var tightStack = []
+
+ var defaultHandlers = {
+ enter: {
+ blockQuote: onenterblockquote,
+ codeFenced: onentercodefenced,
+ codeFencedFenceInfo: buffer,
+ codeFencedFenceMeta: buffer,
+ codeIndented: onentercodeindented,
+ codeText: onentercodetext,
+ content: onentercontent,
+ definition: onenterdefinition,
+ definitionDestinationString: onenterdefinitiondestinationstring,
+ definitionLabelString: buffer,
+ definitionTitleString: buffer,
+ emphasis: onenteremphasis,
+ htmlFlow: onenterhtmlflow,
+ htmlText: onenterhtml,
+ image: onenterimage,
+ label: buffer,
+ link: onenterlink,
+ listItemMarker: onenterlistitemmarker,
+ listItemValue: onenterlistitemvalue,
+ listOrdered: onenterlistordered,
+ listUnordered: onenterlistunordered,
+ paragraph: onenterparagraph,
+ reference: buffer,
+ resource: onenterresource,
+ resourceDestinationString: onenterresourcedestinationstring,
+ resourceTitleString: buffer,
+ setextHeading: onentersetextheading,
+ strong: onenterstrong
+ },
+ exit: {
+ atxHeading: onexitatxheading,
+ atxHeadingSequence: onexitatxheadingsequence,
+ autolinkEmail: onexitautolinkemail,
+ autolinkProtocol: onexitautolinkprotocol,
+ blockQuote: onexitblockquote,
+ characterEscapeValue: onexitdata,
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
+ characterReferenceValue: onexitcharacterreferencevalue,
+ codeFenced: onexitflowcode,
+ codeFencedFence: onexitcodefencedfence,
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
+ codeFencedFenceMeta: resume,
+ codeFlowValue: onexitcodeflowvalue,
+ codeIndented: onexitflowcode,
+ codeText: onexitcodetext,
+ codeTextData: onexitdata,
+ data: onexitdata,
+ definition: onexitdefinition,
+ definitionDestinationString: onexitdefinitiondestinationstring,
+ definitionLabelString: onexitdefinitionlabelstring,
+ definitionTitleString: onexitdefinitiontitlestring,
+ emphasis: onexitemphasis,
+ hardBreakEscape: onexithardbreak,
+ hardBreakTrailing: onexithardbreak,
+ htmlFlow: onexithtml,
+ htmlFlowData: onexitdata,
+ htmlText: onexithtml,
+ htmlTextData: onexitdata,
+ image: onexitmedia,
+ label: onexitlabel,
+ labelText: onexitlabeltext,
+ lineEnding: onexitlineending,
+ link: onexitmedia,
+ listOrdered: onexitlistordered,
+ listUnordered: onexitlistunordered,
+ paragraph: onexitparagraph,
+ reference: resume,
+ referenceString: onexitreferencestring,
+ resource: resume,
+ resourceDestinationString: onexitresourcedestinationstring,
+ resourceTitleString: onexitresourcetitlestring,
+ setextHeading: onexitsetextheading,
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
+ setextHeadingText: onexitsetextheadingtext,
+ strong: onexitstrong,
+ thematicBreak: onexitthematicbreak
+ }
+ }
+
+ // Combine the HTML extensions with the default handlers.
+ // An HTML extension is an object whose fields are either `enter` or `exit`
+ // (reflecting whether a token is entered or exited).
+ // The values at such objects are names of tokens mapping to handlers.
+ // Handlers are called, respectively when a token is opener or closed, with
+ // that token, and a context as `this`.
+ var handlers = combineHtmlExtensions(
+ [defaultHandlers].concat(miniflat(settings.htmlExtensions))
+ )
+
+ // Handlers do often need to keep track of some state.
+ // That state is provided here as a key-value store (an object).
+ var data = {tightStack: tightStack}
+
+ // The context for handlers references a couple of useful functions.
+ // In handlers from extensions, those can be accessed at `this`.
+ // For the handlers here, they can be accessed directly.
+ var context = {
+ lineEndingIfNeeded: lineEndingIfNeeded,
+ options: settings,
+ encode: encode,
+ raw: raw,
+ tag: tag,
+ buffer: buffer,
+ resume: resume,
+ setData: setData,
+ getData: getData
+ }
+
+ // Generally, micromark copies line endings (`'\r'`, `'\n'`, `'\r\n'`) in the
+ // markdown document over to the compiled HTML.
+ // In some cases, such as `> a`, CommonMark requires that extra line endings
+ // are added: `<blockquote>\n<p>a</p>\n</blockquote>`.
+ // This variable hold the default line ending when given (or `undefined`),
+ // and in the latter case will be updated to the first found line ending if
+ // there is one.
+ var lineEndingStyle = settings.defaultLineEnding
+
+ // Return the function that handles a slice of events.
+ return compile
+
+ // Deal w/ a slice of events.
+ // Return either the empty string if there’s nothing of note to return, or the
+ // result when done.
+ function compile(events) {
+ // As definitions can come after references, we need to figure out the media
+ // (urls and titles) defined by them before handling the references.
+ // So, we do sort of what HTML does: put metadata at the start (in head), and
+ // then put content after (`body`).
+ var head = []
+ var body = []
+ var index
+ var start
+ var listStack
+ var handler
+ var result
+
+ index = -1
+ start = 0
+ listStack = []
+
+ while (++index < events.length) {
+ // Figure out the line ending style used in the document.
+ if (
+ !lineEndingStyle &&
+ (events[index][1].type === types.lineEnding ||
+ events[index][1].type === types.lineEndingBlank)
+ ) {
+ lineEndingStyle = events[index][2].sliceSerialize(events[index][1])
+ }
+
+ // Preprocess lists to infer whether the list is loose or not.
+ if (
+ events[index][1].type === types.listOrdered ||
+ events[index][1].type === types.listUnordered
+ ) {
+ if (events[index][0] === 'enter') {
+ listStack.push(index)
+ } else {
+ prepareList(events.slice(listStack.pop(), index))
+ }
+ }
+
+ // Move definitions to the front.
+ if (events[index][1].type === types.definition) {
+ if (events[index][0] === 'enter') {
+ body = chunkedPush(body, events.slice(start, index))
+ start = index
+ } else {
+ head = chunkedPush(head, events.slice(start, index + 1))
+ start = index + 1
+ }
+ }
+ }
+
+ head = chunkedPush(head, body)
+ head = chunkedPush(head, events.slice(start))
+ result = head
+ index = -1
+
+ // Handle the start of the document, if defined.
+ if (handlers.enter.null) {
+ handlers.enter.null.call(context)
+ }
+
+ // Handle all events.
+ while (++index < events.length) {
+ handler = handlers[result[index][0]]
+
+ if (hasOwnProperty.call(handler, result[index][1].type)) {
+ handler[result[index][1].type].call(
+ assign({sliceSerialize: result[index][2].sliceSerialize}, context),
+ result[index][1]
+ )
+ }
+ }
+
+ // Handle the end of the document, if defined.
+ if (handlers.exit.null) {
+ handlers.exit.null.call(context)
+ }
+
+ return buffers[0].join('')
+ }
+
+ // Figure out whether lists are loose or not.
+ function prepareList(slice) {
+ var length = slice.length - 1 // Skip close.
+ var index = 0 // Skip open.
+ var containerBalance = 0
+ var loose
+ var atMarker
+ var event
+
+ while (++index < length) {
+ event = slice[index]
+
+ if (event[1]._container) {
+ atMarker = undefined
+
+ if (event[0] === 'enter') {
+ containerBalance++
+ } else {
+ containerBalance--
+ }
+ } else if (event[1].type === types.listItemPrefix) {
+ if (event[0] === 'exit') {
+ atMarker = true
+ }
+ } else if (event[1].type === types.linePrefix);
+ else if (event[1].type === types.lineEndingBlank) {
+ if (event[0] === 'enter' && !containerBalance) {
+ if (atMarker) {
+ atMarker = undefined
+ } else {
+ loose = true
+ }
+ }
+ } else {
+ atMarker = undefined
+ }
+ }
+
+ slice[0][1]._loose = loose
+ }
+
+ // Set data into the key-value store.
+ function setData(key, value) {
+ data[key] = value
+ }
+
+ // Get data from the key-value store.
+ function getData(key) {
+ return data[key]
+ }
+
+ // Capture some of the output data.
+ function buffer() {
+ buffers.push([])
+ }
+
+ // Stop capturing and access the output data.
+ function resume() {
+ return buffers.pop().join('')
+ }
+
+ // Output (parts of) HTML tags.
+ function tag(value) {
+ if (!tags) return
+ setData('lastWasTag', true)
+ buffers[buffers.length - 1].push(value)
+ }
+
+ // Output raw data.
+ function raw(value) {
+ setData('lastWasTag')
+ buffers[buffers.length - 1].push(value)
+ }
+
+ // Output an extra line ending.
+ function lineEnding() {
+ raw(lineEndingStyle || '\n')
+ }
+
+ // Output an extra line ending if the previous value wasn’t EOF/EOL.
+ function lineEndingIfNeeded() {
+ var buffer = buffers[buffers.length - 1]
+ var slice = buffer[buffer.length - 1]
+ var previous = slice ? slice.charCodeAt(slice.length - 1) : codes.eof
+
+ if (
+ previous === codes.lf ||
+ previous === codes.cr ||
+ previous === codes.eof
+ ) {
+ return
+ }
+
+ lineEnding()
+ }
+
+ // Make a value safe for injection in HTML (except w/ `ignoreEncode`).
+ function encode(value) {
+ return getData('ignoreEncode') ? value : value.replace(/["&<>]/g, replace)
+ function replace(value) {
+ return '&' + characterReferences[value] + ';'
+ }
+ }
+
+ // Make a value safe for injection as a URL.
+ // This does encode unsafe characters with percent-encoding, skipping already
+ // encoded sequences (`normalizeUri`).
+ // Further unsafe characters are encoded as character references (`encode`).
+ // Finally, if the URL includes an unknown protocol (such as a dangerous
+ // example, `javascript:`), the value is ignored.
+ function url(url, protocol) {
+ var value = encode(normalizeUri(url || ''))
+ var colon = value.indexOf(':')
+ var questionMark = value.indexOf('?')
+ var numberSign = value.indexOf('#')
+ var slash = value.indexOf('/')
+
+ if (
+ settings.allowDangerousProtocol ||
+ // If there is no protocol, it’s relative.
+ colon < 0 ||
+ // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.
+ (slash > -1 && colon > slash) ||
+ (questionMark > -1 && colon > questionMark) ||
+ (numberSign > -1 && colon > numberSign) ||
+ // It is a protocol, it should be allowed.
+ protocol.test(value.slice(0, colon))
+ ) {
+ return value
+ }
+
+ return ''
+ }
+
+ //
+ // Handlers.
+ //
+
+ function onenterlistordered(token) {
+ tightStack.push(!token._loose)
+ lineEndingIfNeeded()
+ tag('<ol')
+ setData('expectFirstItem', true)
+ }
+
+ function onenterlistunordered(token) {
+ tightStack.push(!token._loose)
+ lineEndingIfNeeded()
+ tag('<ul')
+ setData('expectFirstItem', true)
+ }
+
+ function onenterlistitemvalue(token) {
+ var value
+
+ if (getData('expectFirstItem')) {
+ value = parseInt(this.sliceSerialize(token), constants.numericBaseDecimal)
+
+ if (value !== 1) {
+ tag(' start="' + encode(String(value)) + '"')
+ }
+ }
+ }
+
+ function onenterlistitemmarker() {
+ if (getData('expectFirstItem')) {
+ tag('>')
+ } else {
+ onexitlistitem()
+ }
+
+ lineEndingIfNeeded()
+ tag('<li>')
+ setData('expectFirstItem')
+ // “Hack” to prevent a line ending from showing up if the item is empty.
+ setData('lastWasTag')
+ }
+
+ function onexitlistordered() {
+ onexitlistitem()
+ tightStack.pop()
+ lineEnding()
+ tag('</ol>')
+ }
+
+ function onexitlistunordered() {
+ onexitlistitem()
+ tightStack.pop()
+ lineEnding()
+ tag('</ul>')
+ }
+
+ function onexitlistitem() {
+ if (getData('lastWasTag') && !getData('slurpAllLineEndings')) {
+ lineEndingIfNeeded()
+ }
+
+ tag('</li>')
+ setData('slurpAllLineEndings')
+ }
+
+ function onenterblockquote() {
+ tightStack.push(false)
+ lineEndingIfNeeded()
+ tag('<blockquote>')
+ }
+
+ function onexitblockquote() {
+ tightStack.pop()
+ lineEndingIfNeeded()
+ tag('</blockquote>')
+ setData('slurpAllLineEndings')
+ }
+
+ function onenterparagraph() {
+ if (!tightStack[tightStack.length - 1]) {
+ lineEndingIfNeeded()
+ tag('<p>')
+ }
+
+ setData('slurpAllLineEndings')
+ }
+
+ function onexitparagraph() {
+ if (tightStack[tightStack.length - 1]) {
+ setData('slurpAllLineEndings', true)
+ } else {
+ tag('</p>')
+ }
+ }
+
+ function onentercodefenced() {
+ lineEndingIfNeeded()
+ tag('<pre><code')
+ setData('fencesCount', 0)
+ }
+
+ function onexitcodefencedfenceinfo() {
+ var value = resume()
+ tag(' class="language-' + value + '"')
+ }
+
+ function onexitcodefencedfence() {
+ if (!getData('fencesCount')) {
+ tag('>')
+ setData('fencedCodeInside', true)
+ setData('slurpOneLineEnding', true)
+ }
+
+ setData('fencesCount', getData('fencesCount') + 1)
+ }
+
+ function onentercodeindented() {
+ lineEndingIfNeeded()
+ tag('<pre><code>')
+ }
+
+ function onexitflowcode() {
+ // Send an extra line feed if we saw data.
+ if (getData('flowCodeSeenData')) lineEndingIfNeeded()
+ tag('</code></pre>')
+ if (getData('fencesCount') < 2) lineEndingIfNeeded()
+ setData('flowCodeSeenData')
+ setData('fencesCount')
+ setData('slurpOneLineEnding')
+ }
+
+ function onenterimage() {
+ mediaStack.push({image: true})
+ tags = undefined // Disallow tags.
+ }
+
+ function onenterlink() {
+ mediaStack.push({})
+ }
+
+ function onexitlabeltext(token) {
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
+ }
+
+ function onexitlabel() {
+ mediaStack[mediaStack.length - 1].label = resume()
+ }
+
+ function onexitreferencestring(token) {
+ mediaStack[mediaStack.length - 1].referenceId = this.sliceSerialize(token)
+ }
+
+ function onenterresource() {
+ buffer() // We can have line endings in the resource, ignore them.
+ mediaStack[mediaStack.length - 1].destination = ''
+ }
+
+ function onenterresourcedestinationstring() {
+ buffer()
+ // Ignore encoding the result, as we’ll first percent encode the url and
+ // encode manually after.
+ setData('ignoreEncode', true)
+ }
+
+ function onexitresourcedestinationstring() {
+ mediaStack[mediaStack.length - 1].destination = resume()
+ setData('ignoreEncode')
+ }
+
+ function onexitresourcetitlestring() {
+ mediaStack[mediaStack.length - 1].title = resume()
+ }
+
+ function onexitmedia() {
+ var index = mediaStack.length - 1 // Skip current.
+ var media = mediaStack[index]
+ var context =
+ media.destination === undefined
+ ? definitions[normalizeIdentifier(media.referenceId || media.labelId)]
+ : media
+
+ tags = true
+
+ while (index--) {
+ if (mediaStack[index].image) {
+ tags = undefined
+ break
+ }
+ }
+
+ if (media.image) {
+ tag('<img src="' + url(context.destination, protocolSrc) + '" alt="')
+ raw(media.label)
+ tag('"')
+ } else {
+ tag('<a href="' + url(context.destination, protocolHref) + '"')
+ }
+
+ tag(context.title ? ' title="' + context.title + '"' : '')
+
+ if (media.image) {
+ tag(' />')
+ } else {
+ tag('>')
+ raw(media.label)
+ tag('</a>')
+ }
+
+ mediaStack.pop()
+ }
+
+ function onenterdefinition() {
+ buffer()
+ mediaStack.push({})
+ }
+
+ function onexitdefinitionlabelstring(token) {
+ // Discard label, use the source content instead.
+ resume()
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
+ }
+
+ function onenterdefinitiondestinationstring() {
+ buffer()
+ setData('ignoreEncode', true)
+ }
+
+ function onexitdefinitiondestinationstring() {
+ mediaStack[mediaStack.length - 1].destination = resume()
+ setData('ignoreEncode')
+ }
+
+ function onexitdefinitiontitlestring() {
+ mediaStack[mediaStack.length - 1].title = resume()
+ }
+
+ function onexitdefinition() {
+ var id = normalizeIdentifier(mediaStack[mediaStack.length - 1].labelId)
+
+ resume()
+
+ if (!hasOwnProperty.call(definitions, id)) {
+ definitions[id] = mediaStack[mediaStack.length - 1]
+ }
+
+ mediaStack.pop()
+ }
+
+ function onentercontent() {
+ setData('slurpAllLineEndings', true)
+ }
+
+ function onexitatxheadingsequence(token) {
+ // Exit for further sequences.
+ if (getData('headingRank')) return
+ setData('headingRank', this.sliceSerialize(token).length)
+ lineEndingIfNeeded()
+ tag('<h' + getData('headingRank') + '>')
+ }
+
+ function onentersetextheading() {
+ buffer()
+ setData('slurpAllLineEndings')
+ }
+
+ function onexitsetextheadingtext() {
+ setData('slurpAllLineEndings', true)
+ }
+
+ function onexitatxheading() {
+ tag('</h' + getData('headingRank') + '>')
+ setData('headingRank')
+ }
+
+ function onexitsetextheadinglinesequence(token) {
+ setData(
+ 'headingRank',
+ this.sliceSerialize(token).charCodeAt(0) === codes.equalsTo ? 1 : 2
+ )
+ }
+
+ function onexitsetextheading() {
+ var value = resume()
+ lineEndingIfNeeded()
+ tag('<h' + getData('headingRank') + '>')
+ raw(value)
+ tag('</h' + getData('headingRank') + '>')
+ setData('slurpAllLineEndings')
+ setData('headingRank')
+ }
+
+ function onexitdata(token) {
+ raw(encode(this.sliceSerialize(token)))
+ }
+
+ function onexitlineending(token) {
+ if (getData('slurpAllLineEndings')) {
+ return
+ }
+
+ if (getData('slurpOneLineEnding')) {
+ setData('slurpOneLineEnding')
+ return
+ }
+
+ if (getData('inCodeText')) {
+ raw(' ')
+ return
+ }
+
+ raw(encode(this.sliceSerialize(token)))
+ }
+
+ function onexitcodeflowvalue(token) {
+ raw(encode(this.sliceSerialize(token)))
+ setData('flowCodeSeenData', true)
+ }
+
+ function onexithardbreak() {
+ tag('<br />')
+ }
+
+ function onenterhtmlflow() {
+ lineEndingIfNeeded()
+ onenterhtml()
+ }
+
+ function onexithtml() {
+ setData('ignoreEncode')
+ }
+
+ function onenterhtml() {
+ if (settings.allowDangerousHtml) {
+ setData('ignoreEncode', true)
+ }
+ }
+
+ function onenteremphasis() {
+ tag('<em>')
+ }
+
+ function onenterstrong() {
+ tag('<strong>')
+ }
+
+ function onentercodetext() {
+ setData('inCodeText', true)
+ tag('<code>')
+ }
+
+ function onexitcodetext() {
+ setData('inCodeText')
+ tag('</code>')
+ }
+
+ function onexitemphasis() {
+ tag('</em>')
+ }
+
+ function onexitstrong() {
+ tag('</strong>')
+ }
+
+ function onexitthematicbreak() {
+ lineEndingIfNeeded()
+ tag('<hr />')
+ }
+
+ function onexitcharacterreferencemarker(token) {
+ setData('characterReferenceType', token.type)
+ }
+
+ function onexitcharacterreferencevalue(token) {
+ var value = this.sliceSerialize(token)
+
+ value = getData('characterReferenceType')
+ ? safeFromInt(
+ value,
+ getData('characterReferenceType') ===
+ types.characterReferenceMarkerNumeric
+ ? constants.numericBaseDecimal
+ : constants.numericBaseHexadecimal
+ )
+ : decodeEntity__default['default'](value)
+
+ raw(encode(value))
+ setData('characterReferenceType')
+ }
+
+ function onexitautolinkprotocol(token) {
+ var uri = this.sliceSerialize(token)
+ tag('<a href="' + url(uri, protocolHref) + '">')
+ raw(encode(uri))
+ tag('</a>')
+ }
+
+ function onexitautolinkemail(token) {
+ var uri = this.sliceSerialize(token)
+ tag('<a href="' + url('mailto:' + uri, protocolHref) + '">')
+ raw(encode(uri))
+ tag('</a>')
+ }
+}
+
+module.exports = compileHtml
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/compile/html.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/compile/html.mjs
new file mode 100644
index 0000000000..3cfbe1a651
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/compile/html.mjs
@@ -0,0 +1,813 @@
+// While micromark is a lexer/tokenizer, the common case of going from markdown
+// to html is currently built in as this module, even though the parts can be
+// used separately to build ASTs, CSTs, or many other output formats.
+//
+// Having an HTML compiler built in is useful because it allows us to check for
+// compliancy to CommonMark, the de facto norm of markdown, specified in roughly
+// 600 input/output cases.
+//
+// This module has an interface which accepts lists of events instead of the
+// whole at once, however, because markdown can’t be truly streaming, we buffer
+// events before processing and outputting the final result.
+
+export default compileHtml
+
+import decodeEntity from 'parse-entities/decode-entity.js'
+import codes from '../character/codes.mjs'
+import assign from '../constant/assign.mjs'
+import constants from '../constant/constants.mjs'
+import own from '../constant/has-own-property.mjs'
+import types from '../constant/types.mjs'
+import combineHtmlExtensions from '../util/combine-html-extensions.mjs'
+import chunkedPush from '../util/chunked-push.mjs'
+import miniflat from '../util/miniflat.mjs'
+import normalizeIdentifier from '../util/normalize-identifier.mjs'
+import normalizeUri from '../util/normalize-uri.mjs'
+import safeFromInt from '../util/safe-from-int.mjs'
+
+// This ensures that certain characters which have special meaning in HTML are
+// dealt with.
+// Technically, we can skip `>` and `"` in many cases, but CM includes them.
+var characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}
+
+// These two are allowlists of essentially safe protocols for full URLs in
+// respectively the `href` (on `<a>`) and `src` (on `<img>`) attributes.
+// They are based on what is allowed on GitHub,
+// <https://github.com/syntax-tree/hast-util-sanitize/blob/9275b21/lib/github.json#L31>
+var protocolHref = /^(https?|ircs?|mailto|xmpp)$/i
+var protocolSrc = /^https?$/i
+
+function compileHtml(options) {
+ // Configuration.
+ // Includes `htmlExtensions` (an array of extensions), `defaultLineEnding` (a
+ // preferred EOL), `allowDangerousProtocol` (whether to allow potential
+ // dangerous protocols), and `allowDangerousHtml` (whether to allow potential
+ // dangerous HTML).
+ var settings = options || {}
+ // Tags is needed because according to markdown, links and emphasis and
+ // whatnot can exist in images, however, as HTML doesn’t allow content in
+ // images, the tags are ignored in the `alt` attribute, but the content
+ // remains.
+ var tags = true
+ // An object to track identifiers to media (URLs and titles) defined with
+ // definitions.
+ var definitions = {}
+ // A lot of the handlers need to capture some of the output data, modify it
+ // somehow, and then deal with it.
+ // We do that by tracking a stack of buffers, that can be opened (with
+ // `buffer`) and closed (with `resume`) to access them.
+ var buffers = [[]]
+ // As we can have links in images and the other way around, where the deepest
+ // ones are closed first, we need to track which one we’re in.
+ var mediaStack = []
+ // Same for tightness, which is specific to lists.
+ // We need to track if we’re currently in a tight or loose container.
+ var tightStack = []
+
+ var defaultHandlers = {
+ enter: {
+ blockQuote: onenterblockquote,
+ codeFenced: onentercodefenced,
+ codeFencedFenceInfo: buffer,
+ codeFencedFenceMeta: buffer,
+ codeIndented: onentercodeindented,
+ codeText: onentercodetext,
+ content: onentercontent,
+ definition: onenterdefinition,
+ definitionDestinationString: onenterdefinitiondestinationstring,
+ definitionLabelString: buffer,
+ definitionTitleString: buffer,
+ emphasis: onenteremphasis,
+ htmlFlow: onenterhtmlflow,
+ htmlText: onenterhtml,
+ image: onenterimage,
+ label: buffer,
+ link: onenterlink,
+ listItemMarker: onenterlistitemmarker,
+ listItemValue: onenterlistitemvalue,
+ listOrdered: onenterlistordered,
+ listUnordered: onenterlistunordered,
+ paragraph: onenterparagraph,
+ reference: buffer,
+ resource: onenterresource,
+ resourceDestinationString: onenterresourcedestinationstring,
+ resourceTitleString: buffer,
+ setextHeading: onentersetextheading,
+ strong: onenterstrong
+ },
+ exit: {
+ atxHeading: onexitatxheading,
+ atxHeadingSequence: onexitatxheadingsequence,
+ autolinkEmail: onexitautolinkemail,
+ autolinkProtocol: onexitautolinkprotocol,
+ blockQuote: onexitblockquote,
+ characterEscapeValue: onexitdata,
+ characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
+ characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
+ characterReferenceValue: onexitcharacterreferencevalue,
+ codeFenced: onexitflowcode,
+ codeFencedFence: onexitcodefencedfence,
+ codeFencedFenceInfo: onexitcodefencedfenceinfo,
+ codeFencedFenceMeta: resume,
+ codeFlowValue: onexitcodeflowvalue,
+ codeIndented: onexitflowcode,
+ codeText: onexitcodetext,
+ codeTextData: onexitdata,
+ data: onexitdata,
+ definition: onexitdefinition,
+ definitionDestinationString: onexitdefinitiondestinationstring,
+ definitionLabelString: onexitdefinitionlabelstring,
+ definitionTitleString: onexitdefinitiontitlestring,
+ emphasis: onexitemphasis,
+ hardBreakEscape: onexithardbreak,
+ hardBreakTrailing: onexithardbreak,
+ htmlFlow: onexithtml,
+ htmlFlowData: onexitdata,
+ htmlText: onexithtml,
+ htmlTextData: onexitdata,
+ image: onexitmedia,
+ label: onexitlabel,
+ labelText: onexitlabeltext,
+ lineEnding: onexitlineending,
+ link: onexitmedia,
+ listOrdered: onexitlistordered,
+ listUnordered: onexitlistunordered,
+ paragraph: onexitparagraph,
+ reference: resume,
+ referenceString: onexitreferencestring,
+ resource: resume,
+ resourceDestinationString: onexitresourcedestinationstring,
+ resourceTitleString: onexitresourcetitlestring,
+ setextHeading: onexitsetextheading,
+ setextHeadingLineSequence: onexitsetextheadinglinesequence,
+ setextHeadingText: onexitsetextheadingtext,
+ strong: onexitstrong,
+ thematicBreak: onexitthematicbreak
+ }
+ }
+
+ // Combine the HTML extensions with the default handlers.
+ // An HTML extension is an object whose fields are either `enter` or `exit`
+ // (reflecting whether a token is entered or exited).
+ // The values at such objects are names of tokens mapping to handlers.
+ // Handlers are called, respectively when a token is opener or closed, with
+ // that token, and a context as `this`.
+ var handlers = combineHtmlExtensions(
+ [defaultHandlers].concat(miniflat(settings.htmlExtensions))
+ )
+
+ // Handlers do often need to keep track of some state.
+ // That state is provided here as a key-value store (an object).
+ var data = {tightStack: tightStack}
+
+ // The context for handlers references a couple of useful functions.
+ // In handlers from extensions, those can be accessed at `this`.
+ // For the handlers here, they can be accessed directly.
+ var context = {
+ lineEndingIfNeeded: lineEndingIfNeeded,
+ options: settings,
+ encode: encode,
+ raw: raw,
+ tag: tag,
+ buffer: buffer,
+ resume: resume,
+ setData: setData,
+ getData: getData
+ }
+
+ // Generally, micromark copies line endings (`'\r'`, `'\n'`, `'\r\n'`) in the
+ // markdown document over to the compiled HTML.
+ // In some cases, such as `> a`, CommonMark requires that extra line endings
+ // are added: `<blockquote>\n<p>a</p>\n</blockquote>`.
+ // This variable hold the default line ending when given (or `undefined`),
+ // and in the latter case will be updated to the first found line ending if
+ // there is one.
+ var lineEndingStyle = settings.defaultLineEnding
+
+ // Return the function that handles a slice of events.
+ return compile
+
+ // Deal w/ a slice of events.
+ // Return either the empty string if there’s nothing of note to return, or the
+ // result when done.
+ function compile(events) {
+ // As definitions can come after references, we need to figure out the media
+ // (urls and titles) defined by them before handling the references.
+ // So, we do sort of what HTML does: put metadata at the start (in head), and
+ // then put content after (`body`).
+ var head = []
+ var body = []
+ var index
+ var start
+ var listStack
+ var handler
+ var result
+
+ index = -1
+ start = 0
+ listStack = []
+
+ while (++index < events.length) {
+ // Figure out the line ending style used in the document.
+ if (
+ !lineEndingStyle &&
+ (events[index][1].type === types.lineEnding ||
+ events[index][1].type === types.lineEndingBlank)
+ ) {
+ lineEndingStyle = events[index][2].sliceSerialize(events[index][1])
+ }
+
+ // Preprocess lists to infer whether the list is loose or not.
+ if (
+ events[index][1].type === types.listOrdered ||
+ events[index][1].type === types.listUnordered
+ ) {
+ if (events[index][0] === 'enter') {
+ listStack.push(index)
+ } else {
+ prepareList(events.slice(listStack.pop(), index))
+ }
+ }
+
+ // Move definitions to the front.
+ if (events[index][1].type === types.definition) {
+ if (events[index][0] === 'enter') {
+ body = chunkedPush(body, events.slice(start, index))
+ start = index
+ } else {
+ head = chunkedPush(head, events.slice(start, index + 1))
+ start = index + 1
+ }
+ }
+ }
+
+ head = chunkedPush(head, body)
+ head = chunkedPush(head, events.slice(start))
+ result = head
+ index = -1
+
+ // Handle the start of the document, if defined.
+ if (handlers.enter.null) {
+ handlers.enter.null.call(context)
+ }
+
+ // Handle all events.
+ while (++index < events.length) {
+ handler = handlers[result[index][0]]
+
+ if (own.call(handler, result[index][1].type)) {
+ handler[result[index][1].type].call(
+ assign({sliceSerialize: result[index][2].sliceSerialize}, context),
+ result[index][1]
+ )
+ }
+ }
+
+ // Handle the end of the document, if defined.
+ if (handlers.exit.null) {
+ handlers.exit.null.call(context)
+ }
+
+ return buffers[0].join('')
+ }
+
+ // Figure out whether lists are loose or not.
+ function prepareList(slice) {
+ var length = slice.length - 1 // Skip close.
+ var index = 0 // Skip open.
+ var containerBalance = 0
+ var loose
+ var atMarker
+ var event
+
+ while (++index < length) {
+ event = slice[index]
+
+ if (event[1]._container) {
+ atMarker = undefined
+
+ if (event[0] === 'enter') {
+ containerBalance++
+ } else {
+ containerBalance--
+ }
+ } else if (event[1].type === types.listItemPrefix) {
+ if (event[0] === 'exit') {
+ atMarker = true
+ }
+ } else if (event[1].type === types.linePrefix) {
+ // Ignore
+ } else if (event[1].type === types.lineEndingBlank) {
+ if (event[0] === 'enter' && !containerBalance) {
+ if (atMarker) {
+ atMarker = undefined
+ } else {
+ loose = true
+ }
+ }
+ } else {
+ atMarker = undefined
+ }
+ }
+
+ slice[0][1]._loose = loose
+ }
+
+ // Set data into the key-value store.
+ function setData(key, value) {
+ data[key] = value
+ }
+
+ // Get data from the key-value store.
+ function getData(key) {
+ return data[key]
+ }
+
+ // Capture some of the output data.
+ function buffer() {
+ buffers.push([])
+ }
+
+ // Stop capturing and access the output data.
+ function resume() {
+ return buffers.pop().join('')
+ }
+
+ // Output (parts of) HTML tags.
+ function tag(value) {
+ if (!tags) return
+ setData('lastWasTag', true)
+ buffers[buffers.length - 1].push(value)
+ }
+
+ // Output raw data.
+ function raw(value) {
+ setData('lastWasTag')
+ buffers[buffers.length - 1].push(value)
+ }
+
+ // Output an extra line ending.
+ function lineEnding() {
+ raw(lineEndingStyle || '\n')
+ }
+
+ // Output an extra line ending if the previous value wasn’t EOF/EOL.
+ function lineEndingIfNeeded() {
+ var buffer = buffers[buffers.length - 1]
+ var slice = buffer[buffer.length - 1]
+ var previous = slice ? slice.charCodeAt(slice.length - 1) : codes.eof
+
+ if (
+ previous === codes.lf ||
+ previous === codes.cr ||
+ previous === codes.eof
+ ) {
+ return
+ }
+
+ lineEnding()
+ }
+
+ // Make a value safe for injection in HTML (except w/ `ignoreEncode`).
+ function encode(value) {
+ return getData('ignoreEncode') ? value : value.replace(/["&<>]/g, replace)
+ function replace(value) {
+ return '&' + characterReferences[value] + ';'
+ }
+ }
+
+ // Make a value safe for injection as a URL.
+ // This does encode unsafe characters with percent-encoding, skipping already
+ // encoded sequences (`normalizeUri`).
+ // Further unsafe characters are encoded as character references (`encode`).
+ // Finally, if the URL includes an unknown protocol (such as a dangerous
+ // example, `javascript:`), the value is ignored.
+ function url(url, protocol) {
+ var value = encode(normalizeUri(url || ''))
+ var colon = value.indexOf(':')
+ var questionMark = value.indexOf('?')
+ var numberSign = value.indexOf('#')
+ var slash = value.indexOf('/')
+
+ if (
+ settings.allowDangerousProtocol ||
+ // If there is no protocol, it’s relative.
+ colon < 0 ||
+ // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.
+ (slash > -1 && colon > slash) ||
+ (questionMark > -1 && colon > questionMark) ||
+ (numberSign > -1 && colon > numberSign) ||
+ // It is a protocol, it should be allowed.
+ protocol.test(value.slice(0, colon))
+ ) {
+ return value
+ }
+
+ return ''
+ }
+
+ //
+ // Handlers.
+ //
+
+ function onenterlistordered(token) {
+ tightStack.push(!token._loose)
+ lineEndingIfNeeded()
+ tag('<ol')
+ setData('expectFirstItem', true)
+ }
+
+ function onenterlistunordered(token) {
+ tightStack.push(!token._loose)
+ lineEndingIfNeeded()
+ tag('<ul')
+ setData('expectFirstItem', true)
+ }
+
+ function onenterlistitemvalue(token) {
+ var value
+
+ if (getData('expectFirstItem')) {
+ value = parseInt(this.sliceSerialize(token), constants.numericBaseDecimal)
+
+ if (value !== 1) {
+ tag(' start="' + encode(String(value)) + '"')
+ }
+ }
+ }
+
+ function onenterlistitemmarker() {
+ if (getData('expectFirstItem')) {
+ tag('>')
+ } else {
+ onexitlistitem()
+ }
+
+ lineEndingIfNeeded()
+ tag('<li>')
+ setData('expectFirstItem')
+ // “Hack” to prevent a line ending from showing up if the item is empty.
+ setData('lastWasTag')
+ }
+
+ function onexitlistordered() {
+ onexitlistitem()
+ tightStack.pop()
+ lineEnding()
+ tag('</ol>')
+ }
+
+ function onexitlistunordered() {
+ onexitlistitem()
+ tightStack.pop()
+ lineEnding()
+ tag('</ul>')
+ }
+
+ function onexitlistitem() {
+ if (getData('lastWasTag') && !getData('slurpAllLineEndings')) {
+ lineEndingIfNeeded()
+ }
+
+ tag('</li>')
+ setData('slurpAllLineEndings')
+ }
+
+ function onenterblockquote() {
+ tightStack.push(false)
+ lineEndingIfNeeded()
+ tag('<blockquote>')
+ }
+
+ function onexitblockquote() {
+ tightStack.pop()
+ lineEndingIfNeeded()
+ tag('</blockquote>')
+ setData('slurpAllLineEndings')
+ }
+
+ function onenterparagraph() {
+ if (!tightStack[tightStack.length - 1]) {
+ lineEndingIfNeeded()
+ tag('<p>')
+ }
+
+ setData('slurpAllLineEndings')
+ }
+
+ function onexitparagraph() {
+ if (tightStack[tightStack.length - 1]) {
+ setData('slurpAllLineEndings', true)
+ } else {
+ tag('</p>')
+ }
+ }
+
+ function onentercodefenced() {
+ lineEndingIfNeeded()
+ tag('<pre><code')
+ setData('fencesCount', 0)
+ }
+
+ function onexitcodefencedfenceinfo() {
+ var value = resume()
+ tag(' class="language-' + value + '"')
+ }
+
+ function onexitcodefencedfence() {
+ if (!getData('fencesCount')) {
+ tag('>')
+ setData('fencedCodeInside', true)
+ setData('slurpOneLineEnding', true)
+ }
+
+ setData('fencesCount', getData('fencesCount') + 1)
+ }
+
+ function onentercodeindented() {
+ lineEndingIfNeeded()
+ tag('<pre><code>')
+ }
+
+ function onexitflowcode() {
+ // Send an extra line feed if we saw data.
+ if (getData('flowCodeSeenData')) lineEndingIfNeeded()
+ tag('</code></pre>')
+ if (getData('fencesCount') < 2) lineEndingIfNeeded()
+ setData('flowCodeSeenData')
+ setData('fencesCount')
+ setData('slurpOneLineEnding')
+ }
+
+ function onenterimage() {
+ mediaStack.push({image: true})
+ tags = undefined // Disallow tags.
+ }
+
+ function onenterlink() {
+ mediaStack.push({})
+ }
+
+ function onexitlabeltext(token) {
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
+ }
+
+ function onexitlabel() {
+ mediaStack[mediaStack.length - 1].label = resume()
+ }
+
+ function onexitreferencestring(token) {
+ mediaStack[mediaStack.length - 1].referenceId = this.sliceSerialize(token)
+ }
+
+ function onenterresource() {
+ buffer() // We can have line endings in the resource, ignore them.
+ mediaStack[mediaStack.length - 1].destination = ''
+ }
+
+ function onenterresourcedestinationstring() {
+ buffer()
+ // Ignore encoding the result, as we’ll first percent encode the url and
+ // encode manually after.
+ setData('ignoreEncode', true)
+ }
+
+ function onexitresourcedestinationstring() {
+ mediaStack[mediaStack.length - 1].destination = resume()
+ setData('ignoreEncode')
+ }
+
+ function onexitresourcetitlestring() {
+ mediaStack[mediaStack.length - 1].title = resume()
+ }
+
+ function onexitmedia() {
+ var index = mediaStack.length - 1 // Skip current.
+ var media = mediaStack[index]
+ var context =
+ media.destination === undefined
+ ? definitions[normalizeIdentifier(media.referenceId || media.labelId)]
+ : media
+
+ tags = true
+
+ while (index--) {
+ if (mediaStack[index].image) {
+ tags = undefined
+ break
+ }
+ }
+
+ if (media.image) {
+ tag('<img src="' + url(context.destination, protocolSrc) + '" alt="')
+ raw(media.label)
+ tag('"')
+ } else {
+ tag('<a href="' + url(context.destination, protocolHref) + '"')
+ }
+
+ tag(context.title ? ' title="' + context.title + '"' : '')
+
+ if (media.image) {
+ tag(' />')
+ } else {
+ tag('>')
+ raw(media.label)
+ tag('</a>')
+ }
+
+ mediaStack.pop()
+ }
+
+ function onenterdefinition() {
+ buffer()
+ mediaStack.push({})
+ }
+
+ function onexitdefinitionlabelstring(token) {
+ // Discard label, use the source content instead.
+ resume()
+ mediaStack[mediaStack.length - 1].labelId = this.sliceSerialize(token)
+ }
+
+ function onenterdefinitiondestinationstring() {
+ buffer()
+ setData('ignoreEncode', true)
+ }
+
+ function onexitdefinitiondestinationstring() {
+ mediaStack[mediaStack.length - 1].destination = resume()
+ setData('ignoreEncode')
+ }
+
+ function onexitdefinitiontitlestring() {
+ mediaStack[mediaStack.length - 1].title = resume()
+ }
+
+ function onexitdefinition() {
+ var id = normalizeIdentifier(mediaStack[mediaStack.length - 1].labelId)
+
+ resume()
+
+ if (!own.call(definitions, id)) {
+ definitions[id] = mediaStack[mediaStack.length - 1]
+ }
+
+ mediaStack.pop()
+ }
+
+ function onentercontent() {
+ setData('slurpAllLineEndings', true)
+ }
+
+ function onexitatxheadingsequence(token) {
+ // Exit for further sequences.
+ if (getData('headingRank')) return
+ setData('headingRank', this.sliceSerialize(token).length)
+ lineEndingIfNeeded()
+ tag('<h' + getData('headingRank') + '>')
+ }
+
+ function onentersetextheading() {
+ buffer()
+ setData('slurpAllLineEndings')
+ }
+
+ function onexitsetextheadingtext() {
+ setData('slurpAllLineEndings', true)
+ }
+
+ function onexitatxheading() {
+ tag('</h' + getData('headingRank') + '>')
+ setData('headingRank')
+ }
+
+ function onexitsetextheadinglinesequence(token) {
+ setData(
+ 'headingRank',
+ this.sliceSerialize(token).charCodeAt(0) === codes.equalsTo ? 1 : 2
+ )
+ }
+
+ function onexitsetextheading() {
+ var value = resume()
+ lineEndingIfNeeded()
+ tag('<h' + getData('headingRank') + '>')
+ raw(value)
+ tag('</h' + getData('headingRank') + '>')
+ setData('slurpAllLineEndings')
+ setData('headingRank')
+ }
+
+ function onexitdata(token) {
+ raw(encode(this.sliceSerialize(token)))
+ }
+
+ function onexitlineending(token) {
+ if (getData('slurpAllLineEndings')) {
+ return
+ }
+
+ if (getData('slurpOneLineEnding')) {
+ setData('slurpOneLineEnding')
+ return
+ }
+
+ if (getData('inCodeText')) {
+ raw(' ')
+ return
+ }
+
+ raw(encode(this.sliceSerialize(token)))
+ }
+
+ function onexitcodeflowvalue(token) {
+ raw(encode(this.sliceSerialize(token)))
+ setData('flowCodeSeenData', true)
+ }
+
+ function onexithardbreak() {
+ tag('<br />')
+ }
+
+ function onenterhtmlflow() {
+ lineEndingIfNeeded()
+ onenterhtml()
+ }
+
+ function onexithtml() {
+ setData('ignoreEncode')
+ }
+
+ function onenterhtml() {
+ if (settings.allowDangerousHtml) {
+ setData('ignoreEncode', true)
+ }
+ }
+
+ function onenteremphasis() {
+ tag('<em>')
+ }
+
+ function onenterstrong() {
+ tag('<strong>')
+ }
+
+ function onentercodetext() {
+ setData('inCodeText', true)
+ tag('<code>')
+ }
+
+ function onexitcodetext() {
+ setData('inCodeText')
+ tag('</code>')
+ }
+
+ function onexitemphasis() {
+ tag('</em>')
+ }
+
+ function onexitstrong() {
+ tag('</strong>')
+ }
+
+ function onexitthematicbreak() {
+ lineEndingIfNeeded()
+ tag('<hr />')
+ }
+
+ function onexitcharacterreferencemarker(token) {
+ setData('characterReferenceType', token.type)
+ }
+
+ function onexitcharacterreferencevalue(token) {
+ var value = this.sliceSerialize(token)
+
+ value = getData('characterReferenceType')
+ ? safeFromInt(
+ value,
+ getData('characterReferenceType') ===
+ types.characterReferenceMarkerNumeric
+ ? constants.numericBaseDecimal
+ : constants.numericBaseHexadecimal
+ )
+ : decodeEntity(value)
+
+ raw(encode(value))
+ setData('characterReferenceType')
+ }
+
+ function onexitautolinkprotocol(token) {
+ var uri = this.sliceSerialize(token)
+ tag('<a href="' + url(uri, protocolHref) + '">')
+ raw(encode(uri))
+ tag('</a>')
+ }
+
+ function onexitautolinkemail(token) {
+ var uri = this.sliceSerialize(token)
+ tag('<a href="' + url('mailto:' + uri, protocolHref) + '">')
+ raw(encode(uri))
+ tag('</a>')
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.js
new file mode 100644
index 0000000000..b6ae48a090
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var assign = Object.assign
+
+module.exports = assign
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.mjs
new file mode 100644
index 0000000000..8cfbca32c5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/assign.mjs
@@ -0,0 +1 @@
+export default Object.assign
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.js
new file mode 100644
index 0000000000..cd75c0718a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.js
@@ -0,0 +1,45 @@
+'use strict'
+
+// This module is compiled away!
+//
+// Parsing markdown comes with a couple of constants, such as minimum or maximum
+// sizes of certain sequences.
+// Additionally, there are a couple symbols used inside micromark.
+// These are all defined here, but compiled away by scripts.
+var constants = {
+ attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a`
+ attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*`
+ atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t.
+ autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many.
+ autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many.
+ cdataOpeningString: 'CDATA[', // And preceded by `<![`.
+ characterGroupWhitespace: 1, // Symbol used to indicate a character is whitespace
+ characterGroupPunctuation: 2, // Symbol used to indicate a character is whitespace
+ characterReferenceDecimalSizeMax: 7, // `&#9999999;`.
+ characterReferenceHexadecimalSizeMax: 6, // `&#xff9999;`.
+ characterReferenceNamedSizeMax: 31, // `&CounterClockwiseContourIntegral;`.
+ codeFencedSequenceSizeMin: 3, // At least 3 ticks or tildes are needed.
+ contentTypeFlow: 'flow',
+ contentTypeContent: 'content',
+ contentTypeString: 'string',
+ contentTypeText: 'text',
+ hardBreakPrefixSizeMin: 2, // At least 2 trailing spaces are needed.
+ htmlRaw: 1, // Symbol for `<script>`
+ htmlComment: 2, // Symbol for `<!---->`
+ htmlInstruction: 3, // Symbol for `<?php?>`
+ htmlDeclaration: 4, // Symbol for `<!doctype>`
+ htmlCdata: 5, // Symbol for `<![CDATA[]]>`
+ htmlBasic: 6, // Symbol for `<div`
+ htmlComplete: 7, // Symbol for `<x>`
+ htmlRawSizeMax: 8, // Length of `textarea`.
+ linkResourceDestinationBalanceMax: 3, // See: <https://spec.commonmark.org/0.29/#link-destination>
+ linkReferenceSizeMax: 999, // See: <https://spec.commonmark.org/0.29/#link-label>
+ listItemValueSizeMax: 10, // See: <https://spec.commonmark.org/0.29/#ordered-list-marker>
+ numericBaseDecimal: 10,
+ numericBaseHexadecimal: 0x10,
+ tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark.
+ thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed.
+ v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks.
+}
+
+module.exports = constants
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.mjs
new file mode 100644
index 0000000000..65db901767
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/constants.mjs
@@ -0,0 +1,41 @@
+// This module is compiled away!
+//
+// Parsing markdown comes with a couple of constants, such as minimum or maximum
+// sizes of certain sequences.
+// Additionally, there are a couple symbols used inside micromark.
+// These are all defined here, but compiled away by scripts.
+export default {
+ attentionSideBefore: 1, // Symbol to mark an attention sequence as before content: `*a`
+ attentionSideAfter: 2, // Symbol to mark an attention sequence as after content: `a*`
+ atxHeadingOpeningFenceSizeMax: 6, // 6 number signs is fine, 7 isn’t.
+ autolinkDomainSizeMax: 63, // 63 characters is fine, 64 is too many.
+ autolinkSchemeSizeMax: 32, // 32 characters is fine, 33 is too many.
+ cdataOpeningString: 'CDATA[', // And preceded by `<![`.
+ characterGroupWhitespace: 1, // Symbol used to indicate a character is whitespace
+ characterGroupPunctuation: 2, // Symbol used to indicate a character is whitespace
+ characterReferenceDecimalSizeMax: 7, // `&#9999999;`.
+ characterReferenceHexadecimalSizeMax: 6, // `&#xff9999;`.
+ characterReferenceNamedSizeMax: 31, // `&CounterClockwiseContourIntegral;`.
+ codeFencedSequenceSizeMin: 3, // At least 3 ticks or tildes are needed.
+ contentTypeFlow: 'flow',
+ contentTypeContent: 'content',
+ contentTypeString: 'string',
+ contentTypeText: 'text',
+ hardBreakPrefixSizeMin: 2, // At least 2 trailing spaces are needed.
+ htmlRaw: 1, // Symbol for `<script>`
+ htmlComment: 2, // Symbol for `<!---->`
+ htmlInstruction: 3, // Symbol for `<?php?>`
+ htmlDeclaration: 4, // Symbol for `<!doctype>`
+ htmlCdata: 5, // Symbol for `<![CDATA[]]>`
+ htmlBasic: 6, // Symbol for `<div`
+ htmlComplete: 7, // Symbol for `<x>`
+ htmlRawSizeMax: 8, // Length of `textarea`.
+ linkResourceDestinationBalanceMax: 3, // See: <https://spec.commonmark.org/0.29/#link-destination>
+ linkReferenceSizeMax: 999, // See: <https://spec.commonmark.org/0.29/#link-label>
+ listItemValueSizeMax: 10, // See: <https://spec.commonmark.org/0.29/#ordered-list-marker>
+ numericBaseDecimal: 10,
+ numericBaseHexadecimal: 0x10,
+ tabSize: 4, // Tabs have a hard-coded size of 4, per CommonMark.
+ thematicBreakMarkerCountMin: 3, // At least 3 asterisks, dashes, or underscores are needed.
+ v8MaxSafeChunkSize: 10000 // V8 (and potentially others) have problems injecting giant arrays into other arrays, hence we operate in chunks.
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.js
new file mode 100644
index 0000000000..232eac7405
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var fromCharCode = String.fromCharCode
+
+module.exports = fromCharCode
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.mjs
new file mode 100644
index 0000000000..0476a76366
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/from-char-code.mjs
@@ -0,0 +1 @@
+export default String.fromCharCode
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.js
new file mode 100644
index 0000000000..aa9197cd25
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var own = {}.hasOwnProperty
+
+module.exports = own
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.mjs
new file mode 100644
index 0000000000..1da16d6dd4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/has-own-property.mjs
@@ -0,0 +1 @@
+export default {}.hasOwnProperty
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.js
new file mode 100644
index 0000000000..9b5ada73f0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.js
@@ -0,0 +1,69 @@
+'use strict'
+
+// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.
+var basics = [
+ 'address',
+ 'article',
+ 'aside',
+ 'base',
+ 'basefont',
+ 'blockquote',
+ 'body',
+ 'caption',
+ 'center',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'details',
+ 'dialog',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'fieldset',
+ 'figcaption',
+ 'figure',
+ 'footer',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'header',
+ 'hr',
+ 'html',
+ 'iframe',
+ 'legend',
+ 'li',
+ 'link',
+ 'main',
+ 'menu',
+ 'menuitem',
+ 'nav',
+ 'noframes',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'section',
+ 'source',
+ 'summary',
+ 'table',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'title',
+ 'tr',
+ 'track',
+ 'ul'
+]
+
+module.exports = basics
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.mjs
new file mode 100644
index 0000000000..8d974d8f35
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-block-names.mjs
@@ -0,0 +1,65 @@
+// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.
+export default [
+ 'address',
+ 'article',
+ 'aside',
+ 'base',
+ 'basefont',
+ 'blockquote',
+ 'body',
+ 'caption',
+ 'center',
+ 'col',
+ 'colgroup',
+ 'dd',
+ 'details',
+ 'dialog',
+ 'dir',
+ 'div',
+ 'dl',
+ 'dt',
+ 'fieldset',
+ 'figcaption',
+ 'figure',
+ 'footer',
+ 'form',
+ 'frame',
+ 'frameset',
+ 'h1',
+ 'h2',
+ 'h3',
+ 'h4',
+ 'h5',
+ 'h6',
+ 'head',
+ 'header',
+ 'hr',
+ 'html',
+ 'iframe',
+ 'legend',
+ 'li',
+ 'link',
+ 'main',
+ 'menu',
+ 'menuitem',
+ 'nav',
+ 'noframes',
+ 'ol',
+ 'optgroup',
+ 'option',
+ 'p',
+ 'param',
+ 'section',
+ 'source',
+ 'summary',
+ 'table',
+ 'tbody',
+ 'td',
+ 'tfoot',
+ 'th',
+ 'thead',
+ 'title',
+ 'tr',
+ 'track',
+ 'ul'
+]
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.js
new file mode 100644
index 0000000000..c22a395429
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.js
@@ -0,0 +1,6 @@
+'use strict'
+
+// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.
+var raws = ['pre', 'script', 'style', 'textarea']
+
+module.exports = raws
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.mjs
new file mode 100644
index 0000000000..2da5febe3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/html-raw-names.mjs
@@ -0,0 +1,2 @@
+// This module is copied from <https://spec.commonmark.org/0.29/#html-blocks>.
+export default ['pre', 'script', 'style', 'textarea']
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.js
new file mode 100644
index 0000000000..8917210ac7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.js
@@ -0,0 +1,5 @@
+'use strict'
+
+var splice = [].splice
+
+module.exports = splice
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.mjs
new file mode 100644
index 0000000000..482404ddf7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/splice.mjs
@@ -0,0 +1 @@
+export default [].splice
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/types.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/types.js
new file mode 100644
index 0000000000..11d9e4ed1d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/types.js
@@ -0,0 +1,452 @@
+'use strict'
+
+// This module is compiled away!
+//
+// Here is the list of all types of tokens exposed by micromark, with a short
+// explanation of what they include and where they are found.
+// In picking names, generally, the rule is to be as explicit as possible
+// instead of reusing names.
+// For example, there is a `definitionDestination` and a `resourceDestination`,
+// instead of one shared name.
+
+var types = {
+ // Generic type for data, such as in a title, a destination, etc.
+ data: 'data',
+
+ // Generic type for syntactic whitespace (tabs, virtual spaces, spaces).
+ // Such as, between a fenced code fence and an info string.
+ whitespace: 'whitespace',
+
+ // Generic type for line endings (line feed, carriage return, carriage return +
+ // line feed).
+ lineEnding: 'lineEnding',
+
+ // A line ending, but ending a blank line.
+ lineEndingBlank: 'lineEndingBlank',
+
+ // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a
+ // line.
+ linePrefix: 'linePrefix',
+
+ // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a
+ // line.
+ lineSuffix: 'lineSuffix',
+
+ // Whole ATX heading:
+ //
+ // ```markdown
+ // #
+ // ## Alpha
+ // ### Bravo ###
+ // ```
+ //
+ // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`.
+ atxHeading: 'atxHeading',
+
+ // Sequence of number signs in an ATX heading (`###`).
+ atxHeadingSequence: 'atxHeadingSequence',
+
+ // Content in an ATX heading (`alpha`).
+ // Includes text.
+ atxHeadingText: 'atxHeadingText',
+
+ // Whole autolink (`<https://example.com>` or `<admin@example.com>`)
+ // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`.
+ autolink: 'autolink',
+
+ // Email autolink w/o markers (`admin@example.com`)
+ autolinkEmail: 'autolinkEmail',
+
+ // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`).
+ autolinkMarker: 'autolinkMarker',
+
+ // Protocol autolink w/o markers (`https://example.com`)
+ autolinkProtocol: 'autolinkProtocol',
+
+ // A whole character escape (`\-`).
+ // Includes `escapeMarker` and `characterEscapeValue`.
+ characterEscape: 'characterEscape',
+
+ // The escaped character (`-`).
+ characterEscapeValue: 'characterEscapeValue',
+
+ // A whole character reference (`&amp;`, `&#8800;`, or `&#x1D306;`).
+ // Includes `characterReferenceMarker`, an optional
+ // `characterReferenceMarkerNumeric`, in which case an optional
+ // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`.
+ characterReference: 'characterReference',
+
+ // The start or end marker (`&` or `;`).
+ characterReferenceMarker: 'characterReferenceMarker',
+
+ // Mark reference as numeric (`#`).
+ characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric',
+
+ // Mark reference as numeric (`x` or `X`).
+ characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal',
+
+ // Value of character reference w/o markers (`amp`, `8800`, or `1D306`).
+ characterReferenceValue: 'characterReferenceValue',
+
+ // Whole fenced code:
+ //
+ // ````markdown
+ // ```js
+ // alert(1)
+ // ```
+ // ````
+ codeFenced: 'codeFenced',
+
+ // A fenced code fence, including whitespace, sequence, info, and meta
+ // (` ```js `).
+ codeFencedFence: 'codeFencedFence',
+
+ // Sequence of grave accent or tilde characters (` ``` `) in a fence.
+ codeFencedFenceSequence: 'codeFencedFenceSequence',
+
+ // Info word (`js`) in a fence.
+ // Includes string.
+ codeFencedFenceInfo: 'codeFencedFenceInfo',
+
+ // Meta words (`highlight="1"`) in a fence.
+ // Includes string.
+ codeFencedFenceMeta: 'codeFencedFenceMeta',
+
+ // A line of code.
+ codeFlowValue: 'codeFlowValue',
+
+ // Whole indented code:
+ //
+ // ```markdown
+ // alert(1)
+ // ```
+ //
+ // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`.
+ codeIndented: 'codeIndented',
+
+ // A text code (``` `alpha` ```).
+ // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include
+ // `codeTextPadding`.
+ codeText: 'codeText',
+
+ codeTextData: 'codeTextData',
+
+ // A space or line ending right after or before a tick.
+ codeTextPadding: 'codeTextPadding',
+
+ // A text code fence (` `` `).
+ codeTextSequence: 'codeTextSequence',
+
+ // Whole content:
+ //
+ // ```markdown
+ // [a]: b
+ // c
+ // =
+ // d
+ // ```
+ //
+ // Includes `paragraph` and `definition`.
+ content: 'content',
+ // Whole definition:
+ //
+ // ```markdown
+ // [micromark]: https://github.com/micromark/micromark
+ // ```
+ //
+ // Includes `definitionLabel`, `definitionMarker`, `whitespace`,
+ // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`.
+ definition: 'definition',
+
+ // Destination of a definition (`https://github.com/micromark/micromark` or
+ // `<https://github.com/micromark/micromark>`).
+ // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`.
+ definitionDestination: 'definitionDestination',
+
+ // Enclosed destination of a definition
+ // (`<https://github.com/micromark/micromark>`).
+ // Includes `definitionDestinationLiteralMarker` and optionally
+ // `definitionDestinationString`.
+ definitionDestinationLiteral: 'definitionDestinationLiteral',
+
+ // Markers of an enclosed definition destination (`<` or `>`).
+ definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker',
+
+ // Unenclosed destination of a definition
+ // (`https://github.com/micromark/micromark`).
+ // Includes `definitionDestinationString`.
+ definitionDestinationRaw: 'definitionDestinationRaw',
+
+ // Text in an destination (`https://github.com/micromark/micromark`).
+ // Includes string.
+ definitionDestinationString: 'definitionDestinationString',
+
+ // Label of a definition (`[micromark]`).
+ // Includes `definitionLabelMarker` and `definitionLabelString`.
+ definitionLabel: 'definitionLabel',
+
+ // Markers of a definition label (`[` or `]`).
+ definitionLabelMarker: 'definitionLabelMarker',
+
+ // Value of a definition label (`micromark`).
+ // Includes string.
+ definitionLabelString: 'definitionLabelString',
+
+ // Marker between a label and a destination (`:`).
+ definitionMarker: 'definitionMarker',
+
+ // Title of a definition (`"x"`, `'y'`, or `(z)`).
+ // Includes `definitionTitleMarker` and optionally `definitionTitleString`.
+ definitionTitle: 'definitionTitle',
+
+ // Marker around a title of a definition (`"`, `'`, `(`, or `)`).
+ definitionTitleMarker: 'definitionTitleMarker',
+
+ // Data without markers in a title (`z`).
+ // Includes string.
+ definitionTitleString: 'definitionTitleString',
+
+ // Emphasis (`*alpha*`).
+ // Includes `emphasisSequence` and `emphasisText`.
+ emphasis: 'emphasis',
+
+ // Sequence of emphasis markers (`*` or `_`).
+ emphasisSequence: 'emphasisSequence',
+
+ // Emphasis text (`alpha`).
+ // Includes text.
+ emphasisText: 'emphasisText',
+
+ // The character escape marker (`\`).
+ escapeMarker: 'escapeMarker',
+
+ // A hard break created with a backslash (`\\n`).
+ // Includes `escapeMarker` (does not include the line ending)
+ hardBreakEscape: 'hardBreakEscape',
+
+ // A hard break created with trailing spaces (` \n`).
+ // Does not include the line ending.
+ hardBreakTrailing: 'hardBreakTrailing',
+
+ // Flow HTML:
+ //
+ // ```markdown
+ // <div
+ // ```
+ //
+ // Inlcudes `lineEnding`, `htmlFlowData`.
+ htmlFlow: 'htmlFlow',
+
+ htmlFlowData: 'htmlFlowData',
+
+ // HTML in text (the tag in `a <i> b`).
+ // Includes `lineEnding`, `htmlTextData`.
+ htmlText: 'htmlText',
+
+ htmlTextData: 'htmlTextData',
+
+ // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or
+ // `![alpha]`).
+ // Includes `label` and an optional `resource` or `reference`.
+ image: 'image',
+
+ // Whole link label (`[*alpha*]`).
+ // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`.
+ label: 'label',
+
+ // Text in an label (`*alpha*`).
+ // Includes text.
+ labelText: 'labelText',
+
+ // Start a link label (`[`).
+ // Includes a `labelMarker`.
+ labelLink: 'labelLink',
+
+ // Start an image label (`![`).
+ // Includes `labelImageMarker` and `labelMarker`.
+ labelImage: 'labelImage',
+
+ // Marker of a label (`[` or `]`).
+ labelMarker: 'labelMarker',
+
+ // Marker to start an image (`!`).
+ labelImageMarker: 'labelImageMarker',
+
+ // End a label (`]`).
+ // Includes `labelMarker`.
+ labelEnd: 'labelEnd',
+
+ // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`).
+ // Includes `label` and an optional `resource` or `reference`.
+ link: 'link',
+
+ // Whole paragraph:
+ //
+ // ```markdown
+ // alpha
+ // bravo.
+ // ```
+ //
+ // Includes text.
+ paragraph: 'paragraph',
+
+ // A reference (`[alpha]` or `[]`).
+ // Includes `referenceMarker` and an optional `referenceString`.
+ reference: 'reference',
+
+ // A reference marker (`[` or `]`).
+ referenceMarker: 'referenceMarker',
+
+ // Reference text (`alpha`).
+ // Includes string.
+ referenceString: 'referenceString',
+
+ // A resource (`(https://example.com "alpha")`).
+ // Includes `resourceMarker`, an optional `resourceDestination` with an optional
+ // `whitespace` and `resourceTitle`.
+ resource: 'resource',
+
+ // A resource destination (`https://example.com`).
+ // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`.
+ resourceDestination: 'resourceDestination',
+
+ // A literal resource destination (`<https://example.com>`).
+ // Includes `resourceDestinationLiteralMarker` and optionally
+ // `resourceDestinationString`.
+ resourceDestinationLiteral: 'resourceDestinationLiteral',
+
+ // A resource destination marker (`<` or `>`).
+ resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker',
+
+ // A raw resource destination (`https://example.com`).
+ // Includes `resourceDestinationString`.
+ resourceDestinationRaw: 'resourceDestinationRaw',
+
+ // Resource destination text (`https://example.com`).
+ // Includes string.
+ resourceDestinationString: 'resourceDestinationString',
+
+ // A resource marker (`(` or `)`).
+ resourceMarker: 'resourceMarker',
+
+ // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`).
+ // Includes `resourceTitleMarker` and optionally `resourceTitleString`.
+ resourceTitle: 'resourceTitle',
+
+ // A resource title marker (`"`, `'`, `(`, or `)`).
+ resourceTitleMarker: 'resourceTitleMarker',
+
+ // Resource destination title (`alpha`).
+ // Includes string.
+ resourceTitleString: 'resourceTitleString',
+
+ // Whole setext heading:
+ //
+ // ```markdown
+ // alpha
+ // bravo
+ // =====
+ // ```
+ //
+ // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and
+ // `setextHeadingLine`.
+ setextHeading: 'setextHeading',
+
+ // Content in a setext heading (`alpha\nbravo`).
+ // Includes text.
+ setextHeadingText: 'setextHeadingText',
+
+ // Underline in a setext heading, including whitespace suffix (`==`).
+ // Includes `setextHeadingLineSequence`.
+ setextHeadingLine: 'setextHeadingLine',
+
+ // Sequence of equals or dash characters in underline in a setext heading (`-`).
+ setextHeadingLineSequence: 'setextHeadingLineSequence',
+
+ // Strong (`**alpha**`).
+ // Includes `strongSequence` and `strongText`.
+ strong: 'strong',
+
+ // Sequence of strong markers (`**` or `__`).
+ strongSequence: 'strongSequence',
+
+ // Strong text (`alpha`).
+ // Includes text.
+ strongText: 'strongText',
+
+ // Whole thematic break:
+ //
+ // ```markdown
+ // * * *
+ // ```
+ //
+ // Includes `thematicBreakSequence` and `whitespace`.
+ thematicBreak: 'thematicBreak',
+
+ // A sequence of one or more thematic break markers (`***`).
+ thematicBreakSequence: 'thematicBreakSequence',
+
+ // Whole block quote:
+ //
+ // ```markdown
+ // > a
+ // >
+ // > b
+ // ```
+ //
+ // Includes `blockQuotePrefix` and flow.
+ blockQuote: 'blockQuote',
+ // The `>` or `> ` of a block quote.
+ blockQuotePrefix: 'blockQuotePrefix',
+ // The `>` of a block quote prefix.
+ blockQuoteMarker: 'blockQuoteMarker',
+ // The optional ` ` of a block quote prefix.
+ blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace',
+
+ // Whole unordered list:
+ //
+ // ```markdown
+ // - a
+ // b
+ // ```
+ //
+ // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further
+ // lines.
+ listOrdered: 'listOrdered',
+
+ // Whole ordered list:
+ //
+ // ```markdown
+ // 1. a
+ // b
+ // ```
+ //
+ // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further
+ // lines.
+ listUnordered: 'listUnordered',
+
+ // The indent of further list item lines.
+ listItemIndent: 'listItemIndent',
+
+ // A marker, as in, `*`, `+`, `-`, `.`, or `)`.
+ listItemMarker: 'listItemMarker',
+
+ // The thing that starts a list item, such as `1. `.
+ // Includes `listItemValue` if ordered, `listItemMarker`, and
+ // `listItemPrefixWhitespace` (unless followed by a line ending).
+ listItemPrefix: 'listItemPrefix',
+
+ // The whitespace after a marker.
+ listItemPrefixWhitespace: 'listItemPrefixWhitespace',
+
+ // The numerical value of an ordered item.
+ listItemValue: 'listItemValue',
+
+ // Internal types used for subtokenizers, compiled away
+ chunkContent: 'chunkContent',
+ chunkFlow: 'chunkFlow',
+ chunkText: 'chunkText',
+ chunkString: 'chunkString'
+}
+
+module.exports = types
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/types.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/types.mjs
new file mode 100644
index 0000000000..d39d979001
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/types.mjs
@@ -0,0 +1,448 @@
+// This module is compiled away!
+//
+// Here is the list of all types of tokens exposed by micromark, with a short
+// explanation of what they include and where they are found.
+// In picking names, generally, the rule is to be as explicit as possible
+// instead of reusing names.
+// For example, there is a `definitionDestination` and a `resourceDestination`,
+// instead of one shared name.
+
+export default {
+ // Generic type for data, such as in a title, a destination, etc.
+ data: 'data',
+
+ // Generic type for syntactic whitespace (tabs, virtual spaces, spaces).
+ // Such as, between a fenced code fence and an info string.
+ whitespace: 'whitespace',
+
+ // Generic type for line endings (line feed, carriage return, carriage return +
+ // line feed).
+ lineEnding: 'lineEnding',
+
+ // A line ending, but ending a blank line.
+ lineEndingBlank: 'lineEndingBlank',
+
+ // Generic type for whitespace (tabs, virtual spaces, spaces) at the start of a
+ // line.
+ linePrefix: 'linePrefix',
+
+ // Generic type for whitespace (tabs, virtual spaces, spaces) at the end of a
+ // line.
+ lineSuffix: 'lineSuffix',
+
+ // Whole ATX heading:
+ //
+ // ```markdown
+ // #
+ // ## Alpha
+ // ### Bravo ###
+ // ```
+ //
+ // Includes `atxHeadingSequence`, `whitespace`, `atxHeadingText`.
+ atxHeading: 'atxHeading',
+
+ // Sequence of number signs in an ATX heading (`###`).
+ atxHeadingSequence: 'atxHeadingSequence',
+
+ // Content in an ATX heading (`alpha`).
+ // Includes text.
+ atxHeadingText: 'atxHeadingText',
+
+ // Whole autolink (`<https://example.com>` or `<admin@example.com>`)
+ // Includes `autolinkMarker` and `autolinkProtocol` or `autolinkEmail`.
+ autolink: 'autolink',
+
+ // Email autolink w/o markers (`admin@example.com`)
+ autolinkEmail: 'autolinkEmail',
+
+ // Marker around an `autolinkProtocol` or `autolinkEmail` (`<` or `>`).
+ autolinkMarker: 'autolinkMarker',
+
+ // Protocol autolink w/o markers (`https://example.com`)
+ autolinkProtocol: 'autolinkProtocol',
+
+ // A whole character escape (`\-`).
+ // Includes `escapeMarker` and `characterEscapeValue`.
+ characterEscape: 'characterEscape',
+
+ // The escaped character (`-`).
+ characterEscapeValue: 'characterEscapeValue',
+
+ // A whole character reference (`&amp;`, `&#8800;`, or `&#x1D306;`).
+ // Includes `characterReferenceMarker`, an optional
+ // `characterReferenceMarkerNumeric`, in which case an optional
+ // `characterReferenceMarkerHexadecimal`, and a `characterReferenceValue`.
+ characterReference: 'characterReference',
+
+ // The start or end marker (`&` or `;`).
+ characterReferenceMarker: 'characterReferenceMarker',
+
+ // Mark reference as numeric (`#`).
+ characterReferenceMarkerNumeric: 'characterReferenceMarkerNumeric',
+
+ // Mark reference as numeric (`x` or `X`).
+ characterReferenceMarkerHexadecimal: 'characterReferenceMarkerHexadecimal',
+
+ // Value of character reference w/o markers (`amp`, `8800`, or `1D306`).
+ characterReferenceValue: 'characterReferenceValue',
+
+ // Whole fenced code:
+ //
+ // ````markdown
+ // ```js
+ // alert(1)
+ // ```
+ // ````
+ codeFenced: 'codeFenced',
+
+ // A fenced code fence, including whitespace, sequence, info, and meta
+ // (` ```js `).
+ codeFencedFence: 'codeFencedFence',
+
+ // Sequence of grave accent or tilde characters (` ``` `) in a fence.
+ codeFencedFenceSequence: 'codeFencedFenceSequence',
+
+ // Info word (`js`) in a fence.
+ // Includes string.
+ codeFencedFenceInfo: 'codeFencedFenceInfo',
+
+ // Meta words (`highlight="1"`) in a fence.
+ // Includes string.
+ codeFencedFenceMeta: 'codeFencedFenceMeta',
+
+ // A line of code.
+ codeFlowValue: 'codeFlowValue',
+
+ // Whole indented code:
+ //
+ // ```markdown
+ // alert(1)
+ // ```
+ //
+ // Includes `lineEnding`, `linePrefix`, and `codeFlowValue`.
+ codeIndented: 'codeIndented',
+
+ // A text code (``` `alpha` ```).
+ // Includes `codeTextSequence`, `codeTextData`, `lineEnding`, and can include
+ // `codeTextPadding`.
+ codeText: 'codeText',
+
+ codeTextData: 'codeTextData',
+
+ // A space or line ending right after or before a tick.
+ codeTextPadding: 'codeTextPadding',
+
+ // A text code fence (` `` `).
+ codeTextSequence: 'codeTextSequence',
+
+ // Whole content:
+ //
+ // ```markdown
+ // [a]: b
+ // c
+ // =
+ // d
+ // ```
+ //
+ // Includes `paragraph` and `definition`.
+ content: 'content',
+ // Whole definition:
+ //
+ // ```markdown
+ // [micromark]: https://github.com/micromark/micromark
+ // ```
+ //
+ // Includes `definitionLabel`, `definitionMarker`, `whitespace`,
+ // `definitionDestination`, and optionally `lineEnding` and `definitionTitle`.
+ definition: 'definition',
+
+ // Destination of a definition (`https://github.com/micromark/micromark` or
+ // `<https://github.com/micromark/micromark>`).
+ // Includes `definitionDestinationLiteral` or `definitionDestinationRaw`.
+ definitionDestination: 'definitionDestination',
+
+ // Enclosed destination of a definition
+ // (`<https://github.com/micromark/micromark>`).
+ // Includes `definitionDestinationLiteralMarker` and optionally
+ // `definitionDestinationString`.
+ definitionDestinationLiteral: 'definitionDestinationLiteral',
+
+ // Markers of an enclosed definition destination (`<` or `>`).
+ definitionDestinationLiteralMarker: 'definitionDestinationLiteralMarker',
+
+ // Unenclosed destination of a definition
+ // (`https://github.com/micromark/micromark`).
+ // Includes `definitionDestinationString`.
+ definitionDestinationRaw: 'definitionDestinationRaw',
+
+ // Text in an destination (`https://github.com/micromark/micromark`).
+ // Includes string.
+ definitionDestinationString: 'definitionDestinationString',
+
+ // Label of a definition (`[micromark]`).
+ // Includes `definitionLabelMarker` and `definitionLabelString`.
+ definitionLabel: 'definitionLabel',
+
+ // Markers of a definition label (`[` or `]`).
+ definitionLabelMarker: 'definitionLabelMarker',
+
+ // Value of a definition label (`micromark`).
+ // Includes string.
+ definitionLabelString: 'definitionLabelString',
+
+ // Marker between a label and a destination (`:`).
+ definitionMarker: 'definitionMarker',
+
+ // Title of a definition (`"x"`, `'y'`, or `(z)`).
+ // Includes `definitionTitleMarker` and optionally `definitionTitleString`.
+ definitionTitle: 'definitionTitle',
+
+ // Marker around a title of a definition (`"`, `'`, `(`, or `)`).
+ definitionTitleMarker: 'definitionTitleMarker',
+
+ // Data without markers in a title (`z`).
+ // Includes string.
+ definitionTitleString: 'definitionTitleString',
+
+ // Emphasis (`*alpha*`).
+ // Includes `emphasisSequence` and `emphasisText`.
+ emphasis: 'emphasis',
+
+ // Sequence of emphasis markers (`*` or `_`).
+ emphasisSequence: 'emphasisSequence',
+
+ // Emphasis text (`alpha`).
+ // Includes text.
+ emphasisText: 'emphasisText',
+
+ // The character escape marker (`\`).
+ escapeMarker: 'escapeMarker',
+
+ // A hard break created with a backslash (`\\n`).
+ // Includes `escapeMarker` (does not include the line ending)
+ hardBreakEscape: 'hardBreakEscape',
+
+ // A hard break created with trailing spaces (` \n`).
+ // Does not include the line ending.
+ hardBreakTrailing: 'hardBreakTrailing',
+
+ // Flow HTML:
+ //
+ // ```markdown
+ // <div
+ // ```
+ //
+ // Inlcudes `lineEnding`, `htmlFlowData`.
+ htmlFlow: 'htmlFlow',
+
+ htmlFlowData: 'htmlFlowData',
+
+ // HTML in text (the tag in `a <i> b`).
+ // Includes `lineEnding`, `htmlTextData`.
+ htmlText: 'htmlText',
+
+ htmlTextData: 'htmlTextData',
+
+ // Whole image (`![alpha](bravo)`, `![alpha][bravo]`, `![alpha][]`, or
+ // `![alpha]`).
+ // Includes `label` and an optional `resource` or `reference`.
+ image: 'image',
+
+ // Whole link label (`[*alpha*]`).
+ // Includes `labelLink` or `labelImage`, `labelText`, and `labelEnd`.
+ label: 'label',
+
+ // Text in an label (`*alpha*`).
+ // Includes text.
+ labelText: 'labelText',
+
+ // Start a link label (`[`).
+ // Includes a `labelMarker`.
+ labelLink: 'labelLink',
+
+ // Start an image label (`![`).
+ // Includes `labelImageMarker` and `labelMarker`.
+ labelImage: 'labelImage',
+
+ // Marker of a label (`[` or `]`).
+ labelMarker: 'labelMarker',
+
+ // Marker to start an image (`!`).
+ labelImageMarker: 'labelImageMarker',
+
+ // End a label (`]`).
+ // Includes `labelMarker`.
+ labelEnd: 'labelEnd',
+
+ // Whole link (`[alpha](bravo)`, `[alpha][bravo]`, `[alpha][]`, or `[alpha]`).
+ // Includes `label` and an optional `resource` or `reference`.
+ link: 'link',
+
+ // Whole paragraph:
+ //
+ // ```markdown
+ // alpha
+ // bravo.
+ // ```
+ //
+ // Includes text.
+ paragraph: 'paragraph',
+
+ // A reference (`[alpha]` or `[]`).
+ // Includes `referenceMarker` and an optional `referenceString`.
+ reference: 'reference',
+
+ // A reference marker (`[` or `]`).
+ referenceMarker: 'referenceMarker',
+
+ // Reference text (`alpha`).
+ // Includes string.
+ referenceString: 'referenceString',
+
+ // A resource (`(https://example.com "alpha")`).
+ // Includes `resourceMarker`, an optional `resourceDestination` with an optional
+ // `whitespace` and `resourceTitle`.
+ resource: 'resource',
+
+ // A resource destination (`https://example.com`).
+ // Includes `resourceDestinationLiteral` or `resourceDestinationRaw`.
+ resourceDestination: 'resourceDestination',
+
+ // A literal resource destination (`<https://example.com>`).
+ // Includes `resourceDestinationLiteralMarker` and optionally
+ // `resourceDestinationString`.
+ resourceDestinationLiteral: 'resourceDestinationLiteral',
+
+ // A resource destination marker (`<` or `>`).
+ resourceDestinationLiteralMarker: 'resourceDestinationLiteralMarker',
+
+ // A raw resource destination (`https://example.com`).
+ // Includes `resourceDestinationString`.
+ resourceDestinationRaw: 'resourceDestinationRaw',
+
+ // Resource destination text (`https://example.com`).
+ // Includes string.
+ resourceDestinationString: 'resourceDestinationString',
+
+ // A resource marker (`(` or `)`).
+ resourceMarker: 'resourceMarker',
+
+ // A resource title (`"alpha"`, `'alpha'`, or `(alpha)`).
+ // Includes `resourceTitleMarker` and optionally `resourceTitleString`.
+ resourceTitle: 'resourceTitle',
+
+ // A resource title marker (`"`, `'`, `(`, or `)`).
+ resourceTitleMarker: 'resourceTitleMarker',
+
+ // Resource destination title (`alpha`).
+ // Includes string.
+ resourceTitleString: 'resourceTitleString',
+
+ // Whole setext heading:
+ //
+ // ```markdown
+ // alpha
+ // bravo
+ // =====
+ // ```
+ //
+ // Includes `setextHeadingText`, `lineEnding`, `linePrefix`, and
+ // `setextHeadingLine`.
+ setextHeading: 'setextHeading',
+
+ // Content in a setext heading (`alpha\nbravo`).
+ // Includes text.
+ setextHeadingText: 'setextHeadingText',
+
+ // Underline in a setext heading, including whitespace suffix (`==`).
+ // Includes `setextHeadingLineSequence`.
+ setextHeadingLine: 'setextHeadingLine',
+
+ // Sequence of equals or dash characters in underline in a setext heading (`-`).
+ setextHeadingLineSequence: 'setextHeadingLineSequence',
+
+ // Strong (`**alpha**`).
+ // Includes `strongSequence` and `strongText`.
+ strong: 'strong',
+
+ // Sequence of strong markers (`**` or `__`).
+ strongSequence: 'strongSequence',
+
+ // Strong text (`alpha`).
+ // Includes text.
+ strongText: 'strongText',
+
+ // Whole thematic break:
+ //
+ // ```markdown
+ // * * *
+ // ```
+ //
+ // Includes `thematicBreakSequence` and `whitespace`.
+ thematicBreak: 'thematicBreak',
+
+ // A sequence of one or more thematic break markers (`***`).
+ thematicBreakSequence: 'thematicBreakSequence',
+
+ // Whole block quote:
+ //
+ // ```markdown
+ // > a
+ // >
+ // > b
+ // ```
+ //
+ // Includes `blockQuotePrefix` and flow.
+ blockQuote: 'blockQuote',
+ // The `>` or `> ` of a block quote.
+ blockQuotePrefix: 'blockQuotePrefix',
+ // The `>` of a block quote prefix.
+ blockQuoteMarker: 'blockQuoteMarker',
+ // The optional ` ` of a block quote prefix.
+ blockQuotePrefixWhitespace: 'blockQuotePrefixWhitespace',
+
+ // Whole unordered list:
+ //
+ // ```markdown
+ // - a
+ // b
+ // ```
+ //
+ // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further
+ // lines.
+ listOrdered: 'listOrdered',
+
+ // Whole ordered list:
+ //
+ // ```markdown
+ // 1. a
+ // b
+ // ```
+ //
+ // Includes `listItemPrefix`, flow, and optionally `listItemIndent` on further
+ // lines.
+ listUnordered: 'listUnordered',
+
+ // The indent of further list item lines.
+ listItemIndent: 'listItemIndent',
+
+ // A marker, as in, `*`, `+`, `-`, `.`, or `)`.
+ listItemMarker: 'listItemMarker',
+
+ // The thing that starts a list item, such as `1. `.
+ // Includes `listItemValue` if ordered, `listItemMarker`, and
+ // `listItemPrefixWhitespace` (unless followed by a line ending).
+ listItemPrefix: 'listItemPrefix',
+
+ // The whitespace after a marker.
+ listItemPrefixWhitespace: 'listItemPrefixWhitespace',
+
+ // The numerical value of an ordered item.
+ listItemValue: 'listItemValue',
+
+ // Internal types used for subtokenizers, compiled away
+ chunkContent: 'chunkContent',
+ chunkFlow: 'chunkFlow',
+ chunkText: 'chunkText',
+ chunkString: 'chunkString'
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.js b/tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.js
new file mode 100644
index 0000000000..6d25ee4bae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.js
@@ -0,0 +1,11 @@
+'use strict'
+
+// This module is generated by `script/`.
+//
+// CommonMark handles attention (emphasis, strong) markers based on what comes
+// before or after them.
+// One such difference is if those characters are Unicode punctuation.
+// This script is generated from the Unicode data.
+var unicodePunctuation = /[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/
+
+module.exports = unicodePunctuation
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.mjs
new file mode 100644
index 0000000000..3b6ac3f16c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constant/unicode-punctuation-regex.mjs
@@ -0,0 +1,7 @@
+// This module is generated by `script/`.
+//
+// CommonMark handles attention (emphasis, strong) markers based on what comes
+// before or after them.
+// One such difference is if those characters are Unicode punctuation.
+// This script is generated from the Unicode data.
+export default /[!-/:-@[-`{-~\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constructs.js b/tools/node_modules/eslint/node_modules/micromark/lib/constructs.js
new file mode 100644
index 0000000000..d9e5ae1b52
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constructs.js
@@ -0,0 +1,98 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var text$1 = require('./initialize/text.js')
+var attention = require('./tokenize/attention.js')
+var autolink = require('./tokenize/autolink.js')
+var blockQuote = require('./tokenize/block-quote.js')
+var characterEscape = require('./tokenize/character-escape.js')
+var characterReference = require('./tokenize/character-reference.js')
+var codeFenced = require('./tokenize/code-fenced.js')
+var codeIndented = require('./tokenize/code-indented.js')
+var codeText = require('./tokenize/code-text.js')
+var definition = require('./tokenize/definition.js')
+var hardBreakEscape = require('./tokenize/hard-break-escape.js')
+var headingAtx = require('./tokenize/heading-atx.js')
+var htmlFlow = require('./tokenize/html-flow.js')
+var htmlText = require('./tokenize/html-text.js')
+var labelEnd = require('./tokenize/label-end.js')
+var labelStartImage = require('./tokenize/label-start-image.js')
+var labelStartLink = require('./tokenize/label-start-link.js')
+var lineEnding = require('./tokenize/line-ending.js')
+var list = require('./tokenize/list.js')
+var setextUnderline = require('./tokenize/setext-underline.js')
+var thematicBreak = require('./tokenize/thematic-break.js')
+
+var document = {
+ 42: list, // Asterisk
+ 43: list, // Plus sign
+ 45: list, // Dash
+ 48: list, // 0
+ 49: list, // 1
+ 50: list, // 2
+ 51: list, // 3
+ 52: list, // 4
+ 53: list, // 5
+ 54: list, // 6
+ 55: list, // 7
+ 56: list, // 8
+ 57: list, // 9
+ 62: blockQuote // Greater than
+}
+
+var contentInitial = {
+ 91: definition // Left square bracket
+}
+
+var flowInitial = {
+ '-2': codeIndented, // Horizontal tab
+ '-1': codeIndented, // Virtual space
+ 32: codeIndented // Space
+}
+
+var flow = {
+ 35: headingAtx, // Number sign
+ 42: thematicBreak, // Asterisk
+ 45: [setextUnderline, thematicBreak], // Dash
+ 60: htmlFlow, // Less than
+ 61: setextUnderline, // Equals to
+ 95: thematicBreak, // Underscore
+ 96: codeFenced, // Grave accent
+ 126: codeFenced // Tilde
+}
+
+var string = {
+ 38: characterReference, // Ampersand
+ 92: characterEscape // Backslash
+}
+
+var text = {
+ '-5': lineEnding, // Carriage return
+ '-4': lineEnding, // Line feed
+ '-3': lineEnding, // Carriage return + line feed
+ 33: labelStartImage, // Exclamation mark
+ 38: characterReference, // Ampersand
+ 42: attention, // Asterisk
+ 60: [autolink, htmlText], // Less than
+ 91: labelStartLink, // Left square bracket
+ 92: [hardBreakEscape, characterEscape], // Backslash
+ 93: labelEnd, // Right square bracket
+ 95: attention, // Underscore
+ 96: codeText // Grave accent
+}
+
+var insideSpan = {
+ null: [attention, text$1.resolver]
+}
+
+var disable = {null: []}
+
+exports.contentInitial = contentInitial
+exports.disable = disable
+exports.document = document
+exports.flow = flow
+exports.flowInitial = flowInitial
+exports.insideSpan = insideSpan
+exports.string = string
+exports.text = text
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/constructs.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/constructs.mjs
new file mode 100644
index 0000000000..e52c3df349
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/constructs.mjs
@@ -0,0 +1,85 @@
+import {resolver as resolveText} from './initialize/text.mjs'
+import attention from './tokenize/attention.mjs'
+import autolink from './tokenize/autolink.mjs'
+import blockQuote from './tokenize/block-quote.mjs'
+import characterEscape from './tokenize/character-escape.mjs'
+import characterReference from './tokenize/character-reference.mjs'
+import codeFenced from './tokenize/code-fenced.mjs'
+import codeIndented from './tokenize/code-indented.mjs'
+import codeText from './tokenize/code-text.mjs'
+import definition from './tokenize/definition.mjs'
+import hardBreakEscape from './tokenize/hard-break-escape.mjs'
+import headingAtx from './tokenize/heading-atx.mjs'
+import htmlFlow from './tokenize/html-flow.mjs'
+import htmlText from './tokenize/html-text.mjs'
+import labelEnd from './tokenize/label-end.mjs'
+import labelImage from './tokenize/label-start-image.mjs'
+import labelLink from './tokenize/label-start-link.mjs'
+import lineEnding from './tokenize/line-ending.mjs'
+import list from './tokenize/list.mjs'
+import setextUnderline from './tokenize/setext-underline.mjs'
+import thematicBreak from './tokenize/thematic-break.mjs'
+
+export var document = {
+ 42: list, // Asterisk
+ 43: list, // Plus sign
+ 45: list, // Dash
+ 48: list, // 0
+ 49: list, // 1
+ 50: list, // 2
+ 51: list, // 3
+ 52: list, // 4
+ 53: list, // 5
+ 54: list, // 6
+ 55: list, // 7
+ 56: list, // 8
+ 57: list, // 9
+ 62: blockQuote // Greater than
+}
+
+export var contentInitial = {
+ 91: definition // Left square bracket
+}
+
+export var flowInitial = {
+ '-2': codeIndented, // Horizontal tab
+ '-1': codeIndented, // Virtual space
+ 32: codeIndented // Space
+}
+
+export var flow = {
+ 35: headingAtx, // Number sign
+ 42: thematicBreak, // Asterisk
+ 45: [setextUnderline, thematicBreak], // Dash
+ 60: htmlFlow, // Less than
+ 61: setextUnderline, // Equals to
+ 95: thematicBreak, // Underscore
+ 96: codeFenced, // Grave accent
+ 126: codeFenced // Tilde
+}
+
+export var string = {
+ 38: characterReference, // Ampersand
+ 92: characterEscape // Backslash
+}
+
+export var text = {
+ '-5': lineEnding, // Carriage return
+ '-4': lineEnding, // Line feed
+ '-3': lineEnding, // Carriage return + line feed
+ 33: labelImage, // Exclamation mark
+ 38: characterReference, // Ampersand
+ 42: attention, // Asterisk
+ 60: [autolink, htmlText], // Less than
+ 91: labelLink, // Left square bracket
+ 92: [hardBreakEscape, characterEscape], // Backslash
+ 93: labelEnd, // Right square bracket
+ 95: attention, // Underscore
+ 96: codeText // Grave accent
+}
+
+export var insideSpan = {
+ null: [attention, resolveText]
+}
+
+export var disable = {null: []}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/index.js b/tools/node_modules/eslint/node_modules/micromark/lib/index.js
new file mode 100644
index 0000000000..8b289a298f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/index.js
@@ -0,0 +1,21 @@
+'use strict'
+
+var html = require('./compile/html.js')
+var parse = require('./parse.js')
+var postprocess = require('./postprocess.js')
+var preprocess = require('./preprocess.js')
+
+function buffer(value, encoding, options) {
+ if (typeof encoding !== 'string') {
+ options = encoding
+ encoding = undefined
+ }
+
+ return html(options)(
+ postprocess(
+ parse(options).document().write(preprocess()(value, encoding, true))
+ )
+ )
+}
+
+module.exports = buffer
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/index.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/index.mjs
new file mode 100644
index 0000000000..2f8db57c39
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/index.mjs
@@ -0,0 +1,19 @@
+export default buffer
+
+import compiler from './compile/html.mjs'
+import parser from './parse.mjs'
+import postprocess from './postprocess.mjs'
+import preprocessor from './preprocess.mjs'
+
+function buffer(value, encoding, options) {
+ if (typeof encoding !== 'string') {
+ options = encoding
+ encoding = undefined
+ }
+
+ return compiler(options)(
+ postprocess(
+ parser(options).document().write(preprocessor()(value, encoding, true))
+ )
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.js b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.js
new file mode 100644
index 0000000000..75922234a3
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.js
@@ -0,0 +1,91 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var factorySpace = require('../tokenize/factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var tokenize = initializeContent
+
+function initializeContent(effects) {
+ var contentStart = effects.attempt(
+ this.parser.constructs.contentInitial,
+ afterContentStartConstruct,
+ paragraphInitial
+ )
+ var previous
+
+ return contentStart
+
+ function afterContentStartConstruct(code) {
+ assert__default['default'](
+ code === codes.eof || markdownLineEnding(code),
+ 'expected eol or eof'
+ )
+
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return factorySpace(effects, contentStart, types.linePrefix)
+ }
+
+ function paragraphInitial(code) {
+ assert__default['default'](
+ code !== codes.eof && !markdownLineEnding(code),
+ 'expected anything other than a line ending or EOF'
+ )
+ effects.enter(types.paragraph)
+ return lineStart(code)
+ }
+
+ function lineStart(code) {
+ var token = effects.enter(types.chunkText, {
+ contentType: constants.contentTypeText,
+ previous: previous
+ })
+
+ if (previous) {
+ previous.next = token
+ }
+
+ previous = token
+
+ return data(code)
+ }
+
+ function data(code) {
+ if (code === codes.eof) {
+ effects.exit(types.chunkText)
+ effects.exit(types.paragraph)
+ effects.consume(code)
+ return
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.consume(code)
+ effects.exit(types.chunkText)
+ return lineStart
+ }
+
+ // Data.
+ effects.consume(code)
+ return data
+ }
+}
+
+exports.tokenize = tokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.mjs
new file mode 100644
index 0000000000..73a9c41311
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/content.mjs
@@ -0,0 +1,79 @@
+export var tokenize = initializeContent
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from '../tokenize/factory-space.mjs'
+
+function initializeContent(effects) {
+ var contentStart = effects.attempt(
+ this.parser.constructs.contentInitial,
+ afterContentStartConstruct,
+ paragraphInitial
+ )
+ var previous
+
+ return contentStart
+
+ function afterContentStartConstruct(code) {
+ assert(
+ code === codes.eof || markdownLineEnding(code),
+ 'expected eol or eof'
+ )
+
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return spaceFactory(effects, contentStart, types.linePrefix)
+ }
+
+ function paragraphInitial(code) {
+ assert(
+ code !== codes.eof && !markdownLineEnding(code),
+ 'expected anything other than a line ending or EOF'
+ )
+ effects.enter(types.paragraph)
+ return lineStart(code)
+ }
+
+ function lineStart(code) {
+ var token = effects.enter(types.chunkText, {
+ contentType: constants.contentTypeText,
+ previous: previous
+ })
+
+ if (previous) {
+ previous.next = token
+ }
+
+ previous = token
+
+ return data(code)
+ }
+
+ function data(code) {
+ if (code === codes.eof) {
+ effects.exit(types.chunkText)
+ effects.exit(types.paragraph)
+ effects.consume(code)
+ return
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.consume(code)
+ effects.exit(types.chunkText)
+ return lineStart
+ }
+
+ // Data.
+ effects.consume(code)
+ return data
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.js b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.js
new file mode 100644
index 0000000000..fae240f744
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.js
@@ -0,0 +1,245 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var factorySpace = require('../tokenize/factory-space.js')
+var partialBlankLine = require('../tokenize/partial-blank-line.js')
+
+var tokenize = initializeDocument
+
+var containerConstruct = {tokenize: tokenizeContainer}
+var lazyFlowConstruct = {tokenize: tokenizeLazyFlow}
+
+function initializeDocument(effects) {
+ var self = this
+ var stack = []
+ var continued = 0
+ var inspectConstruct = {tokenize: tokenizeInspect, partial: true}
+ var inspectResult
+ var childFlow
+ var childToken
+
+ return start
+
+ function start(code) {
+ if (continued < stack.length) {
+ self.containerState = stack[continued][1]
+ return effects.attempt(
+ stack[continued][0].continuation,
+ documentContinue,
+ documentContinued
+ )(code)
+ }
+
+ return documentContinued(code)
+ }
+
+ function documentContinue(code) {
+ continued++
+ return start(code)
+ }
+
+ function documentContinued(code) {
+ // If we’re in a concrete construct (such as when expecting another line of
+ // HTML, or we resulted in lazy content), we can immediately start flow.
+ if (inspectResult && inspectResult.flowContinue) {
+ return flowStart(code)
+ }
+
+ self.interrupt =
+ childFlow &&
+ childFlow.currentConstruct &&
+ childFlow.currentConstruct.interruptible
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ containerContinue,
+ flowStart
+ )(code)
+ }
+
+ function containerContinue(code) {
+ stack.push([self.currentConstruct, self.containerState])
+ self.containerState = undefined
+ return documentContinued(code)
+ }
+
+ function flowStart(code) {
+ if (code === codes.eof) {
+ exitContainers(0, true)
+ effects.consume(code)
+ return
+ }
+
+ childFlow = childFlow || self.parser.flow(self.now())
+
+ effects.enter(types.chunkFlow, {
+ contentType: constants.contentTypeFlow,
+ previous: childToken,
+ _tokenizer: childFlow
+ })
+
+ return flowContinue(code)
+ }
+
+ function flowContinue(code) {
+ if (code === codes.eof) {
+ continueFlow(effects.exit(types.chunkFlow))
+ return flowStart(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.consume(code)
+ continueFlow(effects.exit(types.chunkFlow))
+ return effects.check(inspectConstruct, documentAfterPeek)
+ }
+
+ effects.consume(code)
+ return flowContinue
+ }
+
+ function documentAfterPeek(code) {
+ exitContainers(
+ inspectResult.continued,
+ inspectResult && inspectResult.flowEnd
+ )
+ continued = 0
+ return start(code)
+ }
+
+ function continueFlow(token) {
+ if (childToken) childToken.next = token
+ childToken = token
+ childFlow.lazy = inspectResult && inspectResult.lazy
+ childFlow.defineSkip(token.start)
+ childFlow.write(self.sliceStream(token))
+ }
+
+ function exitContainers(size, end) {
+ var index = stack.length
+
+ // Close the flow.
+ if (childFlow && end) {
+ childFlow.write([codes.eof])
+ childToken = childFlow = undefined
+ }
+
+ // Exit open containers.
+ while (index-- > size) {
+ self.containerState = stack[index][1]
+ stack[index][0].exit.call(self, effects)
+ }
+
+ stack.length = size
+ }
+
+ function tokenizeInspect(effects, ok) {
+ var subcontinued = 0
+
+ inspectResult = {}
+
+ return inspectStart
+
+ function inspectStart(code) {
+ if (subcontinued < stack.length) {
+ self.containerState = stack[subcontinued][1]
+ return effects.attempt(
+ stack[subcontinued][0].continuation,
+ inspectContinue,
+ inspectLess
+ )(code)
+ }
+
+ // If we’re continued but in a concrete flow, we can’t have more
+ // containers.
+ if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {
+ inspectResult.flowContinue = true
+ return inspectDone(code)
+ }
+
+ self.interrupt =
+ childFlow.currentConstruct && childFlow.currentConstruct.interruptible
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ inspectFlowEnd,
+ inspectDone
+ )(code)
+ }
+
+ function inspectContinue(code) {
+ subcontinued++
+ return self.containerState._closeFlow
+ ? inspectFlowEnd(code)
+ : inspectStart(code)
+ }
+
+ function inspectLess(code) {
+ if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {
+ // Maybe another container?
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ inspectFlowEnd,
+ // Maybe flow, or a blank line?
+ effects.attempt(
+ lazyFlowConstruct,
+ inspectFlowEnd,
+ effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)
+ )
+ )(code)
+ }
+
+ // Otherwise we’re interrupting.
+ return inspectFlowEnd(code)
+ }
+
+ function inspectLazy(code) {
+ // Act as if all containers are continued.
+ subcontinued = stack.length
+ inspectResult.lazy = true
+ inspectResult.flowContinue = true
+ return inspectDone(code)
+ }
+
+ // We’re done with flow if we have more containers, or an interruption.
+ function inspectFlowEnd(code) {
+ inspectResult.flowEnd = true
+ return inspectDone(code)
+ }
+
+ function inspectDone(code) {
+ inspectResult.continued = subcontinued
+ self.interrupt = self.containerState = undefined
+ return ok(code)
+ }
+ }
+}
+
+function tokenizeContainer(effects, ok, nok) {
+ return factorySpace(
+ effects,
+ effects.attempt(this.parser.constructs.document, ok, nok),
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+}
+
+function tokenizeLazyFlow(effects, ok, nok) {
+ return factorySpace(
+ effects,
+ effects.lazy(this.parser.constructs.flow, ok, nok),
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+}
+
+exports.tokenize = tokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.mjs
new file mode 100644
index 0000000000..9b084f3cd5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/document.mjs
@@ -0,0 +1,239 @@
+export var tokenize = initializeDocument
+
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from '../tokenize/factory-space.mjs'
+import blank from '../tokenize/partial-blank-line.mjs'
+
+var containerConstruct = {tokenize: tokenizeContainer}
+var lazyFlowConstruct = {tokenize: tokenizeLazyFlow}
+
+function initializeDocument(effects) {
+ var self = this
+ var stack = []
+ var continued = 0
+ var inspectConstruct = {tokenize: tokenizeInspect, partial: true}
+ var inspectResult
+ var childFlow
+ var childToken
+
+ return start
+
+ function start(code) {
+ if (continued < stack.length) {
+ self.containerState = stack[continued][1]
+ return effects.attempt(
+ stack[continued][0].continuation,
+ documentContinue,
+ documentContinued
+ )(code)
+ }
+
+ return documentContinued(code)
+ }
+
+ function documentContinue(code) {
+ continued++
+ return start(code)
+ }
+
+ function documentContinued(code) {
+ // If we’re in a concrete construct (such as when expecting another line of
+ // HTML, or we resulted in lazy content), we can immediately start flow.
+ if (inspectResult && inspectResult.flowContinue) {
+ return flowStart(code)
+ }
+
+ self.interrupt =
+ childFlow &&
+ childFlow.currentConstruct &&
+ childFlow.currentConstruct.interruptible
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ containerContinue,
+ flowStart
+ )(code)
+ }
+
+ function containerContinue(code) {
+ stack.push([self.currentConstruct, self.containerState])
+ self.containerState = undefined
+ return documentContinued(code)
+ }
+
+ function flowStart(code) {
+ if (code === codes.eof) {
+ exitContainers(0, true)
+ effects.consume(code)
+ return
+ }
+
+ childFlow = childFlow || self.parser.flow(self.now())
+
+ effects.enter(types.chunkFlow, {
+ contentType: constants.contentTypeFlow,
+ previous: childToken,
+ _tokenizer: childFlow
+ })
+
+ return flowContinue(code)
+ }
+
+ function flowContinue(code) {
+ if (code === codes.eof) {
+ continueFlow(effects.exit(types.chunkFlow))
+ return flowStart(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.consume(code)
+ continueFlow(effects.exit(types.chunkFlow))
+ return effects.check(inspectConstruct, documentAfterPeek)
+ }
+
+ effects.consume(code)
+ return flowContinue
+ }
+
+ function documentAfterPeek(code) {
+ exitContainers(
+ inspectResult.continued,
+ inspectResult && inspectResult.flowEnd
+ )
+ continued = 0
+ return start(code)
+ }
+
+ function continueFlow(token) {
+ if (childToken) childToken.next = token
+ childToken = token
+ childFlow.lazy = inspectResult && inspectResult.lazy
+ childFlow.defineSkip(token.start)
+ childFlow.write(self.sliceStream(token))
+ }
+
+ function exitContainers(size, end) {
+ var index = stack.length
+
+ // Close the flow.
+ if (childFlow && end) {
+ childFlow.write([codes.eof])
+ childToken = childFlow = undefined
+ }
+
+ // Exit open containers.
+ while (index-- > size) {
+ self.containerState = stack[index][1]
+ stack[index][0].exit.call(self, effects)
+ }
+
+ stack.length = size
+ }
+
+ function tokenizeInspect(effects, ok) {
+ var subcontinued = 0
+
+ inspectResult = {}
+
+ return inspectStart
+
+ function inspectStart(code) {
+ if (subcontinued < stack.length) {
+ self.containerState = stack[subcontinued][1]
+ return effects.attempt(
+ stack[subcontinued][0].continuation,
+ inspectContinue,
+ inspectLess
+ )(code)
+ }
+
+ // If we’re continued but in a concrete flow, we can’t have more
+ // containers.
+ if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {
+ inspectResult.flowContinue = true
+ return inspectDone(code)
+ }
+
+ self.interrupt =
+ childFlow.currentConstruct && childFlow.currentConstruct.interruptible
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ inspectFlowEnd,
+ inspectDone
+ )(code)
+ }
+
+ function inspectContinue(code) {
+ subcontinued++
+ return self.containerState._closeFlow
+ ? inspectFlowEnd(code)
+ : inspectStart(code)
+ }
+
+ function inspectLess(code) {
+ if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {
+ // Maybe another container?
+ self.containerState = {}
+ return effects.attempt(
+ containerConstruct,
+ inspectFlowEnd,
+ // Maybe flow, or a blank line?
+ effects.attempt(
+ lazyFlowConstruct,
+ inspectFlowEnd,
+ effects.check(blank, inspectFlowEnd, inspectLazy)
+ )
+ )(code)
+ }
+
+ // Otherwise we’re interrupting.
+ return inspectFlowEnd(code)
+ }
+
+ function inspectLazy(code) {
+ // Act as if all containers are continued.
+ subcontinued = stack.length
+ inspectResult.lazy = true
+ inspectResult.flowContinue = true
+ return inspectDone(code)
+ }
+
+ // We’re done with flow if we have more containers, or an interruption.
+ function inspectFlowEnd(code) {
+ inspectResult.flowEnd = true
+ return inspectDone(code)
+ }
+
+ function inspectDone(code) {
+ inspectResult.continued = subcontinued
+ self.interrupt = self.containerState = undefined
+ return ok(code)
+ }
+ }
+}
+
+function tokenizeContainer(effects, ok, nok) {
+ return spaceFactory(
+ effects,
+ effects.attempt(this.parser.constructs.document, ok, nok),
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+}
+
+function tokenizeLazyFlow(effects, ok, nok) {
+ return spaceFactory(
+ effects,
+ effects.lazy(this.parser.constructs.flow, ok, nok),
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.js b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.js
new file mode 100644
index 0000000000..2d71db26e6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.js
@@ -0,0 +1,82 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var types = require('../constant/types.js')
+var content = require('../tokenize/content.js')
+var factorySpace = require('../tokenize/factory-space.js')
+var partialBlankLine = require('../tokenize/partial-blank-line.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var tokenize = initializeFlow
+
+function initializeFlow(effects) {
+ var self = this
+ var initial = effects.attempt(
+ // Try to parse a blank line.
+ partialBlankLine,
+ atBlankEnding,
+ // Try to parse initial flow (essentially, only code).
+ effects.attempt(
+ this.parser.constructs.flowInitial,
+ afterConstruct,
+ factorySpace(
+ effects,
+ effects.attempt(
+ this.parser.constructs.flow,
+ afterConstruct,
+ effects.attempt(content, afterConstruct)
+ ),
+ types.linePrefix
+ )
+ )
+ )
+
+ return initial
+
+ function atBlankEnding(code) {
+ assert__default['default'](
+ code === codes.eof || markdownLineEnding(code),
+ 'expected eol or eof'
+ )
+
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.lineEndingBlank)
+ effects.consume(code)
+ effects.exit(types.lineEndingBlank)
+ self.currentConstruct = undefined
+ return initial
+ }
+
+ function afterConstruct(code) {
+ assert__default['default'](
+ code === codes.eof || markdownLineEnding(code),
+ 'expected eol or eof'
+ )
+
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ self.currentConstruct = undefined
+ return initial
+ }
+}
+
+exports.tokenize = tokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.mjs
new file mode 100644
index 0000000000..2f4b905d90
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/flow.mjs
@@ -0,0 +1,70 @@
+export var tokenize = initializeFlow
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import types from '../constant/types.mjs'
+import content from '../tokenize/content.mjs'
+import spaceFactory from '../tokenize/factory-space.mjs'
+import blank from '../tokenize/partial-blank-line.mjs'
+
+function initializeFlow(effects) {
+ var self = this
+ var initial = effects.attempt(
+ // Try to parse a blank line.
+ blank,
+ atBlankEnding,
+ // Try to parse initial flow (essentially, only code).
+ effects.attempt(
+ this.parser.constructs.flowInitial,
+ afterConstruct,
+ spaceFactory(
+ effects,
+ effects.attempt(
+ this.parser.constructs.flow,
+ afterConstruct,
+ effects.attempt(content, afterConstruct)
+ ),
+ types.linePrefix
+ )
+ )
+ )
+
+ return initial
+
+ function atBlankEnding(code) {
+ assert(
+ code === codes.eof || markdownLineEnding(code),
+ 'expected eol or eof'
+ )
+
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.lineEndingBlank)
+ effects.consume(code)
+ effects.exit(types.lineEndingBlank)
+ self.currentConstruct = undefined
+ return initial
+ }
+
+ function afterConstruct(code) {
+ assert(
+ code === codes.eof || markdownLineEnding(code),
+ 'expected eol or eof'
+ )
+
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ self.currentConstruct = undefined
+ return initial
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.js b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.js
new file mode 100644
index 0000000000..10274966ed
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.js
@@ -0,0 +1,210 @@
+'use strict'
+
+Object.defineProperty(exports, '__esModule', {value: true})
+
+var codes = require('../character/codes.js')
+var assign = require('../constant/assign.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var shallow = require('../util/shallow.js')
+
+var text = initializeFactory('text')
+var string = initializeFactory('string')
+var resolver = {resolveAll: createResolver()}
+
+function initializeFactory(field) {
+ return {
+ tokenize: initializeText,
+ resolveAll: createResolver(
+ field === 'text' ? resolveAllLineSuffixes : undefined
+ )
+ }
+
+ function initializeText(effects) {
+ var self = this
+ var constructs = this.parser.constructs[field]
+ var text = effects.attempt(constructs, start, notText)
+
+ return start
+
+ function start(code) {
+ return atBreak(code) ? text(code) : notText(code)
+ }
+
+ function notText(code) {
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.data)
+ effects.consume(code)
+ return data
+ }
+
+ function data(code) {
+ if (atBreak(code)) {
+ effects.exit(types.data)
+ return text(code)
+ }
+
+ // Data.
+ effects.consume(code)
+ return data
+ }
+
+ function atBreak(code) {
+ var list = constructs[code]
+ var index = -1
+
+ if (code === codes.eof) {
+ return true
+ }
+
+ if (list) {
+ while (++index < list.length) {
+ if (
+ !list[index].previous ||
+ list[index].previous.call(self, self.previous)
+ ) {
+ return true
+ }
+ }
+ }
+ }
+ }
+}
+
+function createResolver(extraResolver) {
+ return resolveAllText
+
+ function resolveAllText(events, context) {
+ var index = -1
+ var enter
+
+ // A rather boring computation (to merge adjacent `data` events) which
+ // improves mm performance by 29%.
+ while (++index <= events.length) {
+ if (enter === undefined) {
+ if (events[index] && events[index][1].type === types.data) {
+ enter = index
+ index++
+ }
+ } else if (!events[index] || events[index][1].type !== types.data) {
+ // Don’t do anything if there is one data token.
+ if (index !== enter + 2) {
+ events[enter][1].end = events[index - 1][1].end
+ events.splice(enter + 2, index - enter - 2)
+ index = enter + 2
+ }
+
+ enter = undefined
+ }
+ }
+
+ return extraResolver ? extraResolver(events, context) : events
+ }
+}
+
+// A rather ugly set of instructions which again looks at chunks in the input
+// stream.
+// The reason to do this here is that it is *much* faster to parse in reverse.
+// And that we can’t hook into `null` to split the line suffix before an EOF.
+// To do: figure out if we can make this into a clean utility, or even in core.
+// As it will be useful for GFMs literal autolink extension (and maybe even
+// tables?)
+function resolveAllLineSuffixes(events, context) {
+ var eventIndex = -1
+ var chunks
+ var data
+ var chunk
+ var index
+ var bufferIndex
+ var size
+ var tabs
+ var token
+
+ while (++eventIndex <= events.length) {
+ if (
+ (eventIndex === events.length ||
+ events[eventIndex][1].type === types.lineEnding) &&
+ events[eventIndex - 1][1].type === types.data
+ ) {
+ data = events[eventIndex - 1][1]
+ chunks = context.sliceStream(data)
+ index = chunks.length
+ bufferIndex = -1
+ size = 0
+ tabs = undefined
+
+ while (index--) {
+ chunk = chunks[index]
+
+ if (typeof chunk === 'string') {
+ bufferIndex = chunk.length
+
+ while (chunk.charCodeAt(bufferIndex - 1) === codes.space) {
+ size++
+ bufferIndex--
+ }
+
+ if (bufferIndex) break
+ bufferIndex = -1
+ }
+ // Number
+ else if (chunk === codes.horizontalTab) {
+ tabs = true
+ size++
+ } else if (chunk === codes.virtualSpace);
+ else {
+ // Replacement character, exit.
+ index++
+ break
+ }
+ }
+
+ if (size) {
+ token = {
+ type:
+ eventIndex === events.length ||
+ tabs ||
+ size < constants.hardBreakPrefixSizeMin
+ ? types.lineSuffix
+ : types.hardBreakTrailing,
+ start: {
+ line: data.end.line,
+ column: data.end.column - size,
+ offset: data.end.offset - size,
+ _index: data.start._index + index,
+ _bufferIndex: index
+ ? bufferIndex
+ : data.start._bufferIndex + bufferIndex
+ },
+ end: shallow(data.end)
+ }
+
+ data.end = shallow(token.start)
+
+ if (data.start.offset === data.end.offset) {
+ assign(data, token)
+ } else {
+ events.splice(
+ eventIndex,
+ 0,
+ ['enter', token, context],
+ ['exit', token, context]
+ )
+ eventIndex += 2
+ }
+ }
+
+ eventIndex++
+ }
+ }
+
+ return events
+}
+
+exports.resolver = resolver
+exports.string = string
+exports.text = text
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.mjs
new file mode 100644
index 0000000000..8e1bca1fb4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/initialize/text.mjs
@@ -0,0 +1,203 @@
+export var text = initializeFactory('text')
+export var string = initializeFactory('string')
+export var resolver = {resolveAll: createResolver()}
+
+import codes from '../character/codes.mjs'
+import assign from '../constant/assign.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import shallow from '../util/shallow.mjs'
+
+function initializeFactory(field) {
+ return {
+ tokenize: initializeText,
+ resolveAll: createResolver(
+ field === 'text' ? resolveAllLineSuffixes : undefined
+ )
+ }
+
+ function initializeText(effects) {
+ var self = this
+ var constructs = this.parser.constructs[field]
+ var text = effects.attempt(constructs, start, notText)
+
+ return start
+
+ function start(code) {
+ return atBreak(code) ? text(code) : notText(code)
+ }
+
+ function notText(code) {
+ if (code === codes.eof) {
+ effects.consume(code)
+ return
+ }
+
+ effects.enter(types.data)
+ effects.consume(code)
+ return data
+ }
+
+ function data(code) {
+ if (atBreak(code)) {
+ effects.exit(types.data)
+ return text(code)
+ }
+
+ // Data.
+ effects.consume(code)
+ return data
+ }
+
+ function atBreak(code) {
+ var list = constructs[code]
+ var index = -1
+
+ if (code === codes.eof) {
+ return true
+ }
+
+ if (list) {
+ while (++index < list.length) {
+ if (
+ !list[index].previous ||
+ list[index].previous.call(self, self.previous)
+ ) {
+ return true
+ }
+ }
+ }
+ }
+ }
+}
+
+function createResolver(extraResolver) {
+ return resolveAllText
+
+ function resolveAllText(events, context) {
+ var index = -1
+ var enter
+
+ // A rather boring computation (to merge adjacent `data` events) which
+ // improves mm performance by 29%.
+ while (++index <= events.length) {
+ if (enter === undefined) {
+ if (events[index] && events[index][1].type === types.data) {
+ enter = index
+ index++
+ }
+ } else if (!events[index] || events[index][1].type !== types.data) {
+ // Don’t do anything if there is one data token.
+ if (index !== enter + 2) {
+ events[enter][1].end = events[index - 1][1].end
+ events.splice(enter + 2, index - enter - 2)
+ index = enter + 2
+ }
+
+ enter = undefined
+ }
+ }
+
+ return extraResolver ? extraResolver(events, context) : events
+ }
+}
+
+// A rather ugly set of instructions which again looks at chunks in the input
+// stream.
+// The reason to do this here is that it is *much* faster to parse in reverse.
+// And that we can’t hook into `null` to split the line suffix before an EOF.
+// To do: figure out if we can make this into a clean utility, or even in core.
+// As it will be useful for GFMs literal autolink extension (and maybe even
+// tables?)
+function resolveAllLineSuffixes(events, context) {
+ var eventIndex = -1
+ var chunks
+ var data
+ var chunk
+ var index
+ var bufferIndex
+ var size
+ var tabs
+ var token
+
+ while (++eventIndex <= events.length) {
+ if (
+ (eventIndex === events.length ||
+ events[eventIndex][1].type === types.lineEnding) &&
+ events[eventIndex - 1][1].type === types.data
+ ) {
+ data = events[eventIndex - 1][1]
+ chunks = context.sliceStream(data)
+ index = chunks.length
+ bufferIndex = -1
+ size = 0
+ tabs = undefined
+
+ while (index--) {
+ chunk = chunks[index]
+
+ if (typeof chunk === 'string') {
+ bufferIndex = chunk.length
+
+ while (chunk.charCodeAt(bufferIndex - 1) === codes.space) {
+ size++
+ bufferIndex--
+ }
+
+ if (bufferIndex) break
+ bufferIndex = -1
+ }
+ // Number
+ else if (chunk === codes.horizontalTab) {
+ tabs = true
+ size++
+ } else if (chunk === codes.virtualSpace) {
+ // Empty
+ } else {
+ // Replacement character, exit.
+ index++
+ break
+ }
+ }
+
+ if (size) {
+ token = {
+ type:
+ eventIndex === events.length ||
+ tabs ||
+ size < constants.hardBreakPrefixSizeMin
+ ? types.lineSuffix
+ : types.hardBreakTrailing,
+ start: {
+ line: data.end.line,
+ column: data.end.column - size,
+ offset: data.end.offset - size,
+ _index: data.start._index + index,
+ _bufferIndex: index
+ ? bufferIndex
+ : data.start._bufferIndex + bufferIndex
+ },
+ end: shallow(data.end)
+ }
+
+ data.end = shallow(token.start)
+
+ if (data.start.offset === data.end.offset) {
+ assign(data, token)
+ } else {
+ events.splice(
+ eventIndex,
+ 0,
+ ['enter', token, context],
+ ['exit', token, context]
+ )
+ eventIndex += 2
+ }
+ }
+
+ eventIndex++
+ }
+ }
+
+ return events
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/parse.js b/tools/node_modules/eslint/node_modules/micromark/lib/parse.js
new file mode 100644
index 0000000000..aad11f9ee7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/parse.js
@@ -0,0 +1,36 @@
+'use strict'
+
+var content = require('./initialize/content.js')
+var document = require('./initialize/document.js')
+var flow = require('./initialize/flow.js')
+var text = require('./initialize/text.js')
+var combineExtensions = require('./util/combine-extensions.js')
+var createTokenizer = require('./util/create-tokenizer.js')
+var miniflat = require('./util/miniflat.js')
+var constructs = require('./constructs.js')
+
+function parse(options) {
+ var settings = options || {}
+ var parser = {
+ defined: [],
+ constructs: combineExtensions(
+ [constructs].concat(miniflat(settings.extensions))
+ ),
+ content: create(content),
+ document: create(document),
+ flow: create(flow),
+ string: create(text.string),
+ text: create(text.text)
+ }
+
+ return parser
+
+ function create(initializer) {
+ return creator
+ function creator(from) {
+ return createTokenizer(parser, initializer, from)
+ }
+ }
+}
+
+module.exports = parse
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/parse.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/parse.mjs
new file mode 100644
index 0000000000..a4ca9ac681
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/parse.mjs
@@ -0,0 +1,34 @@
+export default parse
+
+import * as initializeContent from './initialize/content.mjs'
+import * as initializeDocument from './initialize/document.mjs'
+import * as initializeFlow from './initialize/flow.mjs'
+import * as initializeText from './initialize/text.mjs'
+import combineExtensions from './util/combine-extensions.mjs'
+import createTokenizer from './util/create-tokenizer.mjs'
+import miniflat from './util/miniflat.mjs'
+import * as constructs from './constructs.mjs'
+
+function parse(options) {
+ var settings = options || {}
+ var parser = {
+ defined: [],
+ constructs: combineExtensions(
+ [constructs].concat(miniflat(settings.extensions))
+ ),
+ content: create(initializeContent),
+ document: create(initializeDocument),
+ flow: create(initializeFlow),
+ string: create(initializeText.string),
+ text: create(initializeText.text)
+ }
+
+ return parser
+
+ function create(initializer) {
+ return creator
+ function creator(from) {
+ return createTokenizer(parser, initializer, from)
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/postprocess.js b/tools/node_modules/eslint/node_modules/micromark/lib/postprocess.js
new file mode 100644
index 0000000000..842f8ce8bf
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/postprocess.js
@@ -0,0 +1,13 @@
+'use strict'
+
+var subtokenize = require('./util/subtokenize.js')
+
+function postprocess(events) {
+ while (!subtokenize(events)) {
+ // Empty
+ }
+
+ return events
+}
+
+module.exports = postprocess
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/postprocess.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/postprocess.mjs
new file mode 100644
index 0000000000..f32e378d3f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/postprocess.mjs
@@ -0,0 +1,11 @@
+export default postprocess
+
+import subtokenize from './util/subtokenize.mjs'
+
+function postprocess(events) {
+ while (!subtokenize(events)) {
+ // Empty
+ }
+
+ return events
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/preprocess.js b/tools/node_modules/eslint/node_modules/micromark/lib/preprocess.js
new file mode 100644
index 0000000000..caf9c07059
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/preprocess.js
@@ -0,0 +1,96 @@
+'use strict'
+
+var codes = require('./character/codes.js')
+var constants = require('./constant/constants.js')
+
+var search = /[\0\t\n\r]/g
+
+function preprocess() {
+ var start = true
+ var column = 1
+ var buffer = ''
+ var atCarriageReturn
+
+ return preprocessor
+
+ function preprocessor(value, encoding, end) {
+ var chunks = []
+ var match
+ var next
+ var startPosition
+ var endPosition
+ var code
+
+ value = buffer + value.toString(encoding)
+ startPosition = 0
+ buffer = ''
+
+ if (start) {
+ if (value.charCodeAt(0) === codes.byteOrderMarker) {
+ startPosition++
+ }
+
+ start = undefined
+ }
+
+ while (startPosition < value.length) {
+ search.lastIndex = startPosition
+ match = search.exec(value)
+ endPosition = match ? match.index : value.length
+ code = value.charCodeAt(endPosition)
+
+ if (!match) {
+ buffer = value.slice(startPosition)
+ break
+ }
+
+ if (
+ code === codes.lf &&
+ startPosition === endPosition &&
+ atCarriageReturn
+ ) {
+ chunks.push(codes.carriageReturnLineFeed)
+ atCarriageReturn = undefined
+ } else {
+ if (atCarriageReturn) {
+ chunks.push(codes.carriageReturn)
+ atCarriageReturn = undefined
+ }
+
+ if (startPosition < endPosition) {
+ chunks.push(value.slice(startPosition, endPosition))
+ column += endPosition - startPosition
+ }
+
+ if (code === codes.nul) {
+ chunks.push(codes.replacementCharacter)
+ column++
+ } else if (code === codes.ht) {
+ next = Math.ceil(column / constants.tabSize) * constants.tabSize
+ chunks.push(codes.horizontalTab)
+ while (column++ < next) chunks.push(codes.virtualSpace)
+ } else if (code === codes.lf) {
+ chunks.push(codes.lineFeed)
+ column = 1
+ }
+ // Must be carriage return.
+ else {
+ atCarriageReturn = true
+ column = 1
+ }
+ }
+
+ startPosition = endPosition + 1
+ }
+
+ if (end) {
+ if (atCarriageReturn) chunks.push(codes.carriageReturn)
+ if (buffer) chunks.push(buffer)
+ chunks.push(codes.eof)
+ }
+
+ return chunks
+ }
+}
+
+module.exports = preprocess
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/preprocess.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/preprocess.mjs
new file mode 100644
index 0000000000..4413159d36
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/preprocess.mjs
@@ -0,0 +1,94 @@
+export default preprocess
+
+import codes from './character/codes.mjs'
+import constants from './constant/constants.mjs'
+
+var search = /[\0\t\n\r]/g
+
+function preprocess() {
+ var start = true
+ var column = 1
+ var buffer = ''
+ var atCarriageReturn
+
+ return preprocessor
+
+ function preprocessor(value, encoding, end) {
+ var chunks = []
+ var match
+ var next
+ var startPosition
+ var endPosition
+ var code
+
+ value = buffer + value.toString(encoding)
+ startPosition = 0
+ buffer = ''
+
+ if (start) {
+ if (value.charCodeAt(0) === codes.byteOrderMarker) {
+ startPosition++
+ }
+
+ start = undefined
+ }
+
+ while (startPosition < value.length) {
+ search.lastIndex = startPosition
+ match = search.exec(value)
+ endPosition = match ? match.index : value.length
+ code = value.charCodeAt(endPosition)
+
+ if (!match) {
+ buffer = value.slice(startPosition)
+ break
+ }
+
+ if (
+ code === codes.lf &&
+ startPosition === endPosition &&
+ atCarriageReturn
+ ) {
+ chunks.push(codes.carriageReturnLineFeed)
+ atCarriageReturn = undefined
+ } else {
+ if (atCarriageReturn) {
+ chunks.push(codes.carriageReturn)
+ atCarriageReturn = undefined
+ }
+
+ if (startPosition < endPosition) {
+ chunks.push(value.slice(startPosition, endPosition))
+ column += endPosition - startPosition
+ }
+
+ if (code === codes.nul) {
+ chunks.push(codes.replacementCharacter)
+ column++
+ } else if (code === codes.ht) {
+ next = Math.ceil(column / constants.tabSize) * constants.tabSize
+ chunks.push(codes.horizontalTab)
+ while (column++ < next) chunks.push(codes.virtualSpace)
+ } else if (code === codes.lf) {
+ chunks.push(codes.lineFeed)
+ column = 1
+ }
+ // Must be carriage return.
+ else {
+ atCarriageReturn = true
+ column = 1
+ }
+ }
+
+ startPosition = endPosition + 1
+ }
+
+ if (end) {
+ if (atCarriageReturn) chunks.push(codes.carriageReturn)
+ if (buffer) chunks.push(buffer)
+ chunks.push(codes.eof)
+ }
+
+ return chunks
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/stream.js b/tools/node_modules/eslint/node_modules/micromark/lib/stream.js
new file mode 100644
index 0000000000..07fb675b62
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/stream.js
@@ -0,0 +1,119 @@
+'use strict'
+
+var events = require('events')
+var html = require('./compile/html.js')
+var parse = require('./parse.js')
+var postprocess = require('./postprocess.js')
+var preprocess = require('./preprocess.js')
+
+function stream(options) {
+ var preprocess$1 = preprocess()
+ var tokenize = parse(options).document().write
+ var compile = html(options)
+ var emitter = new events.EventEmitter()
+ var ended
+
+ emitter.writable = emitter.readable = true
+ emitter.write = write
+ emitter.end = end
+ emitter.pipe = pipe
+
+ return emitter
+
+ // Write a chunk into memory.
+ function write(chunk, encoding, callback) {
+ if (typeof encoding === 'function') {
+ callback = encoding
+ encoding = undefined
+ }
+
+ if (ended) {
+ throw new Error('Did not expect `write` after `end`')
+ }
+
+ tokenize(preprocess$1(chunk || '', encoding))
+
+ if (callback) {
+ callback()
+ }
+
+ // Signal succesful write.
+ return true
+ }
+
+ // End the writing.
+ // Passes all arguments to a final `write`.
+ function end(chunk, encoding, callback) {
+ write(chunk, encoding, callback)
+
+ emitter.emit(
+ 'data',
+ compile(postprocess(tokenize(preprocess$1('', encoding, true))))
+ )
+
+ emitter.emit('end')
+ ended = true
+ return true
+ }
+
+ // Pipe the processor into a writable stream.
+ // Basically `Stream#pipe`, but inlined and simplified to keep the bundled
+ // size down.
+ // See: <https://github.com/nodejs/node/blob/43a5170/lib/internal/streams/legacy.js#L13>.
+ function pipe(dest, options) {
+ emitter.on('data', ondata)
+ emitter.on('error', onerror)
+ emitter.on('end', cleanup)
+ emitter.on('close', cleanup)
+
+ // If the `end` option is not supplied, `dest.end()` will be called when the
+ // `end` or `close` events are received.
+ if (!dest._isStdio && (!options || options.end !== false)) {
+ emitter.on('end', onend)
+ }
+
+ dest.on('error', onerror)
+ dest.on('close', cleanup)
+
+ dest.emit('pipe', emitter)
+
+ return dest
+
+ // End destination.
+ function onend() {
+ if (dest.end) {
+ dest.end()
+ }
+ }
+
+ // Handle data.
+ function ondata(chunk) {
+ if (dest.writable) {
+ dest.write(chunk)
+ }
+ }
+
+ // Clean listeners.
+ function cleanup() {
+ emitter.removeListener('data', ondata)
+ emitter.removeListener('end', onend)
+ emitter.removeListener('error', onerror)
+ emitter.removeListener('end', cleanup)
+ emitter.removeListener('close', cleanup)
+
+ dest.removeListener('error', onerror)
+ dest.removeListener('close', cleanup)
+ }
+
+ // Close dangling pipes and handle unheard errors.
+ function onerror(error) {
+ cleanup()
+
+ if (!emitter.listenerCount('error')) {
+ throw error // Unhandled stream error in pipe.
+ }
+ }
+ }
+}
+
+module.exports = stream
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/stream.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/stream.mjs
new file mode 100644
index 0000000000..d00c74a89b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/stream.mjs
@@ -0,0 +1,117 @@
+export default stream
+
+import {EventEmitter} from 'events'
+import compiler from './compile/html.mjs'
+import parser from './parse.mjs'
+import postprocess from './postprocess.mjs'
+import preprocessor from './preprocess.mjs'
+
+function stream(options) {
+ var preprocess = preprocessor()
+ var tokenize = parser(options).document().write
+ var compile = compiler(options)
+ var emitter = new EventEmitter()
+ var ended
+
+ emitter.writable = emitter.readable = true
+ emitter.write = write
+ emitter.end = end
+ emitter.pipe = pipe
+
+ return emitter
+
+ // Write a chunk into memory.
+ function write(chunk, encoding, callback) {
+ if (typeof encoding === 'function') {
+ callback = encoding
+ encoding = undefined
+ }
+
+ if (ended) {
+ throw new Error('Did not expect `write` after `end`')
+ }
+
+ tokenize(preprocess(chunk || '', encoding))
+
+ if (callback) {
+ callback()
+ }
+
+ // Signal succesful write.
+ return true
+ }
+
+ // End the writing.
+ // Passes all arguments to a final `write`.
+ function end(chunk, encoding, callback) {
+ write(chunk, encoding, callback)
+
+ emitter.emit(
+ 'data',
+ compile(postprocess(tokenize(preprocess('', encoding, true))))
+ )
+
+ emitter.emit('end')
+ ended = true
+ return true
+ }
+
+ // Pipe the processor into a writable stream.
+ // Basically `Stream#pipe`, but inlined and simplified to keep the bundled
+ // size down.
+ // See: <https://github.com/nodejs/node/blob/43a5170/lib/internal/streams/legacy.js#L13>.
+ function pipe(dest, options) {
+ emitter.on('data', ondata)
+ emitter.on('error', onerror)
+ emitter.on('end', cleanup)
+ emitter.on('close', cleanup)
+
+ // If the `end` option is not supplied, `dest.end()` will be called when the
+ // `end` or `close` events are received.
+ if (!dest._isStdio && (!options || options.end !== false)) {
+ emitter.on('end', onend)
+ }
+
+ dest.on('error', onerror)
+ dest.on('close', cleanup)
+
+ dest.emit('pipe', emitter)
+
+ return dest
+
+ // End destination.
+ function onend() {
+ if (dest.end) {
+ dest.end()
+ }
+ }
+
+ // Handle data.
+ function ondata(chunk) {
+ if (dest.writable) {
+ dest.write(chunk)
+ }
+ }
+
+ // Clean listeners.
+ function cleanup() {
+ emitter.removeListener('data', ondata)
+ emitter.removeListener('end', onend)
+ emitter.removeListener('error', onerror)
+ emitter.removeListener('end', cleanup)
+ emitter.removeListener('close', cleanup)
+
+ dest.removeListener('error', onerror)
+ dest.removeListener('close', cleanup)
+ }
+
+ // Close dangling pipes and handle unheard errors.
+ function onerror(error) {
+ cleanup()
+
+ if (!emitter.listenerCount('error')) {
+ throw error // Unhandled stream error in pipe.
+ }
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.js
new file mode 100644
index 0000000000..b38970d99e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.js
@@ -0,0 +1,216 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var chunkedPush = require('../util/chunked-push.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var classifyCharacter = require('../util/classify-character.js')
+var movePoint = require('../util/move-point.js')
+var resolveAll = require('../util/resolve-all.js')
+var shallow = require('../util/shallow.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var attention = {
+ name: 'attention',
+ tokenize: tokenizeAttention,
+ resolveAll: resolveAllAttention
+}
+
+// Take all events and resolve attention to emphasis or strong.
+function resolveAllAttention(events, context) {
+ var index = -1
+ var open
+ var group
+ var text
+ var openingSequence
+ var closingSequence
+ var use
+ var nextEvents
+ var offset
+
+ // Walk through all events.
+ //
+ // Note: performance of this is fine on an mb of normal markdown, but it’s
+ // a bottleneck for malicious stuff.
+ while (++index < events.length) {
+ // Find a token that can close.
+ if (
+ events[index][0] === 'enter' &&
+ events[index][1].type === 'attentionSequence' &&
+ events[index][1]._close
+ ) {
+ open = index
+
+ // Now walk back to find an opener.
+ while (open--) {
+ // Find a token that can open the closer.
+ if (
+ events[open][0] === 'exit' &&
+ events[open][1].type === 'attentionSequence' &&
+ events[open][1]._open &&
+ // If the markers are the same:
+ context.sliceSerialize(events[open][1]).charCodeAt(0) ===
+ context.sliceSerialize(events[index][1]).charCodeAt(0)
+ ) {
+ // If the opening can close or the closing can open,
+ // and the close size *is not* a multiple of three,
+ // but the sum of the opening and closing size *is* multiple of three,
+ // then don’t match.
+ if (
+ (events[open][1]._close || events[index][1]._open) &&
+ (events[index][1].end.offset - events[index][1].start.offset) % 3 &&
+ !(
+ (events[open][1].end.offset -
+ events[open][1].start.offset +
+ events[index][1].end.offset -
+ events[index][1].start.offset) %
+ 3
+ )
+ ) {
+ continue
+ }
+
+ // Number of markers to use from the sequence.
+ use =
+ events[open][1].end.offset - events[open][1].start.offset > 1 &&
+ events[index][1].end.offset - events[index][1].start.offset > 1
+ ? 2
+ : 1
+
+ openingSequence = {
+ type: use > 1 ? types.strongSequence : types.emphasisSequence,
+ start: movePoint(shallow(events[open][1].end), -use),
+ end: shallow(events[open][1].end)
+ }
+ closingSequence = {
+ type: use > 1 ? types.strongSequence : types.emphasisSequence,
+ start: shallow(events[index][1].start),
+ end: movePoint(shallow(events[index][1].start), use)
+ }
+ text = {
+ type: use > 1 ? types.strongText : types.emphasisText,
+ start: shallow(events[open][1].end),
+ end: shallow(events[index][1].start)
+ }
+ group = {
+ type: use > 1 ? types.strong : types.emphasis,
+ start: shallow(openingSequence.start),
+ end: shallow(closingSequence.end)
+ }
+
+ events[open][1].end = shallow(openingSequence.start)
+ events[index][1].start = shallow(closingSequence.end)
+
+ nextEvents = []
+
+ // If there are more markers in the opening, add them before.
+ if (events[open][1].end.offset - events[open][1].start.offset) {
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', events[open][1], context],
+ ['exit', events[open][1], context]
+ ])
+ }
+
+ // Opening.
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', group, context],
+ ['enter', openingSequence, context],
+ ['exit', openingSequence, context],
+ ['enter', text, context]
+ ])
+
+ // Between.
+ nextEvents = chunkedPush(
+ nextEvents,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + 1, index),
+ context
+ )
+ )
+
+ // Closing.
+ nextEvents = chunkedPush(nextEvents, [
+ ['exit', text, context],
+ ['enter', closingSequence, context],
+ ['exit', closingSequence, context],
+ ['exit', group, context]
+ ])
+
+ // If there are more markers in the closing, add them after.
+ if (events[index][1].end.offset - events[index][1].start.offset) {
+ offset = 2
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', events[index][1], context],
+ ['exit', events[index][1], context]
+ ])
+ } else {
+ offset = 0
+ }
+
+ chunkedSplice(events, open - 1, index - open + 3, nextEvents)
+
+ index = open + nextEvents.length - offset - 2
+ break
+ }
+ }
+ }
+ }
+
+ // Remove remaining sequences.
+ index = -1
+
+ while (++index < events.length) {
+ if (events[index][1].type === 'attentionSequence') {
+ events[index][1].type = 'data'
+ }
+ }
+
+ return events
+}
+
+function tokenizeAttention(effects, ok) {
+ var before = classifyCharacter(this.previous)
+ var marker
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code === codes.asterisk || code === codes.underscore,
+ 'expected asterisk or underscore'
+ )
+ effects.enter('attentionSequence')
+ marker = code
+ return sequence(code)
+ }
+
+ function sequence(code) {
+ var token
+ var after
+ var open
+ var close
+
+ if (code === marker) {
+ effects.consume(code)
+ return sequence
+ }
+
+ token = effects.exit('attentionSequence')
+ after = classifyCharacter(code)
+ open = !after || (after === constants.characterGroupPunctuation && before)
+ close = !before || (before === constants.characterGroupPunctuation && after)
+ token._open = marker === codes.asterisk ? open : open && (before || !close)
+ token._close = marker === codes.asterisk ? close : close && (after || !open)
+ return ok(code)
+ }
+}
+
+module.exports = attention
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.mjs
new file mode 100644
index 0000000000..a3c81460f9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/attention.mjs
@@ -0,0 +1,207 @@
+var attention = {
+ name: 'attention',
+ tokenize: tokenizeAttention,
+ resolveAll: resolveAllAttention
+}
+export default attention
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import chunkedPush from '../util/chunked-push.mjs'
+import chunkedSplice from '../util/chunked-splice.mjs'
+import classifyCharacter from '../util/classify-character.mjs'
+import movePoint from '../util/move-point.mjs'
+import resolveAll from '../util/resolve-all.mjs'
+import shallow from '../util/shallow.mjs'
+
+// Take all events and resolve attention to emphasis or strong.
+function resolveAllAttention(events, context) {
+ var index = -1
+ var open
+ var group
+ var text
+ var openingSequence
+ var closingSequence
+ var use
+ var nextEvents
+ var offset
+
+ // Walk through all events.
+ //
+ // Note: performance of this is fine on an mb of normal markdown, but it’s
+ // a bottleneck for malicious stuff.
+ while (++index < events.length) {
+ // Find a token that can close.
+ if (
+ events[index][0] === 'enter' &&
+ events[index][1].type === 'attentionSequence' &&
+ events[index][1]._close
+ ) {
+ open = index
+
+ // Now walk back to find an opener.
+ while (open--) {
+ // Find a token that can open the closer.
+ if (
+ events[open][0] === 'exit' &&
+ events[open][1].type === 'attentionSequence' &&
+ events[open][1]._open &&
+ // If the markers are the same:
+ context.sliceSerialize(events[open][1]).charCodeAt(0) ===
+ context.sliceSerialize(events[index][1]).charCodeAt(0)
+ ) {
+ // If the opening can close or the closing can open,
+ // and the close size *is not* a multiple of three,
+ // but the sum of the opening and closing size *is* multiple of three,
+ // then don’t match.
+ if (
+ (events[open][1]._close || events[index][1]._open) &&
+ (events[index][1].end.offset - events[index][1].start.offset) % 3 &&
+ !(
+ (events[open][1].end.offset -
+ events[open][1].start.offset +
+ events[index][1].end.offset -
+ events[index][1].start.offset) %
+ 3
+ )
+ ) {
+ continue
+ }
+
+ // Number of markers to use from the sequence.
+ use =
+ events[open][1].end.offset - events[open][1].start.offset > 1 &&
+ events[index][1].end.offset - events[index][1].start.offset > 1
+ ? 2
+ : 1
+
+ openingSequence = {
+ type: use > 1 ? types.strongSequence : types.emphasisSequence,
+ start: movePoint(shallow(events[open][1].end), -use),
+ end: shallow(events[open][1].end)
+ }
+ closingSequence = {
+ type: use > 1 ? types.strongSequence : types.emphasisSequence,
+ start: shallow(events[index][1].start),
+ end: movePoint(shallow(events[index][1].start), use)
+ }
+ text = {
+ type: use > 1 ? types.strongText : types.emphasisText,
+ start: shallow(events[open][1].end),
+ end: shallow(events[index][1].start)
+ }
+ group = {
+ type: use > 1 ? types.strong : types.emphasis,
+ start: shallow(openingSequence.start),
+ end: shallow(closingSequence.end)
+ }
+
+ events[open][1].end = shallow(openingSequence.start)
+ events[index][1].start = shallow(closingSequence.end)
+
+ nextEvents = []
+
+ // If there are more markers in the opening, add them before.
+ if (events[open][1].end.offset - events[open][1].start.offset) {
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', events[open][1], context],
+ ['exit', events[open][1], context]
+ ])
+ }
+
+ // Opening.
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', group, context],
+ ['enter', openingSequence, context],
+ ['exit', openingSequence, context],
+ ['enter', text, context]
+ ])
+
+ // Between.
+ nextEvents = chunkedPush(
+ nextEvents,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + 1, index),
+ context
+ )
+ )
+
+ // Closing.
+ nextEvents = chunkedPush(nextEvents, [
+ ['exit', text, context],
+ ['enter', closingSequence, context],
+ ['exit', closingSequence, context],
+ ['exit', group, context]
+ ])
+
+ // If there are more markers in the closing, add them after.
+ if (events[index][1].end.offset - events[index][1].start.offset) {
+ offset = 2
+ nextEvents = chunkedPush(nextEvents, [
+ ['enter', events[index][1], context],
+ ['exit', events[index][1], context]
+ ])
+ } else {
+ offset = 0
+ }
+
+ chunkedSplice(events, open - 1, index - open + 3, nextEvents)
+
+ index = open + nextEvents.length - offset - 2
+ break
+ }
+ }
+ }
+ }
+
+ // Remove remaining sequences.
+ index = -1
+
+ while (++index < events.length) {
+ if (events[index][1].type === 'attentionSequence') {
+ events[index][1].type = 'data'
+ }
+ }
+
+ return events
+}
+
+function tokenizeAttention(effects, ok) {
+ var before = classifyCharacter(this.previous)
+ var marker
+
+ return start
+
+ function start(code) {
+ assert(
+ code === codes.asterisk || code === codes.underscore,
+ 'expected asterisk or underscore'
+ )
+ effects.enter('attentionSequence')
+ marker = code
+ return sequence(code)
+ }
+
+ function sequence(code) {
+ var token
+ var after
+ var open
+ var close
+
+ if (code === marker) {
+ effects.consume(code)
+ return sequence
+ }
+
+ token = effects.exit('attentionSequence')
+ after = classifyCharacter(code)
+ open = !after || (after === constants.characterGroupPunctuation && before)
+ close = !before || (before === constants.characterGroupPunctuation && after)
+ token._open = marker === codes.asterisk ? open : open && (before || !close)
+ token._close = marker === codes.asterisk ? close : close && (after || !open)
+ return ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.js
new file mode 100644
index 0000000000..037280bbd2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.js
@@ -0,0 +1,147 @@
+'use strict'
+
+var assert = require('assert')
+var asciiAlpha = require('../character/ascii-alpha.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var asciiAtext = require('../character/ascii-atext.js')
+var asciiControl = require('../character/ascii-control.js')
+var codes = require('../character/codes.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var autolink = {
+ name: 'autolink',
+ tokenize: tokenizeAutolink
+}
+
+function tokenizeAutolink(effects, ok, nok) {
+ var size = 1
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.lessThan, 'expected `<`')
+ effects.enter(types.autolink)
+ effects.enter(types.autolinkMarker)
+ effects.consume(code)
+ effects.exit(types.autolinkMarker)
+ effects.enter(types.autolinkProtocol)
+ return open
+ }
+
+ function open(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return schemeOrEmailAtext
+ }
+
+ return asciiAtext(code) ? emailAtext(code) : nok(code)
+ }
+
+ function schemeOrEmailAtext(code) {
+ return code === codes.plusSign ||
+ code === codes.dash ||
+ code === codes.dot ||
+ asciiAlphanumeric(code)
+ ? schemeInsideOrEmailAtext(code)
+ : emailAtext(code)
+ }
+
+ function schemeInsideOrEmailAtext(code) {
+ if (code === codes.colon) {
+ effects.consume(code)
+ return urlInside
+ }
+
+ if (
+ (code === codes.plusSign ||
+ code === codes.dash ||
+ code === codes.dot ||
+ asciiAlphanumeric(code)) &&
+ size++ < constants.autolinkSchemeSizeMax
+ ) {
+ effects.consume(code)
+ return schemeInsideOrEmailAtext
+ }
+
+ return emailAtext(code)
+ }
+
+ function urlInside(code) {
+ if (code === codes.greaterThan) {
+ effects.exit(types.autolinkProtocol)
+ return end(code)
+ }
+
+ if (code === codes.space || code === codes.lessThan || asciiControl(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return urlInside
+ }
+
+ function emailAtext(code) {
+ if (code === codes.atSign) {
+ effects.consume(code)
+ size = 0
+ return emailAtSignOrDot
+ }
+
+ if (asciiAtext(code)) {
+ effects.consume(code)
+ return emailAtext
+ }
+
+ return nok(code)
+ }
+
+ function emailAtSignOrDot(code) {
+ return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)
+ }
+
+ function emailLabel(code) {
+ if (code === codes.dot) {
+ effects.consume(code)
+ size = 0
+ return emailAtSignOrDot
+ }
+
+ if (code === codes.greaterThan) {
+ // Exit, then change the type.
+ effects.exit(types.autolinkProtocol).type = types.autolinkEmail
+ return end(code)
+ }
+
+ return emailValue(code)
+ }
+
+ function emailValue(code) {
+ if (
+ (code === codes.dash || asciiAlphanumeric(code)) &&
+ size++ < constants.autolinkDomainSizeMax
+ ) {
+ effects.consume(code)
+ return code === codes.dash ? emailValue : emailLabel
+ }
+
+ return nok(code)
+ }
+
+ function end(code) {
+ assert__default['default'].equal(code, codes.greaterThan, 'expected `>`')
+ effects.enter(types.autolinkMarker)
+ effects.consume(code)
+ effects.exit(types.autolinkMarker)
+ effects.exit(types.autolink)
+ return ok
+ }
+}
+
+module.exports = autolink
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.mjs
new file mode 100644
index 0000000000..890cd6c468
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/autolink.mjs
@@ -0,0 +1,138 @@
+var autolink = {
+ name: 'autolink',
+ tokenize: tokenizeAutolink
+}
+export default autolink
+
+import assert from 'assert'
+import asciiAlpha from '../character/ascii-alpha.mjs'
+import asciiAlphanumeric from '../character/ascii-alphanumeric.mjs'
+import asciiAtext from '../character/ascii-atext.mjs'
+import asciiControl from '../character/ascii-control.mjs'
+import codes from '../character/codes.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+
+function tokenizeAutolink(effects, ok, nok) {
+ var size = 1
+
+ return start
+
+ function start(code) {
+ assert(code === codes.lessThan, 'expected `<`')
+ effects.enter(types.autolink)
+ effects.enter(types.autolinkMarker)
+ effects.consume(code)
+ effects.exit(types.autolinkMarker)
+ effects.enter(types.autolinkProtocol)
+ return open
+ }
+
+ function open(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return schemeOrEmailAtext
+ }
+
+ return asciiAtext(code) ? emailAtext(code) : nok(code)
+ }
+
+ function schemeOrEmailAtext(code) {
+ return code === codes.plusSign ||
+ code === codes.dash ||
+ code === codes.dot ||
+ asciiAlphanumeric(code)
+ ? schemeInsideOrEmailAtext(code)
+ : emailAtext(code)
+ }
+
+ function schemeInsideOrEmailAtext(code) {
+ if (code === codes.colon) {
+ effects.consume(code)
+ return urlInside
+ }
+
+ if (
+ (code === codes.plusSign ||
+ code === codes.dash ||
+ code === codes.dot ||
+ asciiAlphanumeric(code)) &&
+ size++ < constants.autolinkSchemeSizeMax
+ ) {
+ effects.consume(code)
+ return schemeInsideOrEmailAtext
+ }
+
+ return emailAtext(code)
+ }
+
+ function urlInside(code) {
+ if (code === codes.greaterThan) {
+ effects.exit(types.autolinkProtocol)
+ return end(code)
+ }
+
+ if (code === codes.space || code === codes.lessThan || asciiControl(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return urlInside
+ }
+
+ function emailAtext(code) {
+ if (code === codes.atSign) {
+ effects.consume(code)
+ size = 0
+ return emailAtSignOrDot
+ }
+
+ if (asciiAtext(code)) {
+ effects.consume(code)
+ return emailAtext
+ }
+
+ return nok(code)
+ }
+
+ function emailAtSignOrDot(code) {
+ return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)
+ }
+
+ function emailLabel(code) {
+ if (code === codes.dot) {
+ effects.consume(code)
+ size = 0
+ return emailAtSignOrDot
+ }
+
+ if (code === codes.greaterThan) {
+ // Exit, then change the type.
+ effects.exit(types.autolinkProtocol).type = types.autolinkEmail
+ return end(code)
+ }
+
+ return emailValue(code)
+ }
+
+ function emailValue(code) {
+ if (
+ (code === codes.dash || asciiAlphanumeric(code)) &&
+ size++ < constants.autolinkDomainSizeMax
+ ) {
+ effects.consume(code)
+ return code === codes.dash ? emailValue : emailLabel
+ }
+
+ return nok(code)
+ }
+
+ function end(code) {
+ assert.equal(code, codes.greaterThan, 'expected `>`')
+ effects.enter(types.autolinkMarker)
+ effects.consume(code)
+ effects.exit(types.autolinkMarker)
+ effects.exit(types.autolink)
+ return ok
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.js
new file mode 100644
index 0000000000..66f58d0715
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.js
@@ -0,0 +1,67 @@
+'use strict'
+
+var codes = require('../character/codes.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+var blockQuote = {
+ name: 'blockQuote',
+ tokenize: tokenizeBlockQuoteStart,
+ continuation: {tokenize: tokenizeBlockQuoteContinuation},
+ exit: exit
+}
+
+function tokenizeBlockQuoteStart(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ if (code === codes.greaterThan) {
+ if (!self.containerState.open) {
+ effects.enter(types.blockQuote, {_container: true})
+ self.containerState.open = true
+ }
+
+ effects.enter(types.blockQuotePrefix)
+ effects.enter(types.blockQuoteMarker)
+ effects.consume(code)
+ effects.exit(types.blockQuoteMarker)
+ return after
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ if (markdownSpace(code)) {
+ effects.enter(types.blockQuotePrefixWhitespace)
+ effects.consume(code)
+ effects.exit(types.blockQuotePrefixWhitespace)
+ effects.exit(types.blockQuotePrefix)
+ return ok
+ }
+
+ effects.exit(types.blockQuotePrefix)
+ return ok(code)
+ }
+}
+
+function tokenizeBlockQuoteContinuation(effects, ok, nok) {
+ return factorySpace(
+ effects,
+ effects.attempt(blockQuote, ok, nok),
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+}
+
+function exit(effects) {
+ effects.exit(types.blockQuote)
+}
+
+module.exports = blockQuote
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.mjs
new file mode 100644
index 0000000000..cf215ba602
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/block-quote.mjs
@@ -0,0 +1,64 @@
+var blockQuote = {
+ name: 'blockQuote',
+ tokenize: tokenizeBlockQuoteStart,
+ continuation: {tokenize: tokenizeBlockQuoteContinuation},
+ exit: exit
+}
+export default blockQuote
+
+import codes from '../character/codes.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function tokenizeBlockQuoteStart(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ if (code === codes.greaterThan) {
+ if (!self.containerState.open) {
+ effects.enter(types.blockQuote, {_container: true})
+ self.containerState.open = true
+ }
+
+ effects.enter(types.blockQuotePrefix)
+ effects.enter(types.blockQuoteMarker)
+ effects.consume(code)
+ effects.exit(types.blockQuoteMarker)
+ return after
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ if (markdownSpace(code)) {
+ effects.enter(types.blockQuotePrefixWhitespace)
+ effects.consume(code)
+ effects.exit(types.blockQuotePrefixWhitespace)
+ effects.exit(types.blockQuotePrefix)
+ return ok
+ }
+
+ effects.exit(types.blockQuotePrefix)
+ return ok(code)
+ }
+}
+
+function tokenizeBlockQuoteContinuation(effects, ok, nok) {
+ return spaceFactory(
+ effects,
+ effects.attempt(blockQuote, ok, nok),
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+}
+
+function exit(effects) {
+ effects.exit(types.blockQuote)
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.js
new file mode 100644
index 0000000000..2c79640003
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.js
@@ -0,0 +1,44 @@
+'use strict'
+
+var assert = require('assert')
+var asciiPunctuation = require('../character/ascii-punctuation.js')
+var codes = require('../character/codes.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var characterEscape = {
+ name: 'characterEscape',
+ tokenize: tokenizeCharacterEscape
+}
+
+function tokenizeCharacterEscape(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.backslash, 'expected `\\`')
+ effects.enter(types.characterEscape)
+ effects.enter(types.escapeMarker)
+ effects.consume(code)
+ effects.exit(types.escapeMarker)
+ return open
+ }
+
+ function open(code) {
+ if (asciiPunctuation(code)) {
+ effects.enter(types.characterEscapeValue)
+ effects.consume(code)
+ effects.exit(types.characterEscapeValue)
+ effects.exit(types.characterEscape)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = characterEscape
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.mjs
new file mode 100644
index 0000000000..fae1f77108
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-escape.mjs
@@ -0,0 +1,35 @@
+var characterEscape = {
+ name: 'characterEscape',
+ tokenize: tokenizeCharacterEscape
+}
+export default characterEscape
+
+import assert from 'assert'
+import asciiPunctuation from '../character/ascii-punctuation.mjs'
+import codes from '../character/codes.mjs'
+import types from '../constant/types.mjs'
+
+function tokenizeCharacterEscape(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert(code === codes.backslash, 'expected `\\`')
+ effects.enter(types.characterEscape)
+ effects.enter(types.escapeMarker)
+ effects.consume(code)
+ effects.exit(types.escapeMarker)
+ return open
+ }
+
+ function open(code) {
+ if (asciiPunctuation(code)) {
+ effects.enter(types.characterEscapeValue)
+ effects.consume(code)
+ effects.exit(types.characterEscapeValue)
+ effects.exit(types.characterEscape)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.js
new file mode 100644
index 0000000000..0f3966c6d7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.js
@@ -0,0 +1,101 @@
+'use strict'
+
+var assert = require('assert')
+var decodeEntity = require('parse-entities/decode-entity.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var asciiDigit = require('../character/ascii-digit.js')
+var asciiHexDigit = require('../character/ascii-hex-digit.js')
+var codes = require('../character/codes.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+var decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)
+
+var characterReference = {
+ name: 'characterReference',
+ tokenize: tokenizeCharacterReference
+}
+
+function tokenizeCharacterReference(effects, ok, nok) {
+ var self = this
+ var size = 0
+ var max
+ var test
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.ampersand, 'expected `&`')
+ effects.enter(types.characterReference)
+ effects.enter(types.characterReferenceMarker)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarker)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.numberSign) {
+ effects.enter(types.characterReferenceMarkerNumeric)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarkerNumeric)
+ return numeric
+ }
+
+ effects.enter(types.characterReferenceValue)
+ max = constants.characterReferenceNamedSizeMax
+ test = asciiAlphanumeric
+ return value(code)
+ }
+
+ function numeric(code) {
+ if (code === codes.uppercaseX || code === codes.lowercaseX) {
+ effects.enter(types.characterReferenceMarkerHexadecimal)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarkerHexadecimal)
+ effects.enter(types.characterReferenceValue)
+ max = constants.characterReferenceHexadecimalSizeMax
+ test = asciiHexDigit
+ return value
+ }
+
+ effects.enter(types.characterReferenceValue)
+ max = constants.characterReferenceDecimalSizeMax
+ test = asciiDigit
+ return value(code)
+ }
+
+ function value(code) {
+ var token
+
+ if (code === codes.semicolon && size) {
+ token = effects.exit(types.characterReferenceValue)
+
+ if (
+ test === asciiAlphanumeric &&
+ !decodeEntity__default['default'](self.sliceSerialize(token))
+ ) {
+ return nok(code)
+ }
+
+ effects.enter(types.characterReferenceMarker)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarker)
+ effects.exit(types.characterReference)
+ return ok
+ }
+
+ if (test(code) && size++ < max) {
+ effects.consume(code)
+ return value
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = characterReference
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.mjs
new file mode 100644
index 0000000000..eb76075a6d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/character-reference.mjs
@@ -0,0 +1,88 @@
+var characterReference = {
+ name: 'characterReference',
+ tokenize: tokenizeCharacterReference
+}
+export default characterReference
+
+import assert from 'assert'
+import decode from 'parse-entities/decode-entity.js'
+import asciiAlphanumeric from '../character/ascii-alphanumeric.mjs'
+import asciiDigit from '../character/ascii-digit.mjs'
+import asciiHexDigit from '../character/ascii-hex-digit.mjs'
+import codes from '../character/codes.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+
+function tokenizeCharacterReference(effects, ok, nok) {
+ var self = this
+ var size = 0
+ var max
+ var test
+
+ return start
+
+ function start(code) {
+ assert(code === codes.ampersand, 'expected `&`')
+ effects.enter(types.characterReference)
+ effects.enter(types.characterReferenceMarker)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarker)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.numberSign) {
+ effects.enter(types.characterReferenceMarkerNumeric)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarkerNumeric)
+ return numeric
+ }
+
+ effects.enter(types.characterReferenceValue)
+ max = constants.characterReferenceNamedSizeMax
+ test = asciiAlphanumeric
+ return value(code)
+ }
+
+ function numeric(code) {
+ if (code === codes.uppercaseX || code === codes.lowercaseX) {
+ effects.enter(types.characterReferenceMarkerHexadecimal)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarkerHexadecimal)
+ effects.enter(types.characterReferenceValue)
+ max = constants.characterReferenceHexadecimalSizeMax
+ test = asciiHexDigit
+ return value
+ }
+
+ effects.enter(types.characterReferenceValue)
+ max = constants.characterReferenceDecimalSizeMax
+ test = asciiDigit
+ return value(code)
+ }
+
+ function value(code) {
+ var token
+
+ if (code === codes.semicolon && size) {
+ token = effects.exit(types.characterReferenceValue)
+
+ if (test === asciiAlphanumeric && !decode(self.sliceSerialize(token))) {
+ return nok(code)
+ }
+
+ effects.enter(types.characterReferenceMarker)
+ effects.consume(code)
+ effects.exit(types.characterReferenceMarker)
+ effects.exit(types.characterReference)
+ return ok
+ }
+
+ if (test(code) && size++ < max) {
+ effects.consume(code)
+ return value
+ }
+
+ return nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.js
new file mode 100644
index 0000000000..f73583584c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.js
@@ -0,0 +1,185 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var prefixSize = require('../util/prefix-size.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var codeFenced = {
+ name: 'codeFenced',
+ tokenize: tokenizeCodeFenced,
+ concrete: true
+}
+
+function tokenizeCodeFenced(effects, ok, nok) {
+ var self = this
+ var closingFenceConstruct = {tokenize: tokenizeClosingFence, partial: true}
+ var initialPrefix = prefixSize(this.events, types.linePrefix)
+ var sizeOpen = 0
+ var marker
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code === codes.graveAccent || code === codes.tilde,
+ 'expected `` ` `` or `~`'
+ )
+ effects.enter(types.codeFenced)
+ effects.enter(types.codeFencedFence)
+ effects.enter(types.codeFencedFenceSequence)
+ marker = code
+ return sequenceOpen(code)
+ }
+
+ function sequenceOpen(code) {
+ if (code === marker) {
+ effects.consume(code)
+ sizeOpen++
+ return sequenceOpen
+ }
+
+ effects.exit(types.codeFencedFenceSequence)
+ return sizeOpen < constants.codeFencedSequenceSizeMin
+ ? nok(code)
+ : factorySpace(effects, infoOpen, types.whitespace)(code)
+ }
+
+ function infoOpen(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return openAfter(code)
+ }
+
+ effects.enter(types.codeFencedFenceInfo)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return info(code)
+ }
+
+ function info(code) {
+ if (code === codes.eof || markdownLineEndingOrSpace(code)) {
+ effects.exit(types.chunkString)
+ effects.exit(types.codeFencedFenceInfo)
+ return factorySpace(effects, infoAfter, types.whitespace)(code)
+ }
+
+ if (code === codes.graveAccent && code === marker) return nok(code)
+ effects.consume(code)
+ return info
+ }
+
+ function infoAfter(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return openAfter(code)
+ }
+
+ effects.enter(types.codeFencedFenceMeta)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return meta(code)
+ }
+
+ function meta(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.chunkString)
+ effects.exit(types.codeFencedFenceMeta)
+ return openAfter(code)
+ }
+
+ if (code === codes.graveAccent && code === marker) return nok(code)
+ effects.consume(code)
+ return meta
+ }
+
+ function openAfter(code) {
+ effects.exit(types.codeFencedFence)
+ return self.interrupt ? ok(code) : content(code)
+ }
+
+ function content(code) {
+ if (code === codes.eof) {
+ return after(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return effects.attempt(
+ closingFenceConstruct,
+ after,
+ initialPrefix
+ ? factorySpace(effects, content, types.linePrefix, initialPrefix + 1)
+ : content
+ )
+ }
+
+ effects.enter(types.codeFlowValue)
+ return contentContinue(code)
+ }
+
+ function contentContinue(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.codeFlowValue)
+ return content(code)
+ }
+
+ effects.consume(code)
+ return contentContinue
+ }
+
+ function after(code) {
+ effects.exit(types.codeFenced)
+ return ok(code)
+ }
+
+ function tokenizeClosingFence(effects, ok, nok) {
+ var size = 0
+
+ return factorySpace(
+ effects,
+ closingSequenceStart,
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+
+ function closingSequenceStart(code) {
+ effects.enter(types.codeFencedFence)
+ effects.enter(types.codeFencedFenceSequence)
+ return closingSequence(code)
+ }
+
+ function closingSequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ size++
+ return closingSequence
+ }
+
+ if (size < sizeOpen) return nok(code)
+ effects.exit(types.codeFencedFenceSequence)
+ return factorySpace(effects, closingSequenceEnd, types.whitespace)(code)
+ }
+
+ function closingSequenceEnd(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.codeFencedFence)
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+ }
+}
+
+module.exports = codeFenced
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.mjs
new file mode 100644
index 0000000000..14f83b1fdd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-fenced.mjs
@@ -0,0 +1,176 @@
+var codeFenced = {
+ name: 'codeFenced',
+ tokenize: tokenizeCodeFenced,
+ concrete: true
+}
+export default codeFenced
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import prefixSize from '../util/prefix-size.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function tokenizeCodeFenced(effects, ok, nok) {
+ var self = this
+ var closingFenceConstruct = {tokenize: tokenizeClosingFence, partial: true}
+ var initialPrefix = prefixSize(this.events, types.linePrefix)
+ var sizeOpen = 0
+ var marker
+
+ return start
+
+ function start(code) {
+ assert(
+ code === codes.graveAccent || code === codes.tilde,
+ 'expected `` ` `` or `~`'
+ )
+ effects.enter(types.codeFenced)
+ effects.enter(types.codeFencedFence)
+ effects.enter(types.codeFencedFenceSequence)
+ marker = code
+ return sequenceOpen(code)
+ }
+
+ function sequenceOpen(code) {
+ if (code === marker) {
+ effects.consume(code)
+ sizeOpen++
+ return sequenceOpen
+ }
+
+ effects.exit(types.codeFencedFenceSequence)
+ return sizeOpen < constants.codeFencedSequenceSizeMin
+ ? nok(code)
+ : spaceFactory(effects, infoOpen, types.whitespace)(code)
+ }
+
+ function infoOpen(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return openAfter(code)
+ }
+
+ effects.enter(types.codeFencedFenceInfo)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return info(code)
+ }
+
+ function info(code) {
+ if (code === codes.eof || markdownLineEndingOrSpace(code)) {
+ effects.exit(types.chunkString)
+ effects.exit(types.codeFencedFenceInfo)
+ return spaceFactory(effects, infoAfter, types.whitespace)(code)
+ }
+
+ if (code === codes.graveAccent && code === marker) return nok(code)
+ effects.consume(code)
+ return info
+ }
+
+ function infoAfter(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return openAfter(code)
+ }
+
+ effects.enter(types.codeFencedFenceMeta)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return meta(code)
+ }
+
+ function meta(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.chunkString)
+ effects.exit(types.codeFencedFenceMeta)
+ return openAfter(code)
+ }
+
+ if (code === codes.graveAccent && code === marker) return nok(code)
+ effects.consume(code)
+ return meta
+ }
+
+ function openAfter(code) {
+ effects.exit(types.codeFencedFence)
+ return self.interrupt ? ok(code) : content(code)
+ }
+
+ function content(code) {
+ if (code === codes.eof) {
+ return after(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return effects.attempt(
+ closingFenceConstruct,
+ after,
+ initialPrefix
+ ? spaceFactory(effects, content, types.linePrefix, initialPrefix + 1)
+ : content
+ )
+ }
+
+ effects.enter(types.codeFlowValue)
+ return contentContinue(code)
+ }
+
+ function contentContinue(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.codeFlowValue)
+ return content(code)
+ }
+
+ effects.consume(code)
+ return contentContinue
+ }
+
+ function after(code) {
+ effects.exit(types.codeFenced)
+ return ok(code)
+ }
+
+ function tokenizeClosingFence(effects, ok, nok) {
+ var size = 0
+
+ return spaceFactory(
+ effects,
+ closingSequenceStart,
+ types.linePrefix,
+ this.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+
+ function closingSequenceStart(code) {
+ effects.enter(types.codeFencedFence)
+ effects.enter(types.codeFencedFenceSequence)
+ return closingSequence(code)
+ }
+
+ function closingSequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ size++
+ return closingSequence
+ }
+
+ if (size < sizeOpen) return nok(code)
+ effects.exit(types.codeFencedFenceSequence)
+ return spaceFactory(effects, closingSequenceEnd, types.whitespace)(code)
+ }
+
+ function closingSequenceEnd(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.codeFencedFence)
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.js
new file mode 100644
index 0000000000..8725366d26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.js
@@ -0,0 +1,91 @@
+'use strict'
+
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var prefixSize = require('../util/prefix-size.js')
+var factorySpace = require('./factory-space.js')
+
+var codeIndented = {
+ name: 'codeIndented',
+ tokenize: tokenizeCodeIndented,
+ resolve: resolveCodeIndented
+}
+
+var indentedContentConstruct = {
+ tokenize: tokenizeIndentedContent,
+ partial: true
+}
+
+function resolveCodeIndented(events, context) {
+ var code = {
+ type: types.codeIndented,
+ start: events[0][1].start,
+ end: events[events.length - 1][1].end
+ }
+
+ chunkedSplice(events, 0, 0, [['enter', code, context]])
+ chunkedSplice(events, events.length, 0, [['exit', code, context]])
+
+ return events
+}
+
+function tokenizeCodeIndented(effects, ok, nok) {
+ return effects.attempt(indentedContentConstruct, afterPrefix, nok)
+
+ function afterPrefix(code) {
+ if (code === codes.eof) {
+ return ok(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)
+ }
+
+ effects.enter(types.codeFlowValue)
+ return content(code)
+ }
+
+ function content(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.codeFlowValue)
+ return afterPrefix(code)
+ }
+
+ effects.consume(code)
+ return content
+ }
+}
+
+function tokenizeIndentedContent(effects, ok, nok) {
+ var self = this
+
+ return factorySpace(
+ effects,
+ afterPrefix,
+ types.linePrefix,
+ constants.tabSize + 1
+ )
+
+ function afterPrefix(code) {
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return factorySpace(
+ effects,
+ afterPrefix,
+ types.linePrefix,
+ constants.tabSize + 1
+ )
+ }
+
+ return prefixSize(self.events, types.linePrefix) < constants.tabSize
+ ? nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = codeIndented
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.mjs
new file mode 100644
index 0000000000..9191914141
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-indented.mjs
@@ -0,0 +1,88 @@
+var codeIndented = {
+ name: 'codeIndented',
+ tokenize: tokenizeCodeIndented,
+ resolve: resolveCodeIndented
+}
+export default codeIndented
+
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import chunkedSplice from '../util/chunked-splice.mjs'
+import prefixSize from '../util/prefix-size.mjs'
+import spaceFactory from './factory-space.mjs'
+
+var indentedContentConstruct = {
+ tokenize: tokenizeIndentedContent,
+ partial: true
+}
+
+function resolveCodeIndented(events, context) {
+ var code = {
+ type: types.codeIndented,
+ start: events[0][1].start,
+ end: events[events.length - 1][1].end
+ }
+
+ chunkedSplice(events, 0, 0, [['enter', code, context]])
+ chunkedSplice(events, events.length, 0, [['exit', code, context]])
+
+ return events
+}
+
+function tokenizeCodeIndented(effects, ok, nok) {
+ return effects.attempt(indentedContentConstruct, afterPrefix, nok)
+
+ function afterPrefix(code) {
+ if (code === codes.eof) {
+ return ok(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)
+ }
+
+ effects.enter(types.codeFlowValue)
+ return content(code)
+ }
+
+ function content(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.codeFlowValue)
+ return afterPrefix(code)
+ }
+
+ effects.consume(code)
+ return content
+ }
+}
+
+function tokenizeIndentedContent(effects, ok, nok) {
+ var self = this
+
+ return spaceFactory(
+ effects,
+ afterPrefix,
+ types.linePrefix,
+ constants.tabSize + 1
+ )
+
+ function afterPrefix(code) {
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return spaceFactory(
+ effects,
+ afterPrefix,
+ types.linePrefix,
+ constants.tabSize + 1
+ )
+ }
+
+ return prefixSize(self.events, types.linePrefix) < constants.tabSize
+ ? nok(code)
+ : ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.js
new file mode 100644
index 0000000000..0eb1db81f1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.js
@@ -0,0 +1,191 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var codeText = {
+ name: 'codeText',
+ tokenize: tokenizeCodeText,
+ resolve: resolveCodeText,
+ previous: previous
+}
+
+function resolveCodeText(events) {
+ var tailExitIndex = events.length - 4
+ var headEnterIndex = 3
+ var index
+ var enter
+
+ // If we start and end with an EOL or a space.
+ if (
+ (events[headEnterIndex][1].type === types.lineEnding ||
+ events[headEnterIndex][1].type === 'space') &&
+ (events[tailExitIndex][1].type === types.lineEnding ||
+ events[tailExitIndex][1].type === 'space')
+ ) {
+ index = headEnterIndex
+
+ // And we have data.
+ while (++index < tailExitIndex) {
+ if (events[index][1].type === types.codeTextData) {
+ // Then we have padding.
+ events[tailExitIndex][1].type = events[headEnterIndex][1].type =
+ types.codeTextPadding
+ headEnterIndex += 2
+ tailExitIndex -= 2
+ break
+ }
+ }
+ }
+
+ // Merge adjacent spaces and data.
+ index = headEnterIndex - 1
+ tailExitIndex++
+
+ while (++index <= tailExitIndex) {
+ if (enter === undefined) {
+ if (
+ index !== tailExitIndex &&
+ events[index][1].type !== types.lineEnding
+ ) {
+ enter = index
+ }
+ } else if (
+ index === tailExitIndex ||
+ events[index][1].type === types.lineEnding
+ ) {
+ events[enter][1].type = types.codeTextData
+
+ if (index !== enter + 2) {
+ events[enter][1].end = events[index - 1][1].end
+ events.splice(enter + 2, index - enter - 2)
+ tailExitIndex -= index - enter - 2
+ index = enter + 2
+ }
+
+ enter = undefined
+ }
+ }
+
+ return events
+}
+
+function previous(code) {
+ // If there is a previous code, there will always be a tail.
+ return (
+ code !== codes.graveAccent ||
+ this.events[this.events.length - 1][1].type === types.characterEscape
+ )
+}
+
+function tokenizeCodeText(effects, ok, nok) {
+ var self = this
+ var sizeOpen = 0
+ var size
+ var token
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.graveAccent, 'expected `` ` ``')
+ assert__default['default'](
+ previous.call(self, self.previous),
+ 'expected correct previous'
+ )
+ effects.enter(types.codeText)
+ effects.enter(types.codeTextSequence)
+ return openingSequence(code)
+ }
+
+ function openingSequence(code) {
+ if (code === codes.graveAccent) {
+ effects.consume(code)
+ sizeOpen++
+ return openingSequence
+ }
+
+ effects.exit(types.codeTextSequence)
+ return gap(code)
+ }
+
+ function gap(code) {
+ // EOF.
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ // Closing fence?
+ // Could also be data.
+ if (code === codes.graveAccent) {
+ token = effects.enter(types.codeTextSequence)
+ size = 0
+ return closingSequence(code)
+ }
+
+ // Tabs don’t work, and virtual spaces don’t make sense.
+ if (code === codes.space) {
+ effects.enter('space')
+ effects.consume(code)
+ effects.exit('space')
+ return gap
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return gap
+ }
+
+ // Data.
+ effects.enter(types.codeTextData)
+ return data(code)
+ }
+
+ // In code.
+ function data(code) {
+ if (
+ code === codes.eof ||
+ code === codes.space ||
+ code === codes.graveAccent ||
+ markdownLineEnding(code)
+ ) {
+ effects.exit(types.codeTextData)
+ return gap(code)
+ }
+
+ effects.consume(code)
+ return data
+ }
+
+ // Closing fence.
+ function closingSequence(code) {
+ // More.
+ if (code === codes.graveAccent) {
+ effects.consume(code)
+ size++
+ return closingSequence
+ }
+
+ // Done!
+ if (size === sizeOpen) {
+ effects.exit(types.codeTextSequence)
+ effects.exit(types.codeText)
+ return ok(code)
+ }
+
+ // More or less accents: mark as data.
+ token.type = types.codeTextData
+ return data(code)
+ }
+}
+
+module.exports = codeText
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.mjs
new file mode 100644
index 0000000000..7c44b65949
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/code-text.mjs
@@ -0,0 +1,179 @@
+var codeText = {
+ name: 'codeText',
+ tokenize: tokenizeCodeText,
+ resolve: resolveCodeText,
+ previous: previous
+}
+export default codeText
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import types from '../constant/types.mjs'
+
+function resolveCodeText(events) {
+ var tailExitIndex = events.length - 4
+ var headEnterIndex = 3
+ var index
+ var enter
+
+ // If we start and end with an EOL or a space.
+ if (
+ (events[headEnterIndex][1].type === types.lineEnding ||
+ events[headEnterIndex][1].type === 'space') &&
+ (events[tailExitIndex][1].type === types.lineEnding ||
+ events[tailExitIndex][1].type === 'space')
+ ) {
+ index = headEnterIndex
+
+ // And we have data.
+ while (++index < tailExitIndex) {
+ if (events[index][1].type === types.codeTextData) {
+ // Then we have padding.
+ events[tailExitIndex][1].type = events[headEnterIndex][1].type =
+ types.codeTextPadding
+ headEnterIndex += 2
+ tailExitIndex -= 2
+ break
+ }
+ }
+ }
+
+ // Merge adjacent spaces and data.
+ index = headEnterIndex - 1
+ tailExitIndex++
+
+ while (++index <= tailExitIndex) {
+ if (enter === undefined) {
+ if (
+ index !== tailExitIndex &&
+ events[index][1].type !== types.lineEnding
+ ) {
+ enter = index
+ }
+ } else if (
+ index === tailExitIndex ||
+ events[index][1].type === types.lineEnding
+ ) {
+ events[enter][1].type = types.codeTextData
+
+ if (index !== enter + 2) {
+ events[enter][1].end = events[index - 1][1].end
+ events.splice(enter + 2, index - enter - 2)
+ tailExitIndex -= index - enter - 2
+ index = enter + 2
+ }
+
+ enter = undefined
+ }
+ }
+
+ return events
+}
+
+function previous(code) {
+ // If there is a previous code, there will always be a tail.
+ return (
+ code !== codes.graveAccent ||
+ this.events[this.events.length - 1][1].type === types.characterEscape
+ )
+}
+
+function tokenizeCodeText(effects, ok, nok) {
+ var self = this
+ var sizeOpen = 0
+ var size
+ var token
+
+ return start
+
+ function start(code) {
+ assert(code === codes.graveAccent, 'expected `` ` ``')
+ assert(previous.call(self, self.previous), 'expected correct previous')
+ effects.enter(types.codeText)
+ effects.enter(types.codeTextSequence)
+ return openingSequence(code)
+ }
+
+ function openingSequence(code) {
+ if (code === codes.graveAccent) {
+ effects.consume(code)
+ sizeOpen++
+ return openingSequence
+ }
+
+ effects.exit(types.codeTextSequence)
+ return gap(code)
+ }
+
+ function gap(code) {
+ // EOF.
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ // Closing fence?
+ // Could also be data.
+ if (code === codes.graveAccent) {
+ token = effects.enter(types.codeTextSequence)
+ size = 0
+ return closingSequence(code)
+ }
+
+ // Tabs don’t work, and virtual spaces don’t make sense.
+ if (code === codes.space) {
+ effects.enter('space')
+ effects.consume(code)
+ effects.exit('space')
+ return gap
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return gap
+ }
+
+ // Data.
+ effects.enter(types.codeTextData)
+ return data(code)
+ }
+
+ // In code.
+ function data(code) {
+ if (
+ code === codes.eof ||
+ code === codes.space ||
+ code === codes.graveAccent ||
+ markdownLineEnding(code)
+ ) {
+ effects.exit(types.codeTextData)
+ return gap(code)
+ }
+
+ effects.consume(code)
+ return data
+ }
+
+ // Closing fence.
+ function closingSequence(code) {
+ // More.
+ if (code === codes.graveAccent) {
+ effects.consume(code)
+ size++
+ return closingSequence
+ }
+
+ // Done!
+ if (size === sizeOpen) {
+ effects.exit(types.codeTextSequence)
+ effects.exit(types.codeText)
+ return ok(code)
+ }
+
+ // More or less accents: mark as data.
+ token.type = types.codeTextData
+ return data(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.js
new file mode 100644
index 0000000000..cb763ec50f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.js
@@ -0,0 +1,121 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var prefixSize = require('../util/prefix-size.js')
+var subtokenize = require('../util/subtokenize.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+// No name because it must not be turned off.
+var content = {
+ tokenize: tokenizeContent,
+ resolve: resolveContent,
+ interruptible: true,
+ lazy: true
+}
+
+var continuationConstruct = {tokenize: tokenizeContinuation, partial: true}
+
+// Content is transparent: it’s parsed right now. That way, definitions are also
+// parsed right now: before text in paragraphs (specifically, media) are parsed.
+function resolveContent(events) {
+ subtokenize(events)
+ return events
+}
+
+function tokenizeContent(effects, ok) {
+ var previous
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code !== codes.eof && !markdownLineEnding(code),
+ 'expected no eof or eol'
+ )
+
+ effects.enter(types.content)
+ previous = effects.enter(types.chunkContent, {
+ contentType: constants.contentTypeContent
+ })
+ return data(code)
+ }
+
+ function data(code) {
+ if (code === codes.eof) {
+ return contentEnd(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ return effects.check(
+ continuationConstruct,
+ contentContinue,
+ contentEnd
+ )(code)
+ }
+
+ // Data.
+ effects.consume(code)
+ return data
+ }
+
+ function contentEnd(code) {
+ effects.exit(types.chunkContent)
+ effects.exit(types.content)
+ return ok(code)
+ }
+
+ function contentContinue(code) {
+ assert__default['default'](markdownLineEnding(code), 'expected eol')
+ effects.consume(code)
+ effects.exit(types.chunkContent)
+ previous = previous.next = effects.enter(types.chunkContent, {
+ contentType: constants.contentTypeContent,
+ previous: previous
+ })
+ return data
+ }
+}
+
+function tokenizeContinuation(effects, ok, nok) {
+ var self = this
+
+ return startLookahead
+
+ function startLookahead(code) {
+ assert__default['default'](
+ markdownLineEnding(code),
+ 'expected a line ending'
+ )
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return factorySpace(effects, prefixed, types.linePrefix)
+ }
+
+ function prefixed(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ if (
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||
+ prefixSize(self.events, types.linePrefix) < constants.tabSize
+ ) {
+ return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)
+ }
+
+ return ok(code)
+ }
+}
+
+module.exports = content
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.mjs
new file mode 100644
index 0000000000..ca9c2e15b6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/content.mjs
@@ -0,0 +1,109 @@
+// No name because it must not be turned off.
+var content = {
+ tokenize: tokenizeContent,
+ resolve: resolveContent,
+ interruptible: true,
+ lazy: true
+}
+export default content
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import prefixSize from '../util/prefix-size.mjs'
+import subtokenize from '../util/subtokenize.mjs'
+import spaceFactory from './factory-space.mjs'
+
+var continuationConstruct = {tokenize: tokenizeContinuation, partial: true}
+
+// Content is transparent: it’s parsed right now. That way, definitions are also
+// parsed right now: before text in paragraphs (specifically, media) are parsed.
+function resolveContent(events) {
+ subtokenize(events)
+ return events
+}
+
+function tokenizeContent(effects, ok) {
+ var previous
+
+ return start
+
+ function start(code) {
+ assert(
+ code !== codes.eof && !markdownLineEnding(code),
+ 'expected no eof or eol'
+ )
+
+ effects.enter(types.content)
+ previous = effects.enter(types.chunkContent, {
+ contentType: constants.contentTypeContent
+ })
+ return data(code)
+ }
+
+ function data(code) {
+ if (code === codes.eof) {
+ return contentEnd(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ return effects.check(
+ continuationConstruct,
+ contentContinue,
+ contentEnd
+ )(code)
+ }
+
+ // Data.
+ effects.consume(code)
+ return data
+ }
+
+ function contentEnd(code) {
+ effects.exit(types.chunkContent)
+ effects.exit(types.content)
+ return ok(code)
+ }
+
+ function contentContinue(code) {
+ assert(markdownLineEnding(code), 'expected eol')
+ effects.consume(code)
+ effects.exit(types.chunkContent)
+ previous = previous.next = effects.enter(types.chunkContent, {
+ contentType: constants.contentTypeContent,
+ previous: previous
+ })
+ return data
+ }
+}
+
+function tokenizeContinuation(effects, ok, nok) {
+ var self = this
+
+ return startLookahead
+
+ function startLookahead(code) {
+ assert(markdownLineEnding(code), 'expected a line ending')
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return spaceFactory(effects, prefixed, types.linePrefix)
+ }
+
+ function prefixed(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ if (
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||
+ prefixSize(self.events, types.linePrefix) < constants.tabSize
+ ) {
+ return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)
+ }
+
+ return ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.js
new file mode 100644
index 0000000000..c4604d5783
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.js
@@ -0,0 +1,129 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var types = require('../constant/types.js')
+var normalizeIdentifier = require('../util/normalize-identifier.js')
+var factoryDestination = require('./factory-destination.js')
+var factoryLabel = require('./factory-label.js')
+var factorySpace = require('./factory-space.js')
+var factoryWhitespace = require('./factory-whitespace.js')
+var factoryTitle = require('./factory-title.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var definition = {
+ name: 'definition',
+ tokenize: tokenizeDefinition
+}
+
+var titleConstruct = {tokenize: tokenizeTitle, partial: true}
+
+function tokenizeDefinition(effects, ok, nok) {
+ var self = this
+ var identifier
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.leftSquareBracket, 'expected `[`')
+ effects.enter(types.definition)
+ return factoryLabel.call(
+ self,
+ effects,
+ labelAfter,
+ nok,
+ types.definitionLabel,
+ types.definitionLabelMarker,
+ types.definitionLabelString
+ )(code)
+ }
+
+ function labelAfter(code) {
+ identifier = normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+
+ if (code === codes.colon) {
+ effects.enter(types.definitionMarker)
+ effects.consume(code)
+ effects.exit(types.definitionMarker)
+
+ // Note: blank lines can’t exist in content.
+ return factoryWhitespace(
+ effects,
+ factoryDestination(
+ effects,
+ effects.attempt(
+ titleConstruct,
+ factorySpace(effects, after, types.whitespace),
+ factorySpace(effects, after, types.whitespace)
+ ),
+ nok,
+ types.definitionDestination,
+ types.definitionDestinationLiteral,
+ types.definitionDestinationLiteralMarker,
+ types.definitionDestinationRaw,
+ types.definitionDestinationString
+ )
+ )
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.definition)
+
+ if (self.parser.defined.indexOf(identifier) < 0) {
+ self.parser.defined.push(identifier)
+ }
+
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+function tokenizeTitle(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ return markdownLineEndingOrSpace(code)
+ ? factoryWhitespace(effects, before)(code)
+ : nok(code)
+ }
+
+ function before(code) {
+ if (
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.leftParenthesis
+ ) {
+ return factoryTitle(
+ effects,
+ factorySpace(effects, after, types.whitespace),
+ nok,
+ types.definitionTitle,
+ types.definitionTitleMarker,
+ types.definitionTitleString
+ )(code)
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ return code === codes.eof || markdownLineEnding(code) ? ok(code) : nok(code)
+ }
+}
+
+module.exports = definition
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.mjs
new file mode 100644
index 0000000000..5cc0dde806
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/definition.mjs
@@ -0,0 +1,120 @@
+var definition = {
+ name: 'definition',
+ tokenize: tokenizeDefinition
+}
+export default definition
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import types from '../constant/types.mjs'
+import normalizeIdentifier from '../util/normalize-identifier.mjs'
+import destinationFactory from './factory-destination.mjs'
+import labelFactory from './factory-label.mjs'
+import spaceFactory from './factory-space.mjs'
+import whitespaceFactory from './factory-whitespace.mjs'
+import titleFactory from './factory-title.mjs'
+
+var titleConstruct = {tokenize: tokenizeTitle, partial: true}
+
+function tokenizeDefinition(effects, ok, nok) {
+ var self = this
+ var identifier
+
+ return start
+
+ function start(code) {
+ assert(code === codes.leftSquareBracket, 'expected `[`')
+ effects.enter(types.definition)
+ return labelFactory.call(
+ self,
+ effects,
+ labelAfter,
+ nok,
+ types.definitionLabel,
+ types.definitionLabelMarker,
+ types.definitionLabelString
+ )(code)
+ }
+
+ function labelAfter(code) {
+ identifier = normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+
+ if (code === codes.colon) {
+ effects.enter(types.definitionMarker)
+ effects.consume(code)
+ effects.exit(types.definitionMarker)
+
+ // Note: blank lines can’t exist in content.
+ return whitespaceFactory(
+ effects,
+ destinationFactory(
+ effects,
+ effects.attempt(
+ titleConstruct,
+ spaceFactory(effects, after, types.whitespace),
+ spaceFactory(effects, after, types.whitespace)
+ ),
+ nok,
+ types.definitionDestination,
+ types.definitionDestinationLiteral,
+ types.definitionDestinationLiteralMarker,
+ types.definitionDestinationRaw,
+ types.definitionDestinationString
+ )
+ )
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.definition)
+
+ if (self.parser.defined.indexOf(identifier) < 0) {
+ self.parser.defined.push(identifier)
+ }
+
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+function tokenizeTitle(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ return markdownLineEndingOrSpace(code)
+ ? whitespaceFactory(effects, before)(code)
+ : nok(code)
+ }
+
+ function before(code) {
+ if (
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.leftParenthesis
+ ) {
+ return titleFactory(
+ effects,
+ spaceFactory(effects, after, types.whitespace),
+ nok,
+ types.definitionTitle,
+ types.definitionTitleMarker,
+ types.definitionTitleString
+ )(code)
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ return code === codes.eof || markdownLineEnding(code) ? ok(code) : nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.js
new file mode 100644
index 0000000000..d746cd01d2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.js
@@ -0,0 +1,145 @@
+'use strict'
+
+var asciiControl = require('../character/ascii-control.js')
+var codes = require('../character/codes.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+
+// eslint-disable-next-line max-params
+function destinationFactory(
+ effects,
+ ok,
+ nok,
+ type,
+ literalType,
+ literalMarkerType,
+ rawType,
+ stringType,
+ max
+) {
+ var limit = max || Infinity
+ var balance = 0
+
+ return start
+
+ function start(code) {
+ if (code === codes.lessThan) {
+ effects.enter(type)
+ effects.enter(literalType)
+ effects.enter(literalMarkerType)
+ effects.consume(code)
+ effects.exit(literalMarkerType)
+ return destinationEnclosedBefore
+ }
+
+ if (asciiControl(code) || code === codes.rightParenthesis) {
+ return nok(code)
+ }
+
+ effects.enter(type)
+ effects.enter(rawType)
+ effects.enter(stringType)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return destinationRaw(code)
+ }
+
+ function destinationEnclosedBefore(code) {
+ if (code === codes.greaterThan) {
+ effects.enter(literalMarkerType)
+ effects.consume(code)
+ effects.exit(literalMarkerType)
+ effects.exit(literalType)
+ effects.exit(type)
+ return ok
+ }
+
+ effects.enter(stringType)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return destinationEnclosed(code)
+ }
+
+ function destinationEnclosed(code) {
+ if (code === codes.greaterThan) {
+ effects.exit(types.chunkString)
+ effects.exit(stringType)
+ return destinationEnclosedBefore(code)
+ }
+
+ if (
+ code === codes.eof ||
+ code === codes.lessThan ||
+ markdownLineEnding(code)
+ ) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return code === codes.backslash
+ ? destinationEnclosedEscape
+ : destinationEnclosed
+ }
+
+ function destinationEnclosedEscape(code) {
+ if (
+ code === codes.lessThan ||
+ code === codes.greaterThan ||
+ code === codes.backslash
+ ) {
+ effects.consume(code)
+ return destinationEnclosed
+ }
+
+ return destinationEnclosed(code)
+ }
+
+ function destinationRaw(code) {
+ if (code === codes.leftParenthesis) {
+ if (++balance > limit) return nok(code)
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ if (code === codes.rightParenthesis) {
+ if (!balance--) {
+ effects.exit(types.chunkString)
+ effects.exit(stringType)
+ effects.exit(rawType)
+ effects.exit(type)
+ return ok(code)
+ }
+
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ if (code === codes.eof || markdownLineEndingOrSpace(code)) {
+ if (balance) return nok(code)
+ effects.exit(types.chunkString)
+ effects.exit(stringType)
+ effects.exit(rawType)
+ effects.exit(type)
+ return ok(code)
+ }
+
+ if (asciiControl(code)) return nok(code)
+ effects.consume(code)
+ return code === codes.backslash ? destinationRawEscape : destinationRaw
+ }
+
+ function destinationRawEscape(code) {
+ if (
+ code === codes.leftParenthesis ||
+ code === codes.rightParenthesis ||
+ code === codes.backslash
+ ) {
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ return destinationRaw(code)
+ }
+}
+
+module.exports = destinationFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.mjs
new file mode 100644
index 0000000000..be8cf2bd89
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-destination.mjs
@@ -0,0 +1,143 @@
+export default destinationFactory
+
+import asciiControl from '../character/ascii-control.mjs'
+import codes from '../character/codes.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+
+// eslint-disable-next-line max-params
+function destinationFactory(
+ effects,
+ ok,
+ nok,
+ type,
+ literalType,
+ literalMarkerType,
+ rawType,
+ stringType,
+ max
+) {
+ var limit = max || Infinity
+ var balance = 0
+
+ return start
+
+ function start(code) {
+ if (code === codes.lessThan) {
+ effects.enter(type)
+ effects.enter(literalType)
+ effects.enter(literalMarkerType)
+ effects.consume(code)
+ effects.exit(literalMarkerType)
+ return destinationEnclosedBefore
+ }
+
+ if (asciiControl(code) || code === codes.rightParenthesis) {
+ return nok(code)
+ }
+
+ effects.enter(type)
+ effects.enter(rawType)
+ effects.enter(stringType)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return destinationRaw(code)
+ }
+
+ function destinationEnclosedBefore(code) {
+ if (code === codes.greaterThan) {
+ effects.enter(literalMarkerType)
+ effects.consume(code)
+ effects.exit(literalMarkerType)
+ effects.exit(literalType)
+ effects.exit(type)
+ return ok
+ }
+
+ effects.enter(stringType)
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return destinationEnclosed(code)
+ }
+
+ function destinationEnclosed(code) {
+ if (code === codes.greaterThan) {
+ effects.exit(types.chunkString)
+ effects.exit(stringType)
+ return destinationEnclosedBefore(code)
+ }
+
+ if (
+ code === codes.eof ||
+ code === codes.lessThan ||
+ markdownLineEnding(code)
+ ) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return code === codes.backslash
+ ? destinationEnclosedEscape
+ : destinationEnclosed
+ }
+
+ function destinationEnclosedEscape(code) {
+ if (
+ code === codes.lessThan ||
+ code === codes.greaterThan ||
+ code === codes.backslash
+ ) {
+ effects.consume(code)
+ return destinationEnclosed
+ }
+
+ return destinationEnclosed(code)
+ }
+
+ function destinationRaw(code) {
+ if (code === codes.leftParenthesis) {
+ if (++balance > limit) return nok(code)
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ if (code === codes.rightParenthesis) {
+ if (!balance--) {
+ effects.exit(types.chunkString)
+ effects.exit(stringType)
+ effects.exit(rawType)
+ effects.exit(type)
+ return ok(code)
+ }
+
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ if (code === codes.eof || markdownLineEndingOrSpace(code)) {
+ if (balance) return nok(code)
+ effects.exit(types.chunkString)
+ effects.exit(stringType)
+ effects.exit(rawType)
+ effects.exit(type)
+ return ok(code)
+ }
+
+ if (asciiControl(code)) return nok(code)
+ effects.consume(code)
+ return code === codes.backslash ? destinationRawEscape : destinationRaw
+ }
+
+ function destinationRawEscape(code) {
+ if (
+ code === codes.leftParenthesis ||
+ code === codes.rightParenthesis ||
+ code === codes.backslash
+ ) {
+ effects.consume(code)
+ return destinationRaw
+ }
+
+ return destinationRaw(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.js
new file mode 100644
index 0000000000..64d96d78ea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.js
@@ -0,0 +1,102 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+// eslint-disable-next-line max-params
+function labelFactory(effects, ok, nok, type, markerType, stringType) {
+ var self = this
+ var size = 0
+ var data
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.leftSquareBracket, 'expected `[`')
+ effects.enter(type)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.enter(stringType)
+ return atBreak
+ }
+
+ function atBreak(code) {
+ if (
+ code === codes.eof ||
+ code === codes.leftSquareBracket ||
+ (code === codes.rightSquareBracket && !data) ||
+ /* c8 ignore next */
+ (code === codes.caret &&
+ /* c8 ignore next */
+ !size &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs) ||
+ size > constants.linkReferenceSizeMax
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.rightSquareBracket) {
+ effects.exit(stringType)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.exit(type)
+ return ok
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return atBreak
+ }
+
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return label(code)
+ }
+
+ function label(code) {
+ if (
+ code === codes.eof ||
+ code === codes.leftSquareBracket ||
+ code === codes.rightSquareBracket ||
+ markdownLineEnding(code) ||
+ size++ > constants.linkReferenceSizeMax
+ ) {
+ effects.exit(types.chunkString)
+ return atBreak(code)
+ }
+
+ effects.consume(code)
+ data = data || !markdownSpace(code)
+ return code === codes.backslash ? labelEscape : label
+ }
+
+ function labelEscape(code) {
+ if (
+ code === codes.leftSquareBracket ||
+ code === codes.backslash ||
+ code === codes.rightSquareBracket
+ ) {
+ effects.consume(code)
+ size++
+ return label
+ }
+
+ return label(code)
+ }
+}
+
+module.exports = labelFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.mjs
new file mode 100644
index 0000000000..eccdbd5b38
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-label.mjs
@@ -0,0 +1,94 @@
+export default labelFactory
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+
+// eslint-disable-next-line max-params
+function labelFactory(effects, ok, nok, type, markerType, stringType) {
+ var self = this
+ var size = 0
+ var data
+
+ return start
+
+ function start(code) {
+ assert(code === codes.leftSquareBracket, 'expected `[`')
+ effects.enter(type)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.enter(stringType)
+ return atBreak
+ }
+
+ function atBreak(code) {
+ if (
+ code === codes.eof ||
+ code === codes.leftSquareBracket ||
+ (code === codes.rightSquareBracket && !data) ||
+ /* c8 ignore next */
+ (code === codes.caret &&
+ /* c8 ignore next */
+ !size &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs) ||
+ size > constants.linkReferenceSizeMax
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.rightSquareBracket) {
+ effects.exit(stringType)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.exit(type)
+ return ok
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return atBreak
+ }
+
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return label(code)
+ }
+
+ function label(code) {
+ if (
+ code === codes.eof ||
+ code === codes.leftSquareBracket ||
+ code === codes.rightSquareBracket ||
+ markdownLineEnding(code) ||
+ size++ > constants.linkReferenceSizeMax
+ ) {
+ effects.exit(types.chunkString)
+ return atBreak(code)
+ }
+
+ effects.consume(code)
+ data = data || !markdownSpace(code)
+ return code === codes.backslash ? labelEscape : label
+ }
+
+ function labelEscape(code) {
+ if (
+ code === codes.leftSquareBracket ||
+ code === codes.backslash ||
+ code === codes.rightSquareBracket
+ ) {
+ effects.consume(code)
+ size++
+ return label
+ }
+
+ return label(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.js
new file mode 100644
index 0000000000..d907c5dca8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.js
@@ -0,0 +1,31 @@
+'use strict'
+
+var markdownSpace = require('../character/markdown-space.js')
+
+function spaceFactory(effects, ok, type, max) {
+ var limit = max ? max - 1 : Infinity
+ var size = 0
+
+ return start
+
+ function start(code) {
+ if (markdownSpace(code)) {
+ effects.enter(type)
+ return prefix(code)
+ }
+
+ return ok(code)
+ }
+
+ function prefix(code) {
+ if (markdownSpace(code) && size++ < limit) {
+ effects.consume(code)
+ return prefix
+ }
+
+ effects.exit(type)
+ return ok(code)
+ }
+}
+
+module.exports = spaceFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.mjs
new file mode 100644
index 0000000000..9668400d30
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-space.mjs
@@ -0,0 +1,29 @@
+export default spaceFactory
+
+import markdownSpace from '../character/markdown-space.mjs'
+
+function spaceFactory(effects, ok, type, max) {
+ var limit = max ? max - 1 : Infinity
+ var size = 0
+
+ return start
+
+ function start(code) {
+ if (markdownSpace(code)) {
+ effects.enter(type)
+ return prefix(code)
+ }
+
+ return ok(code)
+ }
+
+ function prefix(code) {
+ if (markdownSpace(code) && size++ < limit) {
+ effects.consume(code)
+ return prefix
+ }
+
+ effects.exit(type)
+ return ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.js
new file mode 100644
index 0000000000..a5d6349b9c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.js
@@ -0,0 +1,92 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+// eslint-disable-next-line max-params
+function titleFactory(effects, ok, nok, type, markerType, stringType) {
+ var marker
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.leftParenthesis,
+ 'expected `"`, `\'`, or `(`'
+ )
+ effects.enter(type)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ marker = code === codes.leftParenthesis ? codes.rightParenthesis : code
+ return atFirstTitleBreak
+ }
+
+ function atFirstTitleBreak(code) {
+ if (code === marker) {
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.exit(type)
+ return ok
+ }
+
+ effects.enter(stringType)
+ return atTitleBreak(code)
+ }
+
+ function atTitleBreak(code) {
+ if (code === marker) {
+ effects.exit(stringType)
+ return atFirstTitleBreak(marker)
+ }
+
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ // Note: blank lines can’t exist in content.
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return factorySpace(effects, atTitleBreak, types.linePrefix)
+ }
+
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return title(code)
+ }
+
+ function title(code) {
+ if (code === marker || code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.chunkString)
+ return atTitleBreak(code)
+ }
+
+ effects.consume(code)
+ return code === codes.backslash ? titleEscape : title
+ }
+
+ function titleEscape(code) {
+ if (code === marker || code === codes.backslash) {
+ effects.consume(code)
+ return title
+ }
+
+ return title(code)
+ }
+}
+
+module.exports = titleFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.mjs
new file mode 100644
index 0000000000..5ac4405e4a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-title.mjs
@@ -0,0 +1,84 @@
+export default titleFactory
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+// eslint-disable-next-line max-params
+function titleFactory(effects, ok, nok, type, markerType, stringType) {
+ var marker
+
+ return start
+
+ function start(code) {
+ assert(
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.leftParenthesis,
+ 'expected `"`, `\'`, or `(`'
+ )
+ effects.enter(type)
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ marker = code === codes.leftParenthesis ? codes.rightParenthesis : code
+ return atFirstTitleBreak
+ }
+
+ function atFirstTitleBreak(code) {
+ if (code === marker) {
+ effects.enter(markerType)
+ effects.consume(code)
+ effects.exit(markerType)
+ effects.exit(type)
+ return ok
+ }
+
+ effects.enter(stringType)
+ return atTitleBreak(code)
+ }
+
+ function atTitleBreak(code) {
+ if (code === marker) {
+ effects.exit(stringType)
+ return atFirstTitleBreak(marker)
+ }
+
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ // Note: blank lines can’t exist in content.
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return spaceFactory(effects, atTitleBreak, types.linePrefix)
+ }
+
+ effects.enter(types.chunkString, {contentType: constants.contentTypeString})
+ return title(code)
+ }
+
+ function title(code) {
+ if (code === marker || code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.chunkString)
+ return atTitleBreak(code)
+ }
+
+ effects.consume(code)
+ return code === codes.backslash ? titleEscape : title
+ }
+
+ function titleEscape(code) {
+ if (code === marker || code === codes.backslash) {
+ effects.consume(code)
+ return title
+ }
+
+ return title(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.js
new file mode 100644
index 0000000000..ae0ce96679
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.js
@@ -0,0 +1,34 @@
+'use strict'
+
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownSpace = require('../character/markdown-space.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+function whitespaceFactory(effects, ok) {
+ var seen
+
+ return start
+
+ function start(code) {
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ seen = true
+ return start
+ }
+
+ if (markdownSpace(code)) {
+ return factorySpace(
+ effects,
+ start,
+ seen ? types.linePrefix : types.lineSuffix
+ )(code)
+ }
+
+ return ok(code)
+ }
+}
+
+module.exports = whitespaceFactory
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.mjs
new file mode 100644
index 0000000000..8bea8fd224
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/factory-whitespace.mjs
@@ -0,0 +1,32 @@
+export default whitespaceFactory
+
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function whitespaceFactory(effects, ok) {
+ var seen
+
+ return start
+
+ function start(code) {
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ seen = true
+ return start
+ }
+
+ if (markdownSpace(code)) {
+ return spaceFactory(
+ effects,
+ start,
+ seen ? types.linePrefix : types.lineSuffix
+ )(code)
+ }
+
+ return ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.js
new file mode 100644
index 0000000000..38955ecabc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.js
@@ -0,0 +1,41 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var hardBreakEscape = {
+ name: 'hardBreakEscape',
+ tokenize: tokenizeHardBreakEscape
+}
+
+function tokenizeHardBreakEscape(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.backslash, 'expected `\\`')
+ effects.enter(types.hardBreakEscape)
+ effects.enter(types.escapeMarker)
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (markdownLineEnding(code)) {
+ effects.exit(types.escapeMarker)
+ effects.exit(types.hardBreakEscape)
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = hardBreakEscape
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.mjs
new file mode 100644
index 0000000000..0b23062d17
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/hard-break-escape.mjs
@@ -0,0 +1,32 @@
+var hardBreakEscape = {
+ name: 'hardBreakEscape',
+ tokenize: tokenizeHardBreakEscape
+}
+export default hardBreakEscape
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import types from '../constant/types.mjs'
+
+function tokenizeHardBreakEscape(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert(code === codes.backslash, 'expected `\\`')
+ effects.enter(types.hardBreakEscape)
+ effects.enter(types.escapeMarker)
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (markdownLineEnding(code)) {
+ effects.exit(types.escapeMarker)
+ effects.exit(types.hardBreakEscape)
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.js
new file mode 100644
index 0000000000..a3bfd06094
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.js
@@ -0,0 +1,151 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var headingAtx = {
+ name: 'headingAtx',
+ tokenize: tokenizeHeadingAtx,
+ resolve: resolveHeadingAtx
+}
+
+function resolveHeadingAtx(events, context) {
+ var contentEnd = events.length - 2
+ var contentStart = 3
+ var content
+ var text
+
+ // Prefix whitespace, part of the opening.
+ if (events[contentStart][1].type === types.whitespace) {
+ contentStart += 2
+ }
+
+ // Suffix whitespace, part of the closing.
+ if (
+ contentEnd - 2 > contentStart &&
+ events[contentEnd][1].type === types.whitespace
+ ) {
+ contentEnd -= 2
+ }
+
+ if (
+ events[contentEnd][1].type === types.atxHeadingSequence &&
+ (contentStart === contentEnd - 1 ||
+ (contentEnd - 4 > contentStart &&
+ events[contentEnd - 2][1].type === types.whitespace))
+ ) {
+ contentEnd -= contentStart + 1 === contentEnd ? 2 : 4
+ }
+
+ if (contentEnd > contentStart) {
+ content = {
+ type: types.atxHeadingText,
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end
+ }
+ text = {
+ type: types.chunkText,
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end,
+ contentType: constants.contentTypeText
+ }
+
+ chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [
+ ['enter', content, context],
+ ['enter', text, context],
+ ['exit', text, context],
+ ['exit', content, context]
+ ])
+ }
+
+ return events
+}
+
+function tokenizeHeadingAtx(effects, ok, nok) {
+ var self = this
+ var size = 0
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.numberSign, 'expected `#`')
+ effects.enter(types.atxHeading)
+ effects.enter(types.atxHeadingSequence)
+ return fenceOpenInside(code)
+ }
+
+ function fenceOpenInside(code) {
+ if (
+ code === codes.numberSign &&
+ size++ < constants.atxHeadingOpeningFenceSizeMax
+ ) {
+ effects.consume(code)
+ return fenceOpenInside
+ }
+
+ if (code === codes.eof || markdownLineEndingOrSpace(code)) {
+ effects.exit(types.atxHeadingSequence)
+ return self.interrupt ? ok(code) : headingBreak(code)
+ }
+
+ return nok(code)
+ }
+
+ function headingBreak(code) {
+ if (code === codes.numberSign) {
+ effects.enter(types.atxHeadingSequence)
+ return sequence(code)
+ }
+
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.atxHeading)
+ return ok(code)
+ }
+
+ if (markdownSpace(code)) {
+ return factorySpace(effects, headingBreak, types.whitespace)(code)
+ }
+
+ effects.enter(types.atxHeadingText)
+ return data(code)
+ }
+
+ function sequence(code) {
+ if (code === codes.numberSign) {
+ effects.consume(code)
+ return sequence
+ }
+
+ effects.exit(types.atxHeadingSequence)
+ return headingBreak(code)
+ }
+
+ function data(code) {
+ if (
+ code === codes.eof ||
+ code === codes.numberSign ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ effects.exit(types.atxHeadingText)
+ return headingBreak(code)
+ }
+
+ effects.consume(code)
+ return data
+ }
+}
+
+module.exports = headingAtx
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.mjs
new file mode 100644
index 0000000000..1a5ed07f42
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/heading-atx.mjs
@@ -0,0 +1,142 @@
+var headingAtx = {
+ name: 'headingAtx',
+ tokenize: tokenizeHeadingAtx,
+ resolve: resolveHeadingAtx
+}
+export default headingAtx
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import chunkedSplice from '../util/chunked-splice.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function resolveHeadingAtx(events, context) {
+ var contentEnd = events.length - 2
+ var contentStart = 3
+ var content
+ var text
+
+ // Prefix whitespace, part of the opening.
+ if (events[contentStart][1].type === types.whitespace) {
+ contentStart += 2
+ }
+
+ // Suffix whitespace, part of the closing.
+ if (
+ contentEnd - 2 > contentStart &&
+ events[contentEnd][1].type === types.whitespace
+ ) {
+ contentEnd -= 2
+ }
+
+ if (
+ events[contentEnd][1].type === types.atxHeadingSequence &&
+ (contentStart === contentEnd - 1 ||
+ (contentEnd - 4 > contentStart &&
+ events[contentEnd - 2][1].type === types.whitespace))
+ ) {
+ contentEnd -= contentStart + 1 === contentEnd ? 2 : 4
+ }
+
+ if (contentEnd > contentStart) {
+ content = {
+ type: types.atxHeadingText,
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end
+ }
+ text = {
+ type: types.chunkText,
+ start: events[contentStart][1].start,
+ end: events[contentEnd][1].end,
+ contentType: constants.contentTypeText
+ }
+
+ chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [
+ ['enter', content, context],
+ ['enter', text, context],
+ ['exit', text, context],
+ ['exit', content, context]
+ ])
+ }
+
+ return events
+}
+
+function tokenizeHeadingAtx(effects, ok, nok) {
+ var self = this
+ var size = 0
+
+ return start
+
+ function start(code) {
+ assert(code === codes.numberSign, 'expected `#`')
+ effects.enter(types.atxHeading)
+ effects.enter(types.atxHeadingSequence)
+ return fenceOpenInside(code)
+ }
+
+ function fenceOpenInside(code) {
+ if (
+ code === codes.numberSign &&
+ size++ < constants.atxHeadingOpeningFenceSizeMax
+ ) {
+ effects.consume(code)
+ return fenceOpenInside
+ }
+
+ if (code === codes.eof || markdownLineEndingOrSpace(code)) {
+ effects.exit(types.atxHeadingSequence)
+ return self.interrupt ? ok(code) : headingBreak(code)
+ }
+
+ return nok(code)
+ }
+
+ function headingBreak(code) {
+ if (code === codes.numberSign) {
+ effects.enter(types.atxHeadingSequence)
+ return sequence(code)
+ }
+
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.atxHeading)
+ return ok(code)
+ }
+
+ if (markdownSpace(code)) {
+ return spaceFactory(effects, headingBreak, types.whitespace)(code)
+ }
+
+ effects.enter(types.atxHeadingText)
+ return data(code)
+ }
+
+ function sequence(code) {
+ if (code === codes.numberSign) {
+ effects.consume(code)
+ return sequence
+ }
+
+ effects.exit(types.atxHeadingSequence)
+ return headingBreak(code)
+ }
+
+ function data(code) {
+ if (
+ code === codes.eof ||
+ code === codes.numberSign ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ effects.exit(types.atxHeadingText)
+ return headingBreak(code)
+ }
+
+ effects.consume(code)
+ return data
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.js
new file mode 100644
index 0000000000..c6a894ff9c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.js
@@ -0,0 +1,513 @@
+'use strict'
+
+var assert = require('assert')
+var asciiAlpha = require('../character/ascii-alpha.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var fromCharCode = require('../constant/from-char-code.js')
+var htmlBlockNames = require('../constant/html-block-names.js')
+var htmlRawNames = require('../constant/html-raw-names.js')
+var types = require('../constant/types.js')
+var partialBlankLine = require('./partial-blank-line.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var htmlFlow = {
+ name: 'htmlFlow',
+ tokenize: tokenizeHtmlFlow,
+ resolveTo: resolveToHtmlFlow,
+ concrete: true
+}
+
+var nextBlankConstruct = {tokenize: tokenizeNextBlank, partial: true}
+
+function resolveToHtmlFlow(events) {
+ var index = events.length
+
+ while (index--) {
+ if (
+ events[index][0] === 'enter' &&
+ events[index][1].type === types.htmlFlow
+ ) {
+ break
+ }
+ }
+
+ if (index > 1 && events[index - 2][1].type === types.linePrefix) {
+ // Add the prefix start to the HTML token.
+ events[index][1].start = events[index - 2][1].start
+ // Add the prefix start to the HTML line token.
+ events[index + 1][1].start = events[index - 2][1].start
+ // Remove the line prefix.
+ events.splice(index - 2, 2)
+ }
+
+ return events
+}
+
+function tokenizeHtmlFlow(effects, ok, nok) {
+ var self = this
+ var kind
+ var startTag
+ var buffer
+ var index
+ var marker
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.lessThan, 'expected `<`')
+ effects.enter(types.htmlFlow)
+ effects.enter(types.htmlFlowData)
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.exclamationMark) {
+ effects.consume(code)
+ return declarationStart
+ }
+
+ if (code === codes.slash) {
+ effects.consume(code)
+ return tagCloseStart
+ }
+
+ if (code === codes.questionMark) {
+ effects.consume(code)
+ kind = constants.htmlInstruction
+ // While we’re in an instruction instead of a declaration, we’re on a `?`
+ // right now, so we do need to search for `>`, similar to declarations.
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ buffer = fromCharCode(code)
+ startTag = true
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function declarationStart(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ kind = constants.htmlComment
+ return commentOpenInside
+ }
+
+ if (code === codes.leftSquareBracket) {
+ effects.consume(code)
+ kind = constants.htmlCdata
+ buffer = constants.cdataOpeningString
+ index = 0
+ return cdataOpenInside
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ kind = constants.htmlDeclaration
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ return nok(code)
+ }
+
+ function commentOpenInside(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ return nok(code)
+ }
+
+ function cdataOpenInside(code) {
+ if (code === buffer.charCodeAt(index++)) {
+ effects.consume(code)
+ return index === buffer.length
+ ? self.interrupt
+ ? ok
+ : continuation
+ : cdataOpenInside
+ }
+
+ return nok(code)
+ }
+
+ function tagCloseStart(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ buffer = fromCharCode(code)
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function tagName(code) {
+ if (
+ code === codes.eof ||
+ code === codes.slash ||
+ code === codes.greaterThan ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ if (
+ code !== codes.slash &&
+ startTag &&
+ htmlRawNames.indexOf(buffer.toLowerCase()) > -1
+ ) {
+ kind = constants.htmlRaw
+ return self.interrupt ? ok(code) : continuation(code)
+ }
+
+ if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {
+ kind = constants.htmlBasic
+
+ if (code === codes.slash) {
+ effects.consume(code)
+ return basicSelfClosing
+ }
+
+ return self.interrupt ? ok(code) : continuation(code)
+ }
+
+ kind = constants.htmlComplete
+ // Do not support complete HTML when interrupting.
+ return self.interrupt
+ ? nok(code)
+ : startTag
+ ? completeAttributeNameBefore(code)
+ : completeClosingTagAfter(code)
+ }
+
+ if (code === codes.dash || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ buffer += fromCharCode(code)
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function basicSelfClosing(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ return self.interrupt ? ok : continuation
+ }
+
+ return nok(code)
+ }
+
+ function completeClosingTagAfter(code) {
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeClosingTagAfter
+ }
+
+ return completeEnd(code)
+ }
+
+ function completeAttributeNameBefore(code) {
+ if (code === codes.slash) {
+ effects.consume(code)
+ return completeEnd
+ }
+
+ if (code === codes.colon || code === codes.underscore || asciiAlpha(code)) {
+ effects.consume(code)
+ return completeAttributeName
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeNameBefore
+ }
+
+ return completeEnd(code)
+ }
+
+ function completeAttributeName(code) {
+ if (
+ code === codes.dash ||
+ code === codes.dot ||
+ code === codes.colon ||
+ code === codes.underscore ||
+ asciiAlphanumeric(code)
+ ) {
+ effects.consume(code)
+ return completeAttributeName
+ }
+
+ return completeAttributeNameAfter(code)
+ }
+
+ function completeAttributeNameAfter(code) {
+ if (code === codes.equalsTo) {
+ effects.consume(code)
+ return completeAttributeValueBefore
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeNameAfter
+ }
+
+ return completeAttributeNameBefore(code)
+ }
+
+ function completeAttributeValueBefore(code) {
+ if (
+ code === codes.eof ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.greaterThan ||
+ code === codes.graveAccent
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.quotationMark || code === codes.apostrophe) {
+ effects.consume(code)
+ marker = code
+ return completeAttributeValueQuoted
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeValueBefore
+ }
+
+ marker = undefined
+ return completeAttributeValueUnquoted(code)
+ }
+
+ function completeAttributeValueQuoted(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return completeAttributeValueQuotedAfter
+ }
+
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return completeAttributeValueQuoted
+ }
+
+ function completeAttributeValueUnquoted(code) {
+ if (
+ code === codes.eof ||
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.greaterThan ||
+ code === codes.graveAccent ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return completeAttributeNameAfter(code)
+ }
+
+ effects.consume(code)
+ return completeAttributeValueUnquoted
+ }
+
+ function completeAttributeValueQuotedAfter(code) {
+ if (
+ code === codes.slash ||
+ code === codes.greaterThan ||
+ markdownSpace(code)
+ ) {
+ return completeAttributeNameBefore(code)
+ }
+
+ return nok(code)
+ }
+
+ function completeEnd(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ return completeAfter
+ }
+
+ return nok(code)
+ }
+
+ function completeAfter(code) {
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAfter
+ }
+
+ return code === codes.eof || markdownLineEnding(code)
+ ? continuation(code)
+ : nok(code)
+ }
+
+ function continuation(code) {
+ if (code === codes.dash && kind === constants.htmlComment) {
+ effects.consume(code)
+ return continuationCommentInside
+ }
+
+ if (code === codes.lessThan && kind === constants.htmlRaw) {
+ effects.consume(code)
+ return continuationRawTagOpen
+ }
+
+ if (code === codes.greaterThan && kind === constants.htmlDeclaration) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ if (code === codes.questionMark && kind === constants.htmlInstruction) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ if (code === codes.rightSquareBracket && kind === constants.htmlCdata) {
+ effects.consume(code)
+ return continuationCharacterDataInside
+ }
+
+ if (
+ markdownLineEnding(code) &&
+ (kind === constants.htmlBasic || kind === constants.htmlComplete)
+ ) {
+ return effects.check(
+ nextBlankConstruct,
+ continuationClose,
+ continuationAtLineEnding
+ )(code)
+ }
+
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return continuationAtLineEnding(code)
+ }
+
+ effects.consume(code)
+ return continuation
+ }
+
+ function continuationAtLineEnding(code) {
+ effects.exit(types.htmlFlowData)
+ return htmlContinueStart(code)
+ }
+
+ function htmlContinueStart(code) {
+ if (code === codes.eof) {
+ return done(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return htmlContinueStart
+ }
+
+ effects.enter(types.htmlFlowData)
+ return continuation(code)
+ }
+
+ function continuationCommentInside(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ return continuation(code)
+ }
+
+ function continuationRawTagOpen(code) {
+ if (code === codes.slash) {
+ effects.consume(code)
+ buffer = ''
+ return continuationRawEndTag
+ }
+
+ return continuation(code)
+ }
+
+ function continuationRawEndTag(code) {
+ if (
+ code === codes.greaterThan &&
+ htmlRawNames.indexOf(buffer.toLowerCase()) > -1
+ ) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ if (asciiAlpha(code) && buffer.length < constants.htmlRawSizeMax) {
+ effects.consume(code)
+ buffer += fromCharCode(code)
+ return continuationRawEndTag
+ }
+
+ return continuation(code)
+ }
+
+ function continuationCharacterDataInside(code) {
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ return continuation(code)
+ }
+
+ function continuationDeclarationInside(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ return continuation(code)
+ }
+
+ function continuationClose(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.htmlFlowData)
+ return done(code)
+ }
+
+ effects.consume(code)
+ return continuationClose
+ }
+
+ function done(code) {
+ effects.exit(types.htmlFlow)
+ return ok(code)
+ }
+}
+
+function tokenizeNextBlank(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ markdownLineEnding(code),
+ 'expected a line ending'
+ )
+ effects.exit(types.htmlFlowData)
+ effects.enter(types.lineEndingBlank)
+ effects.consume(code)
+ effects.exit(types.lineEndingBlank)
+ return effects.attempt(partialBlankLine, ok, nok)
+ }
+}
+
+module.exports = htmlFlow
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.mjs
new file mode 100644
index 0000000000..5dda6d7493
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-flow.mjs
@@ -0,0 +1,498 @@
+var htmlFlow = {
+ name: 'htmlFlow',
+ tokenize: tokenizeHtmlFlow,
+ resolveTo: resolveToHtmlFlow,
+ concrete: true
+}
+export default htmlFlow
+
+import assert from 'assert'
+import asciiAlpha from '../character/ascii-alpha.mjs'
+import asciiAlphanumeric from '../character/ascii-alphanumeric.mjs'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import fromCharCode from '../constant/from-char-code.mjs'
+import basics from '../constant/html-block-names.mjs'
+import raws from '../constant/html-raw-names.mjs'
+import types from '../constant/types.mjs'
+import blank from './partial-blank-line.mjs'
+
+var nextBlankConstruct = {tokenize: tokenizeNextBlank, partial: true}
+
+function resolveToHtmlFlow(events) {
+ var index = events.length
+
+ while (index--) {
+ if (
+ events[index][0] === 'enter' &&
+ events[index][1].type === types.htmlFlow
+ ) {
+ break
+ }
+ }
+
+ if (index > 1 && events[index - 2][1].type === types.linePrefix) {
+ // Add the prefix start to the HTML token.
+ events[index][1].start = events[index - 2][1].start
+ // Add the prefix start to the HTML line token.
+ events[index + 1][1].start = events[index - 2][1].start
+ // Remove the line prefix.
+ events.splice(index - 2, 2)
+ }
+
+ return events
+}
+
+function tokenizeHtmlFlow(effects, ok, nok) {
+ var self = this
+ var kind
+ var startTag
+ var buffer
+ var index
+ var marker
+
+ return start
+
+ function start(code) {
+ assert(code === codes.lessThan, 'expected `<`')
+ effects.enter(types.htmlFlow)
+ effects.enter(types.htmlFlowData)
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.exclamationMark) {
+ effects.consume(code)
+ return declarationStart
+ }
+
+ if (code === codes.slash) {
+ effects.consume(code)
+ return tagCloseStart
+ }
+
+ if (code === codes.questionMark) {
+ effects.consume(code)
+ kind = constants.htmlInstruction
+ // While we’re in an instruction instead of a declaration, we’re on a `?`
+ // right now, so we do need to search for `>`, similar to declarations.
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ buffer = fromCharCode(code)
+ startTag = true
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function declarationStart(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ kind = constants.htmlComment
+ return commentOpenInside
+ }
+
+ if (code === codes.leftSquareBracket) {
+ effects.consume(code)
+ kind = constants.htmlCdata
+ buffer = constants.cdataOpeningString
+ index = 0
+ return cdataOpenInside
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ kind = constants.htmlDeclaration
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ return nok(code)
+ }
+
+ function commentOpenInside(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return self.interrupt ? ok : continuationDeclarationInside
+ }
+
+ return nok(code)
+ }
+
+ function cdataOpenInside(code) {
+ if (code === buffer.charCodeAt(index++)) {
+ effects.consume(code)
+ return index === buffer.length
+ ? self.interrupt
+ ? ok
+ : continuation
+ : cdataOpenInside
+ }
+
+ return nok(code)
+ }
+
+ function tagCloseStart(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ buffer = fromCharCode(code)
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function tagName(code) {
+ if (
+ code === codes.eof ||
+ code === codes.slash ||
+ code === codes.greaterThan ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ if (
+ code !== codes.slash &&
+ startTag &&
+ raws.indexOf(buffer.toLowerCase()) > -1
+ ) {
+ kind = constants.htmlRaw
+ return self.interrupt ? ok(code) : continuation(code)
+ }
+
+ if (basics.indexOf(buffer.toLowerCase()) > -1) {
+ kind = constants.htmlBasic
+
+ if (code === codes.slash) {
+ effects.consume(code)
+ return basicSelfClosing
+ }
+
+ return self.interrupt ? ok(code) : continuation(code)
+ }
+
+ kind = constants.htmlComplete
+ // Do not support complete HTML when interrupting.
+ return self.interrupt
+ ? nok(code)
+ : startTag
+ ? completeAttributeNameBefore(code)
+ : completeClosingTagAfter(code)
+ }
+
+ if (code === codes.dash || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ buffer += fromCharCode(code)
+ return tagName
+ }
+
+ return nok(code)
+ }
+
+ function basicSelfClosing(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ return self.interrupt ? ok : continuation
+ }
+
+ return nok(code)
+ }
+
+ function completeClosingTagAfter(code) {
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeClosingTagAfter
+ }
+
+ return completeEnd(code)
+ }
+
+ function completeAttributeNameBefore(code) {
+ if (code === codes.slash) {
+ effects.consume(code)
+ return completeEnd
+ }
+
+ if (code === codes.colon || code === codes.underscore || asciiAlpha(code)) {
+ effects.consume(code)
+ return completeAttributeName
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeNameBefore
+ }
+
+ return completeEnd(code)
+ }
+
+ function completeAttributeName(code) {
+ if (
+ code === codes.dash ||
+ code === codes.dot ||
+ code === codes.colon ||
+ code === codes.underscore ||
+ asciiAlphanumeric(code)
+ ) {
+ effects.consume(code)
+ return completeAttributeName
+ }
+
+ return completeAttributeNameAfter(code)
+ }
+
+ function completeAttributeNameAfter(code) {
+ if (code === codes.equalsTo) {
+ effects.consume(code)
+ return completeAttributeValueBefore
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeNameAfter
+ }
+
+ return completeAttributeNameBefore(code)
+ }
+
+ function completeAttributeValueBefore(code) {
+ if (
+ code === codes.eof ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.greaterThan ||
+ code === codes.graveAccent
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.quotationMark || code === codes.apostrophe) {
+ effects.consume(code)
+ marker = code
+ return completeAttributeValueQuoted
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAttributeValueBefore
+ }
+
+ marker = undefined
+ return completeAttributeValueUnquoted(code)
+ }
+
+ function completeAttributeValueQuoted(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return completeAttributeValueQuotedAfter
+ }
+
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return nok(code)
+ }
+
+ effects.consume(code)
+ return completeAttributeValueQuoted
+ }
+
+ function completeAttributeValueUnquoted(code) {
+ if (
+ code === codes.eof ||
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.greaterThan ||
+ code === codes.graveAccent ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return completeAttributeNameAfter(code)
+ }
+
+ effects.consume(code)
+ return completeAttributeValueUnquoted
+ }
+
+ function completeAttributeValueQuotedAfter(code) {
+ if (
+ code === codes.slash ||
+ code === codes.greaterThan ||
+ markdownSpace(code)
+ ) {
+ return completeAttributeNameBefore(code)
+ }
+
+ return nok(code)
+ }
+
+ function completeEnd(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ return completeAfter
+ }
+
+ return nok(code)
+ }
+
+ function completeAfter(code) {
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return completeAfter
+ }
+
+ return code === codes.eof || markdownLineEnding(code)
+ ? continuation(code)
+ : nok(code)
+ }
+
+ function continuation(code) {
+ if (code === codes.dash && kind === constants.htmlComment) {
+ effects.consume(code)
+ return continuationCommentInside
+ }
+
+ if (code === codes.lessThan && kind === constants.htmlRaw) {
+ effects.consume(code)
+ return continuationRawTagOpen
+ }
+
+ if (code === codes.greaterThan && kind === constants.htmlDeclaration) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ if (code === codes.questionMark && kind === constants.htmlInstruction) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ if (code === codes.rightSquareBracket && kind === constants.htmlCdata) {
+ effects.consume(code)
+ return continuationCharacterDataInside
+ }
+
+ if (
+ markdownLineEnding(code) &&
+ (kind === constants.htmlBasic || kind === constants.htmlComplete)
+ ) {
+ return effects.check(
+ nextBlankConstruct,
+ continuationClose,
+ continuationAtLineEnding
+ )(code)
+ }
+
+ if (code === codes.eof || markdownLineEnding(code)) {
+ return continuationAtLineEnding(code)
+ }
+
+ effects.consume(code)
+ return continuation
+ }
+
+ function continuationAtLineEnding(code) {
+ effects.exit(types.htmlFlowData)
+ return htmlContinueStart(code)
+ }
+
+ function htmlContinueStart(code) {
+ if (code === codes.eof) {
+ return done(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return htmlContinueStart
+ }
+
+ effects.enter(types.htmlFlowData)
+ return continuation(code)
+ }
+
+ function continuationCommentInside(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ return continuation(code)
+ }
+
+ function continuationRawTagOpen(code) {
+ if (code === codes.slash) {
+ effects.consume(code)
+ buffer = ''
+ return continuationRawEndTag
+ }
+
+ return continuation(code)
+ }
+
+ function continuationRawEndTag(code) {
+ if (code === codes.greaterThan && raws.indexOf(buffer.toLowerCase()) > -1) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ if (asciiAlpha(code) && buffer.length < constants.htmlRawSizeMax) {
+ effects.consume(code)
+ buffer += fromCharCode(code)
+ return continuationRawEndTag
+ }
+
+ return continuation(code)
+ }
+
+ function continuationCharacterDataInside(code) {
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return continuationDeclarationInside
+ }
+
+ return continuation(code)
+ }
+
+ function continuationDeclarationInside(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ return continuationClose
+ }
+
+ return continuation(code)
+ }
+
+ function continuationClose(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.htmlFlowData)
+ return done(code)
+ }
+
+ effects.consume(code)
+ return continuationClose
+ }
+
+ function done(code) {
+ effects.exit(types.htmlFlow)
+ return ok(code)
+ }
+}
+
+function tokenizeNextBlank(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert(markdownLineEnding(code), 'expected a line ending')
+ effects.exit(types.htmlFlowData)
+ effects.enter(types.lineEndingBlank)
+ effects.consume(code)
+ effects.exit(types.lineEndingBlank)
+ return effects.attempt(blank, ok, nok)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.js
new file mode 100644
index 0000000000..eda4db2d07
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.js
@@ -0,0 +1,458 @@
+'use strict'
+
+var assert = require('assert')
+var asciiAlpha = require('../character/ascii-alpha.js')
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var htmlText = {
+ name: 'htmlText',
+ tokenize: tokenizeHtmlText
+}
+
+function tokenizeHtmlText(effects, ok, nok) {
+ var self = this
+ var marker
+ var buffer
+ var index
+ var returnState
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.lessThan, 'expected `<`')
+ effects.enter(types.htmlText)
+ effects.enter(types.htmlTextData)
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.exclamationMark) {
+ effects.consume(code)
+ return declarationOpen
+ }
+
+ if (code === codes.slash) {
+ effects.consume(code)
+ return tagCloseStart
+ }
+
+ if (code === codes.questionMark) {
+ effects.consume(code)
+ return instruction
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return tagOpen
+ }
+
+ return nok(code)
+ }
+
+ function declarationOpen(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentOpen
+ }
+
+ if (code === codes.leftSquareBracket) {
+ effects.consume(code)
+ buffer = constants.cdataOpeningString
+ index = 0
+ return cdataOpen
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return declaration
+ }
+
+ return nok(code)
+ }
+
+ function commentOpen(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentStart
+ }
+
+ return nok(code)
+ }
+
+ function commentStart(code) {
+ if (code === codes.eof || code === codes.greaterThan) {
+ return nok(code)
+ }
+
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentStartDash
+ }
+
+ return comment(code)
+ }
+
+ function commentStartDash(code) {
+ if (code === codes.eof || code === codes.greaterThan) {
+ return nok(code)
+ }
+
+ return comment(code)
+ }
+
+ function comment(code) {
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = comment
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return comment
+ }
+
+ function commentClose(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return end
+ }
+
+ return comment(code)
+ }
+
+ function cdataOpen(code) {
+ if (code === buffer.charCodeAt(index++)) {
+ effects.consume(code)
+ return index === buffer.length ? cdata : cdataOpen
+ }
+
+ return nok(code)
+ }
+
+ function cdata(code) {
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return cdataClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = cdata
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return cdata
+ }
+
+ function cdataClose(code) {
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return cdataEnd
+ }
+
+ return cdata(code)
+ }
+
+ function cdataEnd(code) {
+ if (code === codes.greaterThan) {
+ return end(code)
+ }
+
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return cdataEnd
+ }
+
+ return cdata(code)
+ }
+
+ function declaration(code) {
+ if (code === codes.eof || code === codes.greaterThan) {
+ return end(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = declaration
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return declaration
+ }
+
+ function instruction(code) {
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (code === codes.questionMark) {
+ effects.consume(code)
+ return instructionClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = instruction
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return instruction
+ }
+
+ function instructionClose(code) {
+ return code === codes.greaterThan ? end(code) : instruction(code)
+ }
+
+ function tagCloseStart(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return tagClose
+ }
+
+ return nok(code)
+ }
+
+ function tagClose(code) {
+ if (code === codes.dash || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ return tagClose
+ }
+
+ return tagCloseBetween(code)
+ }
+
+ function tagCloseBetween(code) {
+ if (markdownLineEnding(code)) {
+ returnState = tagCloseBetween
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagCloseBetween
+ }
+
+ return end(code)
+ }
+
+ function tagOpen(code) {
+ if (code === codes.dash || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ return tagOpen
+ }
+
+ if (
+ code === codes.slash ||
+ code === codes.greaterThan ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return tagOpenBetween(code)
+ }
+
+ return nok(code)
+ }
+
+ function tagOpenBetween(code) {
+ if (code === codes.slash) {
+ effects.consume(code)
+ return end
+ }
+
+ if (code === codes.colon || code === codes.underscore || asciiAlpha(code)) {
+ effects.consume(code)
+ return tagOpenAttributeName
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenBetween
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenBetween
+ }
+
+ return end(code)
+ }
+
+ function tagOpenAttributeName(code) {
+ if (
+ code === codes.dash ||
+ code === codes.dot ||
+ code === codes.colon ||
+ code === codes.underscore ||
+ asciiAlphanumeric(code)
+ ) {
+ effects.consume(code)
+ return tagOpenAttributeName
+ }
+
+ return tagOpenAttributeNameAfter(code)
+ }
+
+ function tagOpenAttributeNameAfter(code) {
+ if (code === codes.equalsTo) {
+ effects.consume(code)
+ return tagOpenAttributeValueBefore
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeNameAfter
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenAttributeNameAfter
+ }
+
+ return tagOpenBetween(code)
+ }
+
+ function tagOpenAttributeValueBefore(code) {
+ if (
+ code === codes.eof ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.greaterThan ||
+ code === codes.graveAccent
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.quotationMark || code === codes.apostrophe) {
+ effects.consume(code)
+ marker = code
+ return tagOpenAttributeValueQuoted
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeValueBefore
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenAttributeValueBefore
+ }
+
+ effects.consume(code)
+ marker = undefined
+ return tagOpenAttributeValueUnquoted
+ }
+
+ function tagOpenAttributeValueQuoted(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return tagOpenAttributeValueQuotedAfter
+ }
+
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeValueQuoted
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return tagOpenAttributeValueQuoted
+ }
+
+ function tagOpenAttributeValueQuotedAfter(code) {
+ if (
+ code === codes.greaterThan ||
+ code === codes.slash ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return tagOpenBetween(code)
+ }
+
+ return nok(code)
+ }
+
+ function tagOpenAttributeValueUnquoted(code) {
+ if (
+ code === codes.eof ||
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.graveAccent
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.greaterThan || markdownLineEndingOrSpace(code)) {
+ return tagOpenBetween(code)
+ }
+
+ effects.consume(code)
+ return tagOpenAttributeValueUnquoted
+ }
+
+ // We can’t have blank lines in content, so no need to worry about empty
+ // tokens.
+ function atLineEnding(code) {
+ assert__default['default'](returnState, 'expected return state')
+ assert__default['default'](markdownLineEnding(code), 'expected eol')
+ effects.exit(types.htmlTextData)
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return factorySpace(
+ effects,
+ afterPrefix,
+ types.linePrefix,
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+ }
+
+ function afterPrefix(code) {
+ effects.enter(types.htmlTextData)
+ return returnState(code)
+ }
+
+ function end(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ effects.exit(types.htmlTextData)
+ effects.exit(types.htmlText)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = htmlText
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.mjs
new file mode 100644
index 0000000000..2f571a0f4f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/html-text.mjs
@@ -0,0 +1,449 @@
+var htmlText = {
+ name: 'htmlText',
+ tokenize: tokenizeHtmlText
+}
+export default htmlText
+
+import assert from 'assert'
+import asciiAlpha from '../character/ascii-alpha.mjs'
+import asciiAlphanumeric from '../character/ascii-alphanumeric.mjs'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function tokenizeHtmlText(effects, ok, nok) {
+ var self = this
+ var marker
+ var buffer
+ var index
+ var returnState
+
+ return start
+
+ function start(code) {
+ assert(code === codes.lessThan, 'expected `<`')
+ effects.enter(types.htmlText)
+ effects.enter(types.htmlTextData)
+ effects.consume(code)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.exclamationMark) {
+ effects.consume(code)
+ return declarationOpen
+ }
+
+ if (code === codes.slash) {
+ effects.consume(code)
+ return tagCloseStart
+ }
+
+ if (code === codes.questionMark) {
+ effects.consume(code)
+ return instruction
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return tagOpen
+ }
+
+ return nok(code)
+ }
+
+ function declarationOpen(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentOpen
+ }
+
+ if (code === codes.leftSquareBracket) {
+ effects.consume(code)
+ buffer = constants.cdataOpeningString
+ index = 0
+ return cdataOpen
+ }
+
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return declaration
+ }
+
+ return nok(code)
+ }
+
+ function commentOpen(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentStart
+ }
+
+ return nok(code)
+ }
+
+ function commentStart(code) {
+ if (code === codes.eof || code === codes.greaterThan) {
+ return nok(code)
+ }
+
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentStartDash
+ }
+
+ return comment(code)
+ }
+
+ function commentStartDash(code) {
+ if (code === codes.eof || code === codes.greaterThan) {
+ return nok(code)
+ }
+
+ return comment(code)
+ }
+
+ function comment(code) {
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (code === codes.dash) {
+ effects.consume(code)
+ return commentClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = comment
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return comment
+ }
+
+ function commentClose(code) {
+ if (code === codes.dash) {
+ effects.consume(code)
+ return end
+ }
+
+ return comment(code)
+ }
+
+ function cdataOpen(code) {
+ if (code === buffer.charCodeAt(index++)) {
+ effects.consume(code)
+ return index === buffer.length ? cdata : cdataOpen
+ }
+
+ return nok(code)
+ }
+
+ function cdata(code) {
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return cdataClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = cdata
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return cdata
+ }
+
+ function cdataClose(code) {
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return cdataEnd
+ }
+
+ return cdata(code)
+ }
+
+ function cdataEnd(code) {
+ if (code === codes.greaterThan) {
+ return end(code)
+ }
+
+ if (code === codes.rightSquareBracket) {
+ effects.consume(code)
+ return cdataEnd
+ }
+
+ return cdata(code)
+ }
+
+ function declaration(code) {
+ if (code === codes.eof || code === codes.greaterThan) {
+ return end(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = declaration
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return declaration
+ }
+
+ function instruction(code) {
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (code === codes.questionMark) {
+ effects.consume(code)
+ return instructionClose
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = instruction
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return instruction
+ }
+
+ function instructionClose(code) {
+ return code === codes.greaterThan ? end(code) : instruction(code)
+ }
+
+ function tagCloseStart(code) {
+ if (asciiAlpha(code)) {
+ effects.consume(code)
+ return tagClose
+ }
+
+ return nok(code)
+ }
+
+ function tagClose(code) {
+ if (code === codes.dash || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ return tagClose
+ }
+
+ return tagCloseBetween(code)
+ }
+
+ function tagCloseBetween(code) {
+ if (markdownLineEnding(code)) {
+ returnState = tagCloseBetween
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagCloseBetween
+ }
+
+ return end(code)
+ }
+
+ function tagOpen(code) {
+ if (code === codes.dash || asciiAlphanumeric(code)) {
+ effects.consume(code)
+ return tagOpen
+ }
+
+ if (
+ code === codes.slash ||
+ code === codes.greaterThan ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return tagOpenBetween(code)
+ }
+
+ return nok(code)
+ }
+
+ function tagOpenBetween(code) {
+ if (code === codes.slash) {
+ effects.consume(code)
+ return end
+ }
+
+ if (code === codes.colon || code === codes.underscore || asciiAlpha(code)) {
+ effects.consume(code)
+ return tagOpenAttributeName
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenBetween
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenBetween
+ }
+
+ return end(code)
+ }
+
+ function tagOpenAttributeName(code) {
+ if (
+ code === codes.dash ||
+ code === codes.dot ||
+ code === codes.colon ||
+ code === codes.underscore ||
+ asciiAlphanumeric(code)
+ ) {
+ effects.consume(code)
+ return tagOpenAttributeName
+ }
+
+ return tagOpenAttributeNameAfter(code)
+ }
+
+ function tagOpenAttributeNameAfter(code) {
+ if (code === codes.equalsTo) {
+ effects.consume(code)
+ return tagOpenAttributeValueBefore
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeNameAfter
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenAttributeNameAfter
+ }
+
+ return tagOpenBetween(code)
+ }
+
+ function tagOpenAttributeValueBefore(code) {
+ if (
+ code === codes.eof ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.greaterThan ||
+ code === codes.graveAccent
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.quotationMark || code === codes.apostrophe) {
+ effects.consume(code)
+ marker = code
+ return tagOpenAttributeValueQuoted
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeValueBefore
+ return atLineEnding(code)
+ }
+
+ if (markdownSpace(code)) {
+ effects.consume(code)
+ return tagOpenAttributeValueBefore
+ }
+
+ effects.consume(code)
+ marker = undefined
+ return tagOpenAttributeValueUnquoted
+ }
+
+ function tagOpenAttributeValueQuoted(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return tagOpenAttributeValueQuotedAfter
+ }
+
+ if (code === codes.eof) {
+ return nok(code)
+ }
+
+ if (markdownLineEnding(code)) {
+ returnState = tagOpenAttributeValueQuoted
+ return atLineEnding(code)
+ }
+
+ effects.consume(code)
+ return tagOpenAttributeValueQuoted
+ }
+
+ function tagOpenAttributeValueQuotedAfter(code) {
+ if (
+ code === codes.greaterThan ||
+ code === codes.slash ||
+ markdownLineEndingOrSpace(code)
+ ) {
+ return tagOpenBetween(code)
+ }
+
+ return nok(code)
+ }
+
+ function tagOpenAttributeValueUnquoted(code) {
+ if (
+ code === codes.eof ||
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.lessThan ||
+ code === codes.equalsTo ||
+ code === codes.graveAccent
+ ) {
+ return nok(code)
+ }
+
+ if (code === codes.greaterThan || markdownLineEndingOrSpace(code)) {
+ return tagOpenBetween(code)
+ }
+
+ effects.consume(code)
+ return tagOpenAttributeValueUnquoted
+ }
+
+ // We can’t have blank lines in content, so no need to worry about empty
+ // tokens.
+ function atLineEnding(code) {
+ assert(returnState, 'expected return state')
+ assert(markdownLineEnding(code), 'expected eol')
+ effects.exit(types.htmlTextData)
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return spaceFactory(
+ effects,
+ afterPrefix,
+ types.linePrefix,
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )
+ }
+
+ function afterPrefix(code) {
+ effects.enter(types.htmlTextData)
+ return returnState(code)
+ }
+
+ function end(code) {
+ if (code === codes.greaterThan) {
+ effects.consume(code)
+ effects.exit(types.htmlTextData)
+ effects.exit(types.htmlText)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.js
new file mode 100644
index 0000000000..51ee2366c8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.js
@@ -0,0 +1,374 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var chunkedPush = require('../util/chunked-push.js')
+var chunkedSplice = require('../util/chunked-splice.js')
+var normalizeIdentifier = require('../util/normalize-identifier.js')
+var resolveAll = require('../util/resolve-all.js')
+var shallow = require('../util/shallow.js')
+var factoryDestination = require('./factory-destination.js')
+var factoryLabel = require('./factory-label.js')
+var factoryTitle = require('./factory-title.js')
+var factoryWhitespace = require('./factory-whitespace.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var labelEnd = {
+ name: 'labelEnd',
+ tokenize: tokenizeLabelEnd,
+ resolveTo: resolveToLabelEnd,
+ resolveAll: resolveAllLabelEnd
+}
+
+var resourceConstruct = {tokenize: tokenizeResource}
+var fullReferenceConstruct = {tokenize: tokenizeFullReference}
+var collapsedReferenceConstruct = {tokenize: tokenizeCollapsedReference}
+
+function resolveAllLabelEnd(events) {
+ var index = -1
+ var token
+
+ while (++index < events.length) {
+ token = events[index][1]
+
+ if (
+ !token._used &&
+ (token.type === types.labelImage ||
+ token.type === types.labelLink ||
+ token.type === types.labelEnd)
+ ) {
+ // Remove the marker.
+ events.splice(index + 1, token.type === types.labelImage ? 4 : 2)
+ token.type = types.data
+ index++
+ }
+ }
+
+ return events
+}
+
+function resolveToLabelEnd(events, context) {
+ var index = events.length
+ var offset = 0
+ var group
+ var label
+ var text
+ var token
+ var open
+ var close
+ var media
+
+ // Find an opening.
+ while (index--) {
+ token = events[index][1]
+
+ if (open) {
+ // If we see another link, or inactive link label, we’ve been here before.
+ if (
+ token.type === types.link ||
+ (token.type === types.labelLink && token._inactive)
+ ) {
+ break
+ }
+
+ // Mark other link openings as inactive, as we can’t have links in
+ // links.
+ if (events[index][0] === 'enter' && token.type === types.labelLink) {
+ token._inactive = true
+ }
+ } else if (close) {
+ if (
+ events[index][0] === 'enter' &&
+ (token.type === types.labelImage || token.type === types.labelLink) &&
+ !token._balanced
+ ) {
+ open = index
+
+ if (token.type !== types.labelLink) {
+ offset = 2
+ break
+ }
+ }
+ } else if (token.type === types.labelEnd) {
+ close = index
+ }
+ }
+
+ group = {
+ type: events[open][1].type === types.labelLink ? types.link : types.image,
+ start: shallow(events[open][1].start),
+ end: shallow(events[events.length - 1][1].end)
+ }
+
+ label = {
+ type: types.label,
+ start: shallow(events[open][1].start),
+ end: shallow(events[close][1].end)
+ }
+
+ text = {
+ type: types.labelText,
+ start: shallow(events[open + offset + 2][1].end),
+ end: shallow(events[close - 2][1].start)
+ }
+
+ media = [
+ ['enter', group, context],
+ ['enter', label, context]
+ ]
+
+ // Opening marker.
+ media = chunkedPush(media, events.slice(open + 1, open + offset + 3))
+
+ // Text open.
+ media = chunkedPush(media, [['enter', text, context]])
+
+ // Between.
+ media = chunkedPush(
+ media,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + offset + 4, close - 3),
+ context
+ )
+ )
+
+ // Text close, marker close, label close.
+ media = chunkedPush(media, [
+ ['exit', text, context],
+ events[close - 2],
+ events[close - 1],
+ ['exit', label, context]
+ ])
+
+ // Reference, resource, or so.
+ media = chunkedPush(media, events.slice(close + 1))
+
+ // Media close.
+ media = chunkedPush(media, [['exit', group, context]])
+
+ chunkedSplice(events, open, events.length, media)
+
+ return events
+}
+
+function tokenizeLabelEnd(effects, ok, nok) {
+ var self = this
+ var index = self.events.length
+ var labelStart
+ var defined
+
+ // Find an opening.
+ while (index--) {
+ if (
+ (self.events[index][1].type === types.labelImage ||
+ self.events[index][1].type === types.labelLink) &&
+ !self.events[index][1]._balanced
+ ) {
+ labelStart = self.events[index][1]
+ break
+ }
+ }
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code === codes.rightSquareBracket,
+ 'expected `]`'
+ )
+
+ if (!labelStart) {
+ return nok(code)
+ }
+
+ // It’s a balanced bracket, but contains a link.
+ if (labelStart._inactive) return balanced(code)
+ defined =
+ self.parser.defined.indexOf(
+ normalizeIdentifier(
+ self.sliceSerialize({start: labelStart.end, end: self.now()})
+ )
+ ) > -1
+ effects.enter(types.labelEnd)
+ effects.enter(types.labelMarker)
+ effects.consume(code)
+ effects.exit(types.labelMarker)
+ effects.exit(types.labelEnd)
+ return afterLabelEnd
+ }
+
+ function afterLabelEnd(code) {
+ // Resource: `[asd](fgh)`.
+ if (code === codes.leftParenthesis) {
+ return effects.attempt(
+ resourceConstruct,
+ ok,
+ defined ? ok : balanced
+ )(code)
+ }
+
+ // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?
+ if (code === codes.leftSquareBracket) {
+ return effects.attempt(
+ fullReferenceConstruct,
+ ok,
+ defined
+ ? effects.attempt(collapsedReferenceConstruct, ok, balanced)
+ : balanced
+ )(code)
+ }
+
+ // Shortcut reference: `[asd]`?
+ return defined ? ok(code) : balanced(code)
+ }
+
+ function balanced(code) {
+ labelStart._balanced = true
+ return nok(code)
+ }
+}
+
+function tokenizeResource(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert__default['default'].equal(
+ code,
+ codes.leftParenthesis,
+ 'expected left paren'
+ )
+ effects.enter(types.resource)
+ effects.enter(types.resourceMarker)
+ effects.consume(code)
+ effects.exit(types.resourceMarker)
+ return factoryWhitespace(effects, open)
+ }
+
+ function open(code) {
+ if (code === codes.rightParenthesis) {
+ return end(code)
+ }
+
+ return factoryDestination(
+ effects,
+ destinationAfter,
+ nok,
+ types.resourceDestination,
+ types.resourceDestinationLiteral,
+ types.resourceDestinationLiteralMarker,
+ types.resourceDestinationRaw,
+ types.resourceDestinationString,
+ constants.linkResourceDestinationBalanceMax
+ )(code)
+ }
+
+ function destinationAfter(code) {
+ return markdownLineEndingOrSpace(code)
+ ? factoryWhitespace(effects, between)(code)
+ : end(code)
+ }
+
+ function between(code) {
+ if (
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.leftParenthesis
+ ) {
+ return factoryTitle(
+ effects,
+ factoryWhitespace(effects, end),
+ nok,
+ types.resourceTitle,
+ types.resourceTitleMarker,
+ types.resourceTitleString
+ )(code)
+ }
+
+ return end(code)
+ }
+
+ function end(code) {
+ if (code === codes.rightParenthesis) {
+ effects.enter(types.resourceMarker)
+ effects.consume(code)
+ effects.exit(types.resourceMarker)
+ effects.exit(types.resource)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+function tokenizeFullReference(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ assert__default['default'].equal(
+ code,
+ codes.leftSquareBracket,
+ 'expected left bracket'
+ )
+ return factoryLabel.call(
+ self,
+ effects,
+ afterLabel,
+ nok,
+ types.reference,
+ types.referenceMarker,
+ types.referenceString
+ )(code)
+ }
+
+ function afterLabel(code) {
+ return self.parser.defined.indexOf(
+ normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+ ) < 0
+ ? nok(code)
+ : ok(code)
+ }
+}
+
+function tokenizeCollapsedReference(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert__default['default'].equal(
+ code,
+ codes.leftSquareBracket,
+ 'expected left bracket'
+ )
+ effects.enter(types.reference)
+ effects.enter(types.referenceMarker)
+ effects.consume(code)
+ effects.exit(types.referenceMarker)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.rightSquareBracket) {
+ effects.enter(types.referenceMarker)
+ effects.consume(code)
+ effects.exit(types.referenceMarker)
+ effects.exit(types.reference)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = labelEnd
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.mjs
new file mode 100644
index 0000000000..16beeb0782
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-end.mjs
@@ -0,0 +1,350 @@
+var labelEnd = {
+ name: 'labelEnd',
+ tokenize: tokenizeLabelEnd,
+ resolveTo: resolveToLabelEnd,
+ resolveAll: resolveAllLabelEnd
+}
+export default labelEnd
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import chunkedPush from '../util/chunked-push.mjs'
+import chunkedSplice from '../util/chunked-splice.mjs'
+import normalizeIdentifier from '../util/normalize-identifier.mjs'
+import resolveAll from '../util/resolve-all.mjs'
+import shallow from '../util/shallow.mjs'
+import destinationFactory from './factory-destination.mjs'
+import labelFactory from './factory-label.mjs'
+import titleFactory from './factory-title.mjs'
+import whitespaceFactory from './factory-whitespace.mjs'
+
+var resourceConstruct = {tokenize: tokenizeResource}
+var fullReferenceConstruct = {tokenize: tokenizeFullReference}
+var collapsedReferenceConstruct = {tokenize: tokenizeCollapsedReference}
+
+function resolveAllLabelEnd(events) {
+ var index = -1
+ var token
+
+ while (++index < events.length) {
+ token = events[index][1]
+
+ if (
+ !token._used &&
+ (token.type === types.labelImage ||
+ token.type === types.labelLink ||
+ token.type === types.labelEnd)
+ ) {
+ // Remove the marker.
+ events.splice(index + 1, token.type === types.labelImage ? 4 : 2)
+ token.type = types.data
+ index++
+ }
+ }
+
+ return events
+}
+
+function resolveToLabelEnd(events, context) {
+ var index = events.length
+ var offset = 0
+ var group
+ var label
+ var text
+ var token
+ var open
+ var close
+ var media
+
+ // Find an opening.
+ while (index--) {
+ token = events[index][1]
+
+ if (open) {
+ // If we see another link, or inactive link label, we’ve been here before.
+ if (
+ token.type === types.link ||
+ (token.type === types.labelLink && token._inactive)
+ ) {
+ break
+ }
+
+ // Mark other link openings as inactive, as we can’t have links in
+ // links.
+ if (events[index][0] === 'enter' && token.type === types.labelLink) {
+ token._inactive = true
+ }
+ } else if (close) {
+ if (
+ events[index][0] === 'enter' &&
+ (token.type === types.labelImage || token.type === types.labelLink) &&
+ !token._balanced
+ ) {
+ open = index
+
+ if (token.type !== types.labelLink) {
+ offset = 2
+ break
+ }
+ }
+ } else if (token.type === types.labelEnd) {
+ close = index
+ }
+ }
+
+ group = {
+ type: events[open][1].type === types.labelLink ? types.link : types.image,
+ start: shallow(events[open][1].start),
+ end: shallow(events[events.length - 1][1].end)
+ }
+
+ label = {
+ type: types.label,
+ start: shallow(events[open][1].start),
+ end: shallow(events[close][1].end)
+ }
+
+ text = {
+ type: types.labelText,
+ start: shallow(events[open + offset + 2][1].end),
+ end: shallow(events[close - 2][1].start)
+ }
+
+ media = [
+ ['enter', group, context],
+ ['enter', label, context]
+ ]
+
+ // Opening marker.
+ media = chunkedPush(media, events.slice(open + 1, open + offset + 3))
+
+ // Text open.
+ media = chunkedPush(media, [['enter', text, context]])
+
+ // Between.
+ media = chunkedPush(
+ media,
+ resolveAll(
+ context.parser.constructs.insideSpan.null,
+ events.slice(open + offset + 4, close - 3),
+ context
+ )
+ )
+
+ // Text close, marker close, label close.
+ media = chunkedPush(media, [
+ ['exit', text, context],
+ events[close - 2],
+ events[close - 1],
+ ['exit', label, context]
+ ])
+
+ // Reference, resource, or so.
+ media = chunkedPush(media, events.slice(close + 1))
+
+ // Media close.
+ media = chunkedPush(media, [['exit', group, context]])
+
+ chunkedSplice(events, open, events.length, media)
+
+ return events
+}
+
+function tokenizeLabelEnd(effects, ok, nok) {
+ var self = this
+ var index = self.events.length
+ var labelStart
+ var defined
+
+ // Find an opening.
+ while (index--) {
+ if (
+ (self.events[index][1].type === types.labelImage ||
+ self.events[index][1].type === types.labelLink) &&
+ !self.events[index][1]._balanced
+ ) {
+ labelStart = self.events[index][1]
+ break
+ }
+ }
+
+ return start
+
+ function start(code) {
+ assert(code === codes.rightSquareBracket, 'expected `]`')
+
+ if (!labelStart) {
+ return nok(code)
+ }
+
+ // It’s a balanced bracket, but contains a link.
+ if (labelStart._inactive) return balanced(code)
+ defined =
+ self.parser.defined.indexOf(
+ normalizeIdentifier(
+ self.sliceSerialize({start: labelStart.end, end: self.now()})
+ )
+ ) > -1
+ effects.enter(types.labelEnd)
+ effects.enter(types.labelMarker)
+ effects.consume(code)
+ effects.exit(types.labelMarker)
+ effects.exit(types.labelEnd)
+ return afterLabelEnd
+ }
+
+ function afterLabelEnd(code) {
+ // Resource: `[asd](fgh)`.
+ if (code === codes.leftParenthesis) {
+ return effects.attempt(
+ resourceConstruct,
+ ok,
+ defined ? ok : balanced
+ )(code)
+ }
+
+ // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?
+ if (code === codes.leftSquareBracket) {
+ return effects.attempt(
+ fullReferenceConstruct,
+ ok,
+ defined
+ ? effects.attempt(collapsedReferenceConstruct, ok, balanced)
+ : balanced
+ )(code)
+ }
+
+ // Shortcut reference: `[asd]`?
+ return defined ? ok(code) : balanced(code)
+ }
+
+ function balanced(code) {
+ labelStart._balanced = true
+ return nok(code)
+ }
+}
+
+function tokenizeResource(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert.equal(code, codes.leftParenthesis, 'expected left paren')
+ effects.enter(types.resource)
+ effects.enter(types.resourceMarker)
+ effects.consume(code)
+ effects.exit(types.resourceMarker)
+ return whitespaceFactory(effects, open)
+ }
+
+ function open(code) {
+ if (code === codes.rightParenthesis) {
+ return end(code)
+ }
+
+ return destinationFactory(
+ effects,
+ destinationAfter,
+ nok,
+ types.resourceDestination,
+ types.resourceDestinationLiteral,
+ types.resourceDestinationLiteralMarker,
+ types.resourceDestinationRaw,
+ types.resourceDestinationString,
+ constants.linkResourceDestinationBalanceMax
+ )(code)
+ }
+
+ function destinationAfter(code) {
+ return markdownLineEndingOrSpace(code)
+ ? whitespaceFactory(effects, between)(code)
+ : end(code)
+ }
+
+ function between(code) {
+ if (
+ code === codes.quotationMark ||
+ code === codes.apostrophe ||
+ code === codes.leftParenthesis
+ ) {
+ return titleFactory(
+ effects,
+ whitespaceFactory(effects, end),
+ nok,
+ types.resourceTitle,
+ types.resourceTitleMarker,
+ types.resourceTitleString
+ )(code)
+ }
+
+ return end(code)
+ }
+
+ function end(code) {
+ if (code === codes.rightParenthesis) {
+ effects.enter(types.resourceMarker)
+ effects.consume(code)
+ effects.exit(types.resourceMarker)
+ effects.exit(types.resource)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
+
+function tokenizeFullReference(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ assert.equal(code, codes.leftSquareBracket, 'expected left bracket')
+ return labelFactory.call(
+ self,
+ effects,
+ afterLabel,
+ nok,
+ types.reference,
+ types.referenceMarker,
+ types.referenceString
+ )(code)
+ }
+
+ function afterLabel(code) {
+ return self.parser.defined.indexOf(
+ normalizeIdentifier(
+ self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)
+ )
+ ) < 0
+ ? nok(code)
+ : ok(code)
+ }
+}
+
+function tokenizeCollapsedReference(effects, ok, nok) {
+ return start
+
+ function start(code) {
+ assert.equal(code, codes.leftSquareBracket, 'expected left bracket')
+ effects.enter(types.reference)
+ effects.enter(types.referenceMarker)
+ effects.consume(code)
+ effects.exit(types.referenceMarker)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.rightSquareBracket) {
+ effects.enter(types.referenceMarker)
+ effects.consume(code)
+ effects.exit(types.referenceMarker)
+ effects.exit(types.reference)
+ return ok
+ }
+
+ return nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.js
new file mode 100644
index 0000000000..727a4687bb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.js
@@ -0,0 +1,56 @@
+'use strict'
+
+var labelEnd = require('./label-end.js')
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var labelStartImage = {
+ name: 'labelStartImage',
+ tokenize: tokenizeLabelStartImage,
+ resolveAll: labelEnd.resolveAll
+}
+
+function tokenizeLabelStartImage(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.exclamationMark, 'expected `!`')
+ effects.enter(types.labelImage)
+ effects.enter(types.labelImageMarker)
+ effects.consume(code)
+ effects.exit(types.labelImageMarker)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.leftSquareBracket) {
+ effects.enter(types.labelMarker)
+ effects.consume(code)
+ effects.exit(types.labelMarker)
+ effects.exit(types.labelImage)
+ return after
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ /* c8 ignore next */
+ return code === codes.caret &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs
+ ? /* c8 ignore next */ nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = labelStartImage
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.mjs
new file mode 100644
index 0000000000..a5bef6e88a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-image.mjs
@@ -0,0 +1,48 @@
+import labelEnd from './label-end.mjs'
+
+var labelStartImage = {
+ name: 'labelStartImage',
+ tokenize: tokenizeLabelStartImage,
+ resolveAll: labelEnd.resolveAll
+}
+export default labelStartImage
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import types from '../constant/types.mjs'
+
+function tokenizeLabelStartImage(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ assert(code === codes.exclamationMark, 'expected `!`')
+ effects.enter(types.labelImage)
+ effects.enter(types.labelImageMarker)
+ effects.consume(code)
+ effects.exit(types.labelImageMarker)
+ return open
+ }
+
+ function open(code) {
+ if (code === codes.leftSquareBracket) {
+ effects.enter(types.labelMarker)
+ effects.consume(code)
+ effects.exit(types.labelMarker)
+ effects.exit(types.labelImage)
+ return after
+ }
+
+ return nok(code)
+ }
+
+ function after(code) {
+ /* c8 ignore next */
+ return code === codes.caret &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs
+ ? /* c8 ignore next */ nok(code)
+ : ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.js
new file mode 100644
index 0000000000..a31a1a3d6f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.js
@@ -0,0 +1,46 @@
+'use strict'
+
+var labelEnd = require('./label-end.js')
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var types = require('../constant/types.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var labelStartLink = {
+ name: 'labelStartLink',
+ tokenize: tokenizeLabelStartLink,
+ resolveAll: labelEnd.resolveAll
+}
+
+function tokenizeLabelStartLink(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ assert__default['default'](code === codes.leftSquareBracket, 'expected `[`')
+ effects.enter(types.labelLink)
+ effects.enter(types.labelMarker)
+ effects.consume(code)
+ effects.exit(types.labelMarker)
+ effects.exit(types.labelLink)
+ return after
+ }
+
+ function after(code) {
+ /* c8 ignore next */
+ return code === codes.caret &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs
+ ? /* c8 ignore next */
+ nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = labelStartLink
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.mjs
new file mode 100644
index 0000000000..7e92c6d1af
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/label-start-link.mjs
@@ -0,0 +1,38 @@
+import labelEnd from './label-end.mjs'
+
+var labelStartLink = {
+ name: 'labelStartLink',
+ tokenize: tokenizeLabelStartLink,
+ resolveAll: labelEnd.resolveAll
+}
+export default labelStartLink
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import types from '../constant/types.mjs'
+
+function tokenizeLabelStartLink(effects, ok, nok) {
+ var self = this
+
+ return start
+
+ function start(code) {
+ assert(code === codes.leftSquareBracket, 'expected `[`')
+ effects.enter(types.labelLink)
+ effects.enter(types.labelMarker)
+ effects.consume(code)
+ effects.exit(types.labelMarker)
+ effects.exit(types.labelLink)
+ return after
+ }
+
+ function after(code) {
+ /* c8 ignore next */
+ return code === codes.caret &&
+ /* c8 ignore next */
+ '_hiddenFootnoteSupport' in self.parser.constructs
+ ? /* c8 ignore next */
+ nok(code)
+ : ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.js
new file mode 100644
index 0000000000..e56215c9b8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.js
@@ -0,0 +1,31 @@
+'use strict'
+
+var assert = require('assert')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var lineEnding = {
+ name: 'lineEnding',
+ tokenize: tokenizeLineEnding
+}
+
+function tokenizeLineEnding(effects, ok) {
+ return start
+
+ function start(code) {
+ assert__default['default'](markdownLineEnding(code), 'expected eol')
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return factorySpace(effects, ok, types.linePrefix)
+ }
+}
+
+module.exports = lineEnding
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.mjs
new file mode 100644
index 0000000000..63029268f1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/line-ending.mjs
@@ -0,0 +1,22 @@
+var lineEnding = {
+ name: 'lineEnding',
+ tokenize: tokenizeLineEnding
+}
+export default lineEnding
+
+import assert from 'assert'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function tokenizeLineEnding(effects, ok) {
+ return start
+
+ function start(code) {
+ assert(markdownLineEnding(code), 'expected eol')
+ effects.enter(types.lineEnding)
+ effects.consume(code)
+ effects.exit(types.lineEnding)
+ return spaceFactory(effects, ok, types.linePrefix)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.js
new file mode 100644
index 0000000000..44f7615f52
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.js
@@ -0,0 +1,219 @@
+'use strict'
+
+var asciiDigit = require('../character/ascii-digit.js')
+var codes = require('../character/codes.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var prefixSize = require('../util/prefix-size.js')
+var sizeChunks = require('../util/size-chunks.js')
+var factorySpace = require('./factory-space.js')
+var partialBlankLine = require('./partial-blank-line.js')
+var thematicBreak = require('./thematic-break.js')
+
+var list = {
+ name: 'list',
+ tokenize: tokenizeListStart,
+ continuation: {tokenize: tokenizeListContinuation},
+ exit: tokenizeListEnd
+}
+
+var listItemPrefixWhitespaceConstruct = {
+ tokenize: tokenizeListItemPrefixWhitespace,
+ partial: true
+}
+var indentConstruct = {tokenize: tokenizeIndent, partial: true}
+
+function tokenizeListStart(effects, ok, nok) {
+ var self = this
+ var initialSize = prefixSize(self.events, types.linePrefix)
+ var size = 0
+
+ return start
+
+ function start(code) {
+ var kind =
+ self.containerState.type ||
+ (code === codes.asterisk || code === codes.plusSign || code === codes.dash
+ ? types.listUnordered
+ : types.listOrdered)
+
+ if (
+ kind === types.listUnordered
+ ? !self.containerState.marker || code === self.containerState.marker
+ : asciiDigit(code)
+ ) {
+ if (!self.containerState.type) {
+ self.containerState.type = kind
+ effects.enter(kind, {_container: true})
+ }
+
+ if (kind === types.listUnordered) {
+ effects.enter(types.listItemPrefix)
+ return code === codes.asterisk || code === codes.dash
+ ? effects.check(thematicBreak, nok, atMarker)(code)
+ : atMarker(code)
+ }
+
+ if (!self.interrupt || code === codes.digit1) {
+ effects.enter(types.listItemPrefix)
+ effects.enter(types.listItemValue)
+ return inside(code)
+ }
+ }
+
+ return nok(code)
+ }
+
+ function inside(code) {
+ if (asciiDigit(code) && ++size < constants.listItemValueSizeMax) {
+ effects.consume(code)
+ return inside
+ }
+
+ if (
+ (!self.interrupt || size < 2) &&
+ (self.containerState.marker
+ ? code === self.containerState.marker
+ : code === codes.rightParenthesis || code === codes.dot)
+ ) {
+ effects.exit(types.listItemValue)
+ return atMarker(code)
+ }
+
+ return nok(code)
+ }
+
+ function atMarker(code) {
+ effects.enter(types.listItemMarker)
+ effects.consume(code)
+ effects.exit(types.listItemMarker)
+ self.containerState.marker = self.containerState.marker || code
+ return effects.check(
+ partialBlankLine,
+ // Can’t be empty when interrupting.
+ self.interrupt ? nok : onBlank,
+ effects.attempt(
+ listItemPrefixWhitespaceConstruct,
+ endOfPrefix,
+ otherPrefix
+ )
+ )
+ }
+
+ function onBlank(code) {
+ self.containerState.initialBlankLine = true
+ initialSize++
+ return endOfPrefix(code)
+ }
+
+ function otherPrefix(code) {
+ if (markdownSpace(code)) {
+ effects.enter(types.listItemPrefixWhitespace)
+ effects.consume(code)
+ effects.exit(types.listItemPrefixWhitespace)
+ return endOfPrefix
+ }
+
+ return nok(code)
+ }
+
+ function endOfPrefix(code) {
+ self.containerState.size =
+ initialSize +
+ sizeChunks(self.sliceStream(effects.exit(types.listItemPrefix)))
+ return ok(code)
+ }
+}
+
+function tokenizeListContinuation(effects, ok, nok) {
+ var self = this
+
+ self.containerState._closeFlow = undefined
+
+ return effects.check(partialBlankLine, onBlank, notBlank)
+
+ function onBlank(code) {
+ self.containerState.furtherBlankLines =
+ self.containerState.furtherBlankLines ||
+ self.containerState.initialBlankLine
+
+ // We have a blank line.
+ // Still, try to consume at most the items size.
+ return factorySpace(
+ effects,
+ ok,
+ types.listItemIndent,
+ self.containerState.size + 1
+ )(code)
+ }
+
+ function notBlank(code) {
+ if (self.containerState.furtherBlankLines || !markdownSpace(code)) {
+ self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined
+ return notInCurrentItem(code)
+ }
+
+ self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined
+ return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)
+ }
+
+ function notInCurrentItem(code) {
+ // While we do continue, we signal that the flow should be closed.
+ self.containerState._closeFlow = true
+ // As we’re closing flow, we’re no longer interrupting.
+ self.interrupt = undefined
+ return factorySpace(
+ effects,
+ effects.attempt(list, ok, nok),
+ types.linePrefix,
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )(code)
+ }
+}
+
+function tokenizeIndent(effects, ok, nok) {
+ var self = this
+
+ return factorySpace(
+ effects,
+ afterPrefix,
+ types.listItemIndent,
+ self.containerState.size + 1
+ )
+
+ function afterPrefix(code) {
+ return prefixSize(self.events, types.listItemIndent) ===
+ self.containerState.size
+ ? ok(code)
+ : nok(code)
+ }
+}
+
+function tokenizeListEnd(effects) {
+ effects.exit(this.containerState.type)
+}
+
+function tokenizeListItemPrefixWhitespace(effects, ok, nok) {
+ var self = this
+
+ return factorySpace(
+ effects,
+ afterPrefix,
+ types.listItemPrefixWhitespace,
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize + 1
+ )
+
+ function afterPrefix(code) {
+ return markdownSpace(code) ||
+ !prefixSize(self.events, types.listItemPrefixWhitespace)
+ ? nok(code)
+ : ok(code)
+ }
+}
+
+module.exports = list
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.mjs
new file mode 100644
index 0000000000..017a6eabac
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/list.mjs
@@ -0,0 +1,216 @@
+var list = {
+ name: 'list',
+ tokenize: tokenizeListStart,
+ continuation: {tokenize: tokenizeListContinuation},
+ exit: tokenizeListEnd
+}
+export default list
+
+import asciiDigit from '../character/ascii-digit.mjs'
+import codes from '../character/codes.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import prefixSize from '../util/prefix-size.mjs'
+import sizeChunks from '../util/size-chunks.mjs'
+import spaceFactory from './factory-space.mjs'
+import blank from './partial-blank-line.mjs'
+import thematicBreak from './thematic-break.mjs'
+
+var listItemPrefixWhitespaceConstruct = {
+ tokenize: tokenizeListItemPrefixWhitespace,
+ partial: true
+}
+var indentConstruct = {tokenize: tokenizeIndent, partial: true}
+
+function tokenizeListStart(effects, ok, nok) {
+ var self = this
+ var initialSize = prefixSize(self.events, types.linePrefix)
+ var size = 0
+
+ return start
+
+ function start(code) {
+ var kind =
+ self.containerState.type ||
+ (code === codes.asterisk || code === codes.plusSign || code === codes.dash
+ ? types.listUnordered
+ : types.listOrdered)
+
+ if (
+ kind === types.listUnordered
+ ? !self.containerState.marker || code === self.containerState.marker
+ : asciiDigit(code)
+ ) {
+ if (!self.containerState.type) {
+ self.containerState.type = kind
+ effects.enter(kind, {_container: true})
+ }
+
+ if (kind === types.listUnordered) {
+ effects.enter(types.listItemPrefix)
+ return code === codes.asterisk || code === codes.dash
+ ? effects.check(thematicBreak, nok, atMarker)(code)
+ : atMarker(code)
+ }
+
+ if (!self.interrupt || code === codes.digit1) {
+ effects.enter(types.listItemPrefix)
+ effects.enter(types.listItemValue)
+ return inside(code)
+ }
+ }
+
+ return nok(code)
+ }
+
+ function inside(code) {
+ if (asciiDigit(code) && ++size < constants.listItemValueSizeMax) {
+ effects.consume(code)
+ return inside
+ }
+
+ if (
+ (!self.interrupt || size < 2) &&
+ (self.containerState.marker
+ ? code === self.containerState.marker
+ : code === codes.rightParenthesis || code === codes.dot)
+ ) {
+ effects.exit(types.listItemValue)
+ return atMarker(code)
+ }
+
+ return nok(code)
+ }
+
+ function atMarker(code) {
+ effects.enter(types.listItemMarker)
+ effects.consume(code)
+ effects.exit(types.listItemMarker)
+ self.containerState.marker = self.containerState.marker || code
+ return effects.check(
+ blank,
+ // Can’t be empty when interrupting.
+ self.interrupt ? nok : onBlank,
+ effects.attempt(
+ listItemPrefixWhitespaceConstruct,
+ endOfPrefix,
+ otherPrefix
+ )
+ )
+ }
+
+ function onBlank(code) {
+ self.containerState.initialBlankLine = true
+ initialSize++
+ return endOfPrefix(code)
+ }
+
+ function otherPrefix(code) {
+ if (markdownSpace(code)) {
+ effects.enter(types.listItemPrefixWhitespace)
+ effects.consume(code)
+ effects.exit(types.listItemPrefixWhitespace)
+ return endOfPrefix
+ }
+
+ return nok(code)
+ }
+
+ function endOfPrefix(code) {
+ self.containerState.size =
+ initialSize +
+ sizeChunks(self.sliceStream(effects.exit(types.listItemPrefix)))
+ return ok(code)
+ }
+}
+
+function tokenizeListContinuation(effects, ok, nok) {
+ var self = this
+
+ self.containerState._closeFlow = undefined
+
+ return effects.check(blank, onBlank, notBlank)
+
+ function onBlank(code) {
+ self.containerState.furtherBlankLines =
+ self.containerState.furtherBlankLines ||
+ self.containerState.initialBlankLine
+
+ // We have a blank line.
+ // Still, try to consume at most the items size.
+ return spaceFactory(
+ effects,
+ ok,
+ types.listItemIndent,
+ self.containerState.size + 1
+ )(code)
+ }
+
+ function notBlank(code) {
+ if (self.containerState.furtherBlankLines || !markdownSpace(code)) {
+ self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined
+ return notInCurrentItem(code)
+ }
+
+ self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined
+ return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)
+ }
+
+ function notInCurrentItem(code) {
+ // While we do continue, we signal that the flow should be closed.
+ self.containerState._closeFlow = true
+ // As we’re closing flow, we’re no longer interrupting.
+ self.interrupt = undefined
+ return spaceFactory(
+ effects,
+ effects.attempt(list, ok, nok),
+ types.linePrefix,
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize
+ )(code)
+ }
+}
+
+function tokenizeIndent(effects, ok, nok) {
+ var self = this
+
+ return spaceFactory(
+ effects,
+ afterPrefix,
+ types.listItemIndent,
+ self.containerState.size + 1
+ )
+
+ function afterPrefix(code) {
+ return prefixSize(self.events, types.listItemIndent) ===
+ self.containerState.size
+ ? ok(code)
+ : nok(code)
+ }
+}
+
+function tokenizeListEnd(effects) {
+ effects.exit(this.containerState.type)
+}
+
+function tokenizeListItemPrefixWhitespace(effects, ok, nok) {
+ var self = this
+
+ return spaceFactory(
+ effects,
+ afterPrefix,
+ types.listItemPrefixWhitespace,
+ self.parser.constructs.disable.null.indexOf('codeIndented') > -1
+ ? undefined
+ : constants.tabSize + 1
+ )
+
+ function afterPrefix(code) {
+ return markdownSpace(code) ||
+ !prefixSize(self.events, types.listItemPrefixWhitespace)
+ ? nok(code)
+ : ok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.js
new file mode 100644
index 0000000000..073824b3b6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.js
@@ -0,0 +1,21 @@
+'use strict'
+
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+var partialBlankLine = {
+ tokenize: tokenizePartialBlankLine,
+ partial: true
+}
+
+function tokenizePartialBlankLine(effects, ok, nok) {
+ return factorySpace(effects, afterWhitespace, types.linePrefix)
+
+ function afterWhitespace(code) {
+ return code === codes.eof || markdownLineEnding(code) ? ok(code) : nok(code)
+ }
+}
+
+module.exports = partialBlankLine
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.mjs
new file mode 100644
index 0000000000..de85658576
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/partial-blank-line.mjs
@@ -0,0 +1,18 @@
+var partialBlankLine = {
+ tokenize: tokenizePartialBlankLine,
+ partial: true
+}
+export default partialBlankLine
+
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function tokenizePartialBlankLine(effects, ok, nok) {
+ return spaceFactory(effects, afterWhitespace, types.linePrefix)
+
+ function afterWhitespace(code) {
+ return code === codes.eof || markdownLineEnding(code) ? ok(code) : nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.js
new file mode 100644
index 0000000000..9ac1e5c4e9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.js
@@ -0,0 +1,138 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var types = require('../constant/types.js')
+var shallow = require('../util/shallow.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var setextUnderline = {
+ name: 'setextUnderline',
+ tokenize: tokenizeSetextUnderline,
+ resolveTo: resolveToSetextUnderline
+}
+
+function resolveToSetextUnderline(events, context) {
+ var index = events.length
+ var content
+ var text
+ var definition
+ var heading
+
+ // Find the opening of the content.
+ // It’ll always exist: we don’t tokenize if it isn’t there.
+ while (index--) {
+ if (events[index][0] === 'enter') {
+ if (events[index][1].type === types.content) {
+ content = index
+ break
+ }
+
+ if (events[index][1].type === types.paragraph) {
+ text = index
+ }
+ }
+ // Exit
+ else {
+ if (events[index][1].type === types.content) {
+ // Remove the content end (if needed we’ll add it later)
+ events.splice(index, 1)
+ }
+
+ if (!definition && events[index][1].type === types.definition) {
+ definition = index
+ }
+ }
+ }
+
+ heading = {
+ type: types.setextHeading,
+ start: shallow(events[text][1].start),
+ end: shallow(events[events.length - 1][1].end)
+ }
+
+ // Change the paragraph to setext heading text.
+ events[text][1].type = types.setextHeadingText
+
+ // If we have definitions in the content, we’ll keep on having content,
+ // but we need move it.
+ if (definition) {
+ events.splice(text, 0, ['enter', heading, context])
+ events.splice(definition + 1, 0, ['exit', events[content][1], context])
+ events[content][1].end = shallow(events[definition][1].end)
+ } else {
+ events[content][1] = heading
+ }
+
+ // Add the heading exit at the end.
+ events.push(['exit', heading, context])
+
+ return events
+}
+
+function tokenizeSetextUnderline(effects, ok, nok) {
+ var self = this
+ var index = self.events.length
+ var marker
+ var paragraph
+
+ // Find an opening.
+ while (index--) {
+ // Skip enter/exit of line ending, line prefix, and content.
+ // We can now either have a definition or a paragraph.
+ if (
+ self.events[index][1].type !== types.lineEnding &&
+ self.events[index][1].type !== types.linePrefix &&
+ self.events[index][1].type !== types.content
+ ) {
+ paragraph = self.events[index][1].type === types.paragraph
+ break
+ }
+ }
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code === codes.dash || code === codes.equalsTo,
+ 'expected `=` or `-`'
+ )
+
+ if (!self.lazy && (self.interrupt || paragraph)) {
+ effects.enter(types.setextHeadingLine)
+ effects.enter(types.setextHeadingLineSequence)
+ marker = code
+ return closingSequence(code)
+ }
+
+ return nok(code)
+ }
+
+ function closingSequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return closingSequence
+ }
+
+ effects.exit(types.setextHeadingLineSequence)
+ return factorySpace(effects, closingSequenceEnd, types.lineSuffix)(code)
+ }
+
+ function closingSequenceEnd(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.setextHeadingLine)
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
+
+module.exports = setextUnderline
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.mjs
new file mode 100644
index 0000000000..6724846b68
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/setext-underline.mjs
@@ -0,0 +1,129 @@
+var setextUnderline = {
+ name: 'setextUnderline',
+ tokenize: tokenizeSetextUnderline,
+ resolveTo: resolveToSetextUnderline
+}
+export default setextUnderline
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import types from '../constant/types.mjs'
+import shallow from '../util/shallow.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function resolveToSetextUnderline(events, context) {
+ var index = events.length
+ var content
+ var text
+ var definition
+ var heading
+
+ // Find the opening of the content.
+ // It’ll always exist: we don’t tokenize if it isn’t there.
+ while (index--) {
+ if (events[index][0] === 'enter') {
+ if (events[index][1].type === types.content) {
+ content = index
+ break
+ }
+
+ if (events[index][1].type === types.paragraph) {
+ text = index
+ }
+ }
+ // Exit
+ else {
+ if (events[index][1].type === types.content) {
+ // Remove the content end (if needed we’ll add it later)
+ events.splice(index, 1)
+ }
+
+ if (!definition && events[index][1].type === types.definition) {
+ definition = index
+ }
+ }
+ }
+
+ heading = {
+ type: types.setextHeading,
+ start: shallow(events[text][1].start),
+ end: shallow(events[events.length - 1][1].end)
+ }
+
+ // Change the paragraph to setext heading text.
+ events[text][1].type = types.setextHeadingText
+
+ // If we have definitions in the content, we’ll keep on having content,
+ // but we need move it.
+ if (definition) {
+ events.splice(text, 0, ['enter', heading, context])
+ events.splice(definition + 1, 0, ['exit', events[content][1], context])
+ events[content][1].end = shallow(events[definition][1].end)
+ } else {
+ events[content][1] = heading
+ }
+
+ // Add the heading exit at the end.
+ events.push(['exit', heading, context])
+
+ return events
+}
+
+function tokenizeSetextUnderline(effects, ok, nok) {
+ var self = this
+ var index = self.events.length
+ var marker
+ var paragraph
+
+ // Find an opening.
+ while (index--) {
+ // Skip enter/exit of line ending, line prefix, and content.
+ // We can now either have a definition or a paragraph.
+ if (
+ self.events[index][1].type !== types.lineEnding &&
+ self.events[index][1].type !== types.linePrefix &&
+ self.events[index][1].type !== types.content
+ ) {
+ paragraph = self.events[index][1].type === types.paragraph
+ break
+ }
+ }
+
+ return start
+
+ function start(code) {
+ assert(
+ code === codes.dash || code === codes.equalsTo,
+ 'expected `=` or `-`'
+ )
+
+ if (!self.lazy && (self.interrupt || paragraph)) {
+ effects.enter(types.setextHeadingLine)
+ effects.enter(types.setextHeadingLineSequence)
+ marker = code
+ return closingSequence(code)
+ }
+
+ return nok(code)
+ }
+
+ function closingSequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ return closingSequence
+ }
+
+ effects.exit(types.setextHeadingLineSequence)
+ return spaceFactory(effects, closingSequenceEnd, types.lineSuffix)(code)
+ }
+
+ function closingSequenceEnd(code) {
+ if (code === codes.eof || markdownLineEnding(code)) {
+ effects.exit(types.setextHeadingLine)
+ return ok(code)
+ }
+
+ return nok(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.js b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.js
new file mode 100644
index 0000000000..a927a51cb1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.js
@@ -0,0 +1,74 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var markdownSpace = require('../character/markdown-space.js')
+var constants = require('../constant/constants.js')
+var types = require('../constant/types.js')
+var factorySpace = require('./factory-space.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+var thematicBreak = {
+ name: 'thematicBreak',
+ tokenize: tokenizeThematicBreak
+}
+
+function tokenizeThematicBreak(effects, ok, nok) {
+ var size = 0
+ var marker
+
+ return start
+
+ function start(code) {
+ assert__default['default'](
+ code === codes.asterisk ||
+ code === codes.dash ||
+ code === codes.underscore,
+ 'expected `*`, `-`, or `_`'
+ )
+
+ effects.enter(types.thematicBreak)
+ marker = code
+ return atBreak(code)
+ }
+
+ function atBreak(code) {
+ if (code === marker) {
+ effects.enter(types.thematicBreakSequence)
+ return sequence(code)
+ }
+
+ if (markdownSpace(code)) {
+ return factorySpace(effects, atBreak, types.whitespace)(code)
+ }
+
+ if (
+ size < constants.thematicBreakMarkerCountMin ||
+ (code !== codes.eof && !markdownLineEnding(code))
+ ) {
+ return nok(code)
+ }
+
+ effects.exit(types.thematicBreak)
+ return ok(code)
+ }
+
+ function sequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ size++
+ return sequence
+ }
+
+ effects.exit(types.thematicBreakSequence)
+ return atBreak(code)
+ }
+}
+
+module.exports = thematicBreak
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.mjs
new file mode 100644
index 0000000000..58c4d7824d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/tokenize/thematic-break.mjs
@@ -0,0 +1,65 @@
+var thematicBreak = {
+ name: 'thematicBreak',
+ tokenize: tokenizeThematicBreak
+}
+export default thematicBreak
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import markdownSpace from '../character/markdown-space.mjs'
+import constants from '../constant/constants.mjs'
+import types from '../constant/types.mjs'
+import spaceFactory from './factory-space.mjs'
+
+function tokenizeThematicBreak(effects, ok, nok) {
+ var size = 0
+ var marker
+
+ return start
+
+ function start(code) {
+ assert(
+ code === codes.asterisk ||
+ code === codes.dash ||
+ code === codes.underscore,
+ 'expected `*`, `-`, or `_`'
+ )
+
+ effects.enter(types.thematicBreak)
+ marker = code
+ return atBreak(code)
+ }
+
+ function atBreak(code) {
+ if (code === marker) {
+ effects.enter(types.thematicBreakSequence)
+ return sequence(code)
+ }
+
+ if (markdownSpace(code)) {
+ return spaceFactory(effects, atBreak, types.whitespace)(code)
+ }
+
+ if (
+ size < constants.thematicBreakMarkerCountMin ||
+ (code !== codes.eof && !markdownLineEnding(code))
+ ) {
+ return nok(code)
+ }
+
+ effects.exit(types.thematicBreak)
+ return ok(code)
+ }
+
+ function sequence(code) {
+ if (code === marker) {
+ effects.consume(code)
+ size++
+ return sequence
+ }
+
+ effects.exit(types.thematicBreakSequence)
+ return atBreak(code)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.js
new file mode 100644
index 0000000000..7768977995
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.js
@@ -0,0 +1,14 @@
+'use strict'
+
+var chunkedSplice = require('./chunked-splice.js')
+
+function chunkedPush(list, items) {
+ if (list.length) {
+ chunkedSplice(list, list.length, 0, items)
+ return list
+ }
+
+ return items
+}
+
+module.exports = chunkedPush
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.mjs
new file mode 100644
index 0000000000..3c84d8b7e1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-push.mjs
@@ -0,0 +1,12 @@
+export default chunkedPush
+
+import chunkedSplice from './chunked-splice.mjs'
+
+function chunkedPush(list, items) {
+ if (list.length) {
+ chunkedSplice(list, list.length, 0, items)
+ return list
+ }
+
+ return items
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.js
new file mode 100644
index 0000000000..5a3246d8bc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.js
@@ -0,0 +1,46 @@
+'use strict'
+
+var constants = require('../constant/constants.js')
+var splice = require('../constant/splice.js')
+
+// `Array#splice` takes all items to be inserted as individual argument which
+// causes a stack overflow in V8 when trying to insert 100k items for instance.
+function chunkedSplice(list, start, remove, items) {
+ var end = list.length
+ var chunkStart = 0
+ var parameters
+
+ // Make start between zero and `end` (included).
+ if (start < 0) {
+ start = -start > end ? 0 : end + start
+ } else {
+ start = start > end ? end : start
+ }
+
+ remove = remove > 0 ? remove : 0
+
+ // No need to chunk the items if there’s only a couple (10k) items.
+ if (items.length < constants.v8MaxSafeChunkSize) {
+ parameters = Array.from(items)
+ parameters.unshift(start, remove)
+ splice.apply(list, parameters)
+ } else {
+ // Delete `remove` items starting from `start`
+ if (remove) splice.apply(list, [start, remove])
+
+ // Insert the items in chunks to not cause stack overflows.
+ while (chunkStart < items.length) {
+ parameters = items.slice(
+ chunkStart,
+ chunkStart + constants.v8MaxSafeChunkSize
+ )
+ parameters.unshift(start, 0)
+ splice.apply(list, parameters)
+
+ chunkStart += constants.v8MaxSafeChunkSize
+ start += constants.v8MaxSafeChunkSize
+ }
+ }
+}
+
+module.exports = chunkedSplice
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.mjs
new file mode 100644
index 0000000000..0bda9533bb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/chunked-splice.mjs
@@ -0,0 +1,44 @@
+export default chunkedSplice
+
+import constants from '../constant/constants.mjs'
+import splice from '../constant/splice.mjs'
+
+// `Array#splice` takes all items to be inserted as individual argument which
+// causes a stack overflow in V8 when trying to insert 100k items for instance.
+function chunkedSplice(list, start, remove, items) {
+ var end = list.length
+ var chunkStart = 0
+ var parameters
+
+ // Make start between zero and `end` (included).
+ if (start < 0) {
+ start = -start > end ? 0 : end + start
+ } else {
+ start = start > end ? end : start
+ }
+
+ remove = remove > 0 ? remove : 0
+
+ // No need to chunk the items if there’s only a couple (10k) items.
+ if (items.length < constants.v8MaxSafeChunkSize) {
+ parameters = Array.from(items)
+ parameters.unshift(start, remove)
+ splice.apply(list, parameters)
+ } else {
+ // Delete `remove` items starting from `start`
+ if (remove) splice.apply(list, [start, remove])
+
+ // Insert the items in chunks to not cause stack overflows.
+ while (chunkStart < items.length) {
+ parameters = items.slice(
+ chunkStart,
+ chunkStart + constants.v8MaxSafeChunkSize
+ )
+ parameters.unshift(start, 0)
+ splice.apply(list, parameters)
+
+ chunkStart += constants.v8MaxSafeChunkSize
+ start += constants.v8MaxSafeChunkSize
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.js
new file mode 100644
index 0000000000..3c73c41f57
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.js
@@ -0,0 +1,27 @@
+'use strict'
+
+var codes = require('../character/codes.js')
+var markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')
+var unicodePunctuation = require('../character/unicode-punctuation.js')
+var unicodeWhitespace = require('../character/unicode-whitespace.js')
+var constants = require('../constant/constants.js')
+
+// Classify whether a character is unicode whitespace, unicode punctuation, or
+// anything else.
+// Used for attention (emphasis, strong), whose sequences can open or close
+// based on the class of surrounding characters.
+function classifyCharacter(code) {
+ if (
+ code === codes.eof ||
+ markdownLineEndingOrSpace(code) ||
+ unicodeWhitespace(code)
+ ) {
+ return constants.characterGroupWhitespace
+ }
+
+ if (unicodePunctuation(code)) {
+ return constants.characterGroupPunctuation
+ }
+}
+
+module.exports = classifyCharacter
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.mjs
new file mode 100644
index 0000000000..f701c8e0d0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/classify-character.mjs
@@ -0,0 +1,25 @@
+export default classifyCharacter
+
+import codes from '../character/codes.mjs'
+import markdownLineEndingOrSpace from '../character/markdown-line-ending-or-space.mjs'
+import unicodePunctuation from '../character/unicode-punctuation.mjs'
+import unicodeWhitespace from '../character/unicode-whitespace.mjs'
+import constants from '../constant/constants.mjs'
+
+// Classify whether a character is unicode whitespace, unicode punctuation, or
+// anything else.
+// Used for attention (emphasis, strong), whose sequences can open or close
+// based on the class of surrounding characters.
+function classifyCharacter(code) {
+ if (
+ code === codes.eof ||
+ markdownLineEndingOrSpace(code) ||
+ unicodeWhitespace(code)
+ ) {
+ return constants.characterGroupWhitespace
+ }
+
+ if (unicodePunctuation(code)) {
+ return constants.characterGroupPunctuation
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.js
new file mode 100644
index 0000000000..830ec3bf25
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.js
@@ -0,0 +1,50 @@
+'use strict'
+
+var hasOwnProperty = require('../constant/has-own-property.js')
+var chunkedSplice = require('./chunked-splice.js')
+var miniflat = require('./miniflat.js')
+
+// Combine several syntax extensions into one.
+function combineExtensions(extensions) {
+ var all = {}
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(all, extensions[index])
+ }
+
+ return all
+}
+
+function extension(all, extension) {
+ var hook
+ var left
+ var right
+ var code
+
+ for (hook in extension) {
+ left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})
+ right = extension[hook]
+
+ for (code in right) {
+ left[code] = constructs(
+ miniflat(right[code]),
+ hasOwnProperty.call(left, code) ? left[code] : []
+ )
+ }
+ }
+}
+
+function constructs(list, existing) {
+ var index = -1
+ var before = []
+
+ while (++index < list.length) {
+ ;(list[index].add === 'after' ? existing : before).push(list[index])
+ }
+
+ chunkedSplice(existing, 0, 0, before)
+ return existing
+}
+
+module.exports = combineExtensions
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.mjs
new file mode 100644
index 0000000000..605652a8c8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-extensions.mjs
@@ -0,0 +1,48 @@
+export default combineExtensions
+
+import own from '../constant/has-own-property.mjs'
+import chunkedSplice from './chunked-splice.mjs'
+import miniflat from './miniflat.mjs'
+
+// Combine several syntax extensions into one.
+function combineExtensions(extensions) {
+ var all = {}
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(all, extensions[index])
+ }
+
+ return all
+}
+
+function extension(all, extension) {
+ var hook
+ var left
+ var right
+ var code
+
+ for (hook in extension) {
+ left = own.call(all, hook) ? all[hook] : (all[hook] = {})
+ right = extension[hook]
+
+ for (code in right) {
+ left[code] = constructs(
+ miniflat(right[code]),
+ own.call(left, code) ? left[code] : []
+ )
+ }
+ }
+}
+
+function constructs(list, existing) {
+ var index = -1
+ var before = []
+
+ while (++index < list.length) {
+ ;(list[index].add === 'after' ? existing : before).push(list[index])
+ }
+
+ chunkedSplice(existing, 0, 0, before)
+ return existing
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.js
new file mode 100644
index 0000000000..c4fdadaf07
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.js
@@ -0,0 +1,35 @@
+'use strict'
+
+var hasOwnProperty = require('../constant/has-own-property.js')
+
+// Combine several HTML extensions into one.
+function combineHtmlExtensions(extensions) {
+ var handlers = {}
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(handlers, extensions[index])
+ }
+
+ return handlers
+}
+
+function extension(handlers, extension) {
+ var hook
+ var left
+ var right
+ var type
+
+ for (hook in extension) {
+ left = hasOwnProperty.call(handlers, hook)
+ ? handlers[hook]
+ : (handlers[hook] = {})
+ right = extension[hook]
+
+ for (type in right) {
+ left[type] = right[type]
+ }
+ }
+}
+
+module.exports = combineHtmlExtensions
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.mjs
new file mode 100644
index 0000000000..d7e54e75dc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/combine-html-extensions.mjs
@@ -0,0 +1,31 @@
+export default combineHtmlExtensions
+
+import own from '../constant/has-own-property.mjs'
+
+// Combine several HTML extensions into one.
+function combineHtmlExtensions(extensions) {
+ var handlers = {}
+ var index = -1
+
+ while (++index < extensions.length) {
+ extension(handlers, extensions[index])
+ }
+
+ return handlers
+}
+
+function extension(handlers, extension) {
+ var hook
+ var left
+ var right
+ var type
+
+ for (hook in extension) {
+ left = own.call(handlers, hook) ? handlers[hook] : (handlers[hook] = {})
+ right = extension[hook]
+
+ for (type in right) {
+ left[type] = right[type]
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.js
new file mode 100644
index 0000000000..dac8901405
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.js
@@ -0,0 +1,440 @@
+'use strict'
+
+var assert = require('assert')
+var createDebug = require('debug')
+var assign = require('../constant/assign.js')
+var codes = require('../character/codes.js')
+var markdownLineEnding = require('../character/markdown-line-ending.js')
+var chunkedPush = require('./chunked-push.js')
+var chunkedSplice = require('./chunked-splice.js')
+var miniflat = require('./miniflat.js')
+var resolveAll = require('./resolve-all.js')
+var serializeChunks = require('./serialize-chunks.js')
+var shallow = require('./shallow.js')
+var sliceChunks = require('./slice-chunks.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+var createDebug__default = /*#__PURE__*/ _interopDefaultLegacy(createDebug)
+
+var debug = createDebug__default['default']('micromark')
+
+// Create a tokenizer.
+// Tokenizers deal with one type of data (e.g., containers, flow, text).
+// The parser is the object dealing with it all.
+// `initialize` works like other constructs, except that only its `tokenize`
+// function is used, in which case it doesn’t receive an `ok` or `nok`.
+// `from` can be given to set the point before the first character, although
+// when further lines are indented, they must be set with `defineSkip`.
+function createTokenizer(parser, initialize, from) {
+ var point = from ? shallow(from) : {line: 1, column: 1, offset: 0}
+ var columnStart = {}
+ var resolveAllConstructs = []
+ var chunks = []
+ var stack = []
+ var consumed = true
+
+ // Tools used for tokenizing.
+ var effects = {
+ consume: consume,
+ enter: enter,
+ exit: exit,
+ attempt: constructFactory(onsuccessfulconstruct),
+ check: constructFactory(onsuccessfulcheck),
+ interrupt: constructFactory(onsuccessfulcheck, {interrupt: true}),
+ lazy: constructFactory(onsuccessfulcheck, {lazy: true})
+ }
+
+ // State and tools for resolving and serializing.
+ var context = {
+ previous: codes.eof,
+ events: [],
+ parser: parser,
+ sliceStream: sliceStream,
+ sliceSerialize: sliceSerialize,
+ now: now,
+ defineSkip: skip,
+ write: write
+ }
+
+ // The state function.
+ var state = initialize.tokenize.call(context, effects)
+
+ // Track which character we expect to be consumed, to catch bugs.
+ var expectedCode
+
+ if (initialize.resolveAll) {
+ resolveAllConstructs.push(initialize)
+ }
+
+ // Store where we are in the input stream.
+ point._index = 0
+ point._bufferIndex = -1
+
+ return context
+
+ function write(slice) {
+ chunks = chunkedPush(chunks, slice)
+
+ main()
+
+ // Exit if we’re not done, resolve might change stuff.
+ if (chunks[chunks.length - 1] !== codes.eof) {
+ return []
+ }
+
+ addResult(initialize, 0)
+
+ // Otherwise, resolve, and exit.
+ context.events = resolveAll(resolveAllConstructs, context.events, context)
+
+ return context.events
+ }
+
+ //
+ // Tools.
+ //
+
+ function sliceSerialize(token) {
+ return serializeChunks(sliceStream(token))
+ }
+
+ function sliceStream(token) {
+ return sliceChunks(chunks, token)
+ }
+
+ function now() {
+ return shallow(point)
+ }
+
+ function skip(value) {
+ columnStart[value.line] = value.column
+ accountForPotentialSkip()
+ debug('position: define skip: `%j`', point)
+ }
+
+ //
+ // State management.
+ //
+
+ // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by
+ // `consume`).
+ // Here is where we walk through the chunks, which either include strings of
+ // several characters, or numerical character codes.
+ // The reason to do this in a loop instead of a call is so the stack can
+ // drain.
+ function main() {
+ var chunkIndex
+ var chunk
+
+ while (point._index < chunks.length) {
+ chunk = chunks[point._index]
+
+ // If we’re in a buffer chunk, loop through it.
+ if (typeof chunk === 'string') {
+ chunkIndex = point._index
+
+ if (point._bufferIndex < 0) {
+ point._bufferIndex = 0
+ }
+
+ while (
+ point._index === chunkIndex &&
+ point._bufferIndex < chunk.length
+ ) {
+ go(chunk.charCodeAt(point._bufferIndex))
+ }
+ } else {
+ go(chunk)
+ }
+ }
+ }
+
+ // Deal with one code.
+ function go(code) {
+ assert__default['default'].equal(
+ consumed,
+ true,
+ 'expected character to be consumed'
+ )
+ consumed = undefined
+ debug('main: passing `%s` to %s', code, state.name)
+ expectedCode = code
+ state = state(code)
+ }
+
+ // Move a character forward.
+ function consume(code) {
+ assert__default['default'].equal(
+ code,
+ expectedCode,
+ 'expected given code to equal expected code'
+ )
+
+ debug('consume: `%s`', code)
+
+ assert__default['default'].equal(
+ consumed,
+ undefined,
+ 'expected code to not have been consumed'
+ )
+ assert__default['default'](
+ code === null
+ ? !context.events.length ||
+ context.events[context.events.length - 1][0] === 'exit'
+ : context.events[context.events.length - 1][0] === 'enter',
+ 'expected last token to be open'
+ )
+
+ if (markdownLineEnding(code)) {
+ point.line++
+ point.column = 1
+ point.offset += code === codes.carriageReturnLineFeed ? 2 : 1
+ accountForPotentialSkip()
+ debug('position: after eol: `%j`', point)
+ } else if (code !== codes.virtualSpace) {
+ point.column++
+ point.offset++
+ }
+
+ // Not in a string chunk.
+ if (point._bufferIndex < 0) {
+ point._index++
+ } else {
+ point._bufferIndex++
+
+ // At end of string chunk.
+ if (point._bufferIndex === chunks[point._index].length) {
+ point._bufferIndex = -1
+ point._index++
+ }
+ }
+
+ // Expose the previous character.
+ context.previous = code
+
+ // Mark as consumed.
+ consumed = true
+ }
+
+ // Start a token.
+ function enter(type, fields) {
+ var token = fields || {}
+ token.type = type
+ token.start = now()
+
+ assert__default['default'].equal(
+ typeof type,
+ 'string',
+ 'expected string type'
+ )
+ assert__default['default'].notEqual(
+ type.length,
+ 0,
+ 'expected non-empty string'
+ )
+ debug('enter: `%s`', type)
+
+ context.events.push(['enter', token, context])
+
+ stack.push(token)
+
+ return token
+ }
+
+ // Stop a token.
+ function exit(type) {
+ assert__default['default'].equal(
+ typeof type,
+ 'string',
+ 'expected string type'
+ )
+ assert__default['default'].notEqual(
+ type.length,
+ 0,
+ 'expected non-empty string'
+ )
+ assert__default['default'].notEqual(
+ stack.length,
+ 0,
+ 'cannot close w/o open tokens'
+ )
+
+ var token = stack.pop()
+ token.end = now()
+
+ assert__default['default'].equal(
+ type,
+ token.type,
+ 'expected exit token to match current token'
+ )
+
+ assert__default['default'](
+ !(
+ token.start._index === token.end._index &&
+ token.start._bufferIndex === token.end._bufferIndex
+ ),
+ 'expected non-empty token (`' + type + '`)'
+ )
+
+ debug('exit: `%s`', token.type)
+ context.events.push(['exit', token, context])
+
+ return token
+ }
+
+ // Use results.
+ function onsuccessfulconstruct(construct, info) {
+ addResult(construct, info.from)
+ }
+
+ // Discard results.
+ function onsuccessfulcheck(construct, info) {
+ info.restore()
+ }
+
+ // Factory to attempt/check/interrupt.
+ function constructFactory(onreturn, fields) {
+ return hook
+
+ // Handle either an object mapping codes to constructs, a list of
+ // constructs, or a single construct.
+ function hook(constructs, returnState, bogusState) {
+ var listOfConstructs
+ var constructIndex
+ var currentConstruct
+ var info
+
+ return constructs.tokenize || 'length' in constructs
+ ? handleListOfConstructs(miniflat(constructs))
+ : handleMapOfConstructs
+
+ function handleMapOfConstructs(code) {
+ if (code in constructs || codes.eof in constructs) {
+ return handleListOfConstructs(
+ constructs.null
+ ? /* c8 ignore next */
+ miniflat(constructs[code]).concat(miniflat(constructs.null))
+ : constructs[code]
+ )(code)
+ }
+
+ return bogusState(code)
+ }
+
+ function handleListOfConstructs(list) {
+ listOfConstructs = list
+ constructIndex = 0
+ return handleConstruct(list[constructIndex])
+ }
+
+ function handleConstruct(construct) {
+ return start
+
+ function start(code) {
+ // To do: not nede to store if there is no bogus state, probably?
+ // Currently doesn’t work because `inspect` in document does a check
+ // w/o a bogus, which doesn’t make sense. But it does seem to help perf
+ // by not storing.
+ info = store()
+ currentConstruct = construct
+
+ if (!construct.partial) {
+ context.currentConstruct = construct
+ }
+
+ if (
+ construct.name &&
+ context.parser.constructs.disable.null.indexOf(construct.name) > -1
+ ) {
+ return nok(code)
+ }
+
+ return construct.tokenize.call(
+ fields ? assign({}, context, fields) : context,
+ effects,
+ ok,
+ nok
+ )(code)
+ }
+ }
+
+ function ok(code) {
+ assert__default['default'].equal(code, expectedCode, 'expected code')
+ consumed = true
+ onreturn(currentConstruct, info)
+ return returnState
+ }
+
+ function nok(code) {
+ assert__default['default'].equal(code, expectedCode, 'expected code')
+ consumed = true
+ info.restore()
+
+ if (++constructIndex < listOfConstructs.length) {
+ return handleConstruct(listOfConstructs[constructIndex])
+ }
+
+ return bogusState
+ }
+ }
+ }
+
+ function addResult(construct, from) {
+ if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {
+ resolveAllConstructs.push(construct)
+ }
+
+ if (construct.resolve) {
+ chunkedSplice(
+ context.events,
+ from,
+ context.events.length - from,
+ construct.resolve(context.events.slice(from), context)
+ )
+ }
+
+ if (construct.resolveTo) {
+ context.events = construct.resolveTo(context.events, context)
+ }
+
+ assert__default['default'](
+ construct.partial ||
+ !context.events.length ||
+ context.events[context.events.length - 1][0] === 'exit',
+ 'expected last token to end'
+ )
+ }
+
+ function store() {
+ var startPoint = now()
+ var startPrevious = context.previous
+ var startCurrentConstruct = context.currentConstruct
+ var startEventsIndex = context.events.length
+ var startStack = Array.from(stack)
+
+ return {restore: restore, from: startEventsIndex}
+
+ function restore() {
+ point = startPoint
+ context.previous = startPrevious
+ context.currentConstruct = startCurrentConstruct
+ context.events.length = startEventsIndex
+ stack = startStack
+ accountForPotentialSkip()
+ debug('position: restore: `%j`', point)
+ }
+ }
+
+ function accountForPotentialSkip() {
+ if (point.line in columnStart && point.column < 2) {
+ point.column = columnStart[point.line]
+ point.offset += columnStart[point.line] - 1
+ }
+ }
+}
+
+module.exports = createTokenizer
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.mjs
new file mode 100644
index 0000000000..6e8808ea76
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/create-tokenizer.mjs
@@ -0,0 +1,399 @@
+export default createTokenizer
+
+import assert from 'assert'
+import createDebug from 'debug'
+import assign from '../constant/assign.mjs'
+import codes from '../character/codes.mjs'
+import markdownLineEnding from '../character/markdown-line-ending.mjs'
+import chunkedPush from './chunked-push.mjs'
+import chunkedSplice from './chunked-splice.mjs'
+import miniflat from './miniflat.mjs'
+import resolveAll from './resolve-all.mjs'
+import serializeChunks from './serialize-chunks.mjs'
+import shallow from './shallow.mjs'
+import sliceChunks from './slice-chunks.mjs'
+
+var debug = createDebug('micromark')
+
+// Create a tokenizer.
+// Tokenizers deal with one type of data (e.g., containers, flow, text).
+// The parser is the object dealing with it all.
+// `initialize` works like other constructs, except that only its `tokenize`
+// function is used, in which case it doesn’t receive an `ok` or `nok`.
+// `from` can be given to set the point before the first character, although
+// when further lines are indented, they must be set with `defineSkip`.
+function createTokenizer(parser, initialize, from) {
+ var point = from ? shallow(from) : {line: 1, column: 1, offset: 0}
+ var columnStart = {}
+ var resolveAllConstructs = []
+ var chunks = []
+ var stack = []
+ var consumed = true
+
+ // Tools used for tokenizing.
+ var effects = {
+ consume: consume,
+ enter: enter,
+ exit: exit,
+ attempt: constructFactory(onsuccessfulconstruct),
+ check: constructFactory(onsuccessfulcheck),
+ interrupt: constructFactory(onsuccessfulcheck, {interrupt: true}),
+ lazy: constructFactory(onsuccessfulcheck, {lazy: true})
+ }
+
+ // State and tools for resolving and serializing.
+ var context = {
+ previous: codes.eof,
+ events: [],
+ parser: parser,
+ sliceStream: sliceStream,
+ sliceSerialize: sliceSerialize,
+ now: now,
+ defineSkip: skip,
+ write: write
+ }
+
+ // The state function.
+ var state = initialize.tokenize.call(context, effects)
+
+ // Track which character we expect to be consumed, to catch bugs.
+ var expectedCode
+
+ if (initialize.resolveAll) {
+ resolveAllConstructs.push(initialize)
+ }
+
+ // Store where we are in the input stream.
+ point._index = 0
+ point._bufferIndex = -1
+
+ return context
+
+ function write(slice) {
+ chunks = chunkedPush(chunks, slice)
+
+ main()
+
+ // Exit if we’re not done, resolve might change stuff.
+ if (chunks[chunks.length - 1] !== codes.eof) {
+ return []
+ }
+
+ addResult(initialize, 0)
+
+ // Otherwise, resolve, and exit.
+ context.events = resolveAll(resolveAllConstructs, context.events, context)
+
+ return context.events
+ }
+
+ //
+ // Tools.
+ //
+
+ function sliceSerialize(token) {
+ return serializeChunks(sliceStream(token))
+ }
+
+ function sliceStream(token) {
+ return sliceChunks(chunks, token)
+ }
+
+ function now() {
+ return shallow(point)
+ }
+
+ function skip(value) {
+ columnStart[value.line] = value.column
+ accountForPotentialSkip()
+ debug('position: define skip: `%j`', point)
+ }
+
+ //
+ // State management.
+ //
+
+ // Main loop (note that `_index` and `_bufferIndex` in `point` are modified by
+ // `consume`).
+ // Here is where we walk through the chunks, which either include strings of
+ // several characters, or numerical character codes.
+ // The reason to do this in a loop instead of a call is so the stack can
+ // drain.
+ function main() {
+ var chunkIndex
+ var chunk
+
+ while (point._index < chunks.length) {
+ chunk = chunks[point._index]
+
+ // If we’re in a buffer chunk, loop through it.
+ if (typeof chunk === 'string') {
+ chunkIndex = point._index
+
+ if (point._bufferIndex < 0) {
+ point._bufferIndex = 0
+ }
+
+ while (
+ point._index === chunkIndex &&
+ point._bufferIndex < chunk.length
+ ) {
+ go(chunk.charCodeAt(point._bufferIndex))
+ }
+ } else {
+ go(chunk)
+ }
+ }
+ }
+
+ // Deal with one code.
+ function go(code) {
+ assert.equal(consumed, true, 'expected character to be consumed')
+ consumed = undefined
+ debug('main: passing `%s` to %s', code, state.name)
+ expectedCode = code
+ state = state(code)
+ }
+
+ // Move a character forward.
+ function consume(code) {
+ assert.equal(
+ code,
+ expectedCode,
+ 'expected given code to equal expected code'
+ )
+
+ debug('consume: `%s`', code)
+
+ assert.equal(consumed, undefined, 'expected code to not have been consumed')
+ assert(
+ code === null
+ ? !context.events.length ||
+ context.events[context.events.length - 1][0] === 'exit'
+ : context.events[context.events.length - 1][0] === 'enter',
+ 'expected last token to be open'
+ )
+
+ if (markdownLineEnding(code)) {
+ point.line++
+ point.column = 1
+ point.offset += code === codes.carriageReturnLineFeed ? 2 : 1
+ accountForPotentialSkip()
+ debug('position: after eol: `%j`', point)
+ } else if (code !== codes.virtualSpace) {
+ point.column++
+ point.offset++
+ }
+
+ // Not in a string chunk.
+ if (point._bufferIndex < 0) {
+ point._index++
+ } else {
+ point._bufferIndex++
+
+ // At end of string chunk.
+ if (point._bufferIndex === chunks[point._index].length) {
+ point._bufferIndex = -1
+ point._index++
+ }
+ }
+
+ // Expose the previous character.
+ context.previous = code
+
+ // Mark as consumed.
+ consumed = true
+ }
+
+ // Start a token.
+ function enter(type, fields) {
+ var token = fields || {}
+ token.type = type
+ token.start = now()
+
+ assert.equal(typeof type, 'string', 'expected string type')
+ assert.notEqual(type.length, 0, 'expected non-empty string')
+ debug('enter: `%s`', type)
+
+ context.events.push(['enter', token, context])
+
+ stack.push(token)
+
+ return token
+ }
+
+ // Stop a token.
+ function exit(type) {
+ assert.equal(typeof type, 'string', 'expected string type')
+ assert.notEqual(type.length, 0, 'expected non-empty string')
+ assert.notEqual(stack.length, 0, 'cannot close w/o open tokens')
+
+ var token = stack.pop()
+ token.end = now()
+
+ assert.equal(type, token.type, 'expected exit token to match current token')
+
+ assert(
+ !(
+ token.start._index === token.end._index &&
+ token.start._bufferIndex === token.end._bufferIndex
+ ),
+ 'expected non-empty token (`' + type + '`)'
+ )
+
+ debug('exit: `%s`', token.type)
+ context.events.push(['exit', token, context])
+
+ return token
+ }
+
+ // Use results.
+ function onsuccessfulconstruct(construct, info) {
+ addResult(construct, info.from)
+ }
+
+ // Discard results.
+ function onsuccessfulcheck(construct, info) {
+ info.restore()
+ }
+
+ // Factory to attempt/check/interrupt.
+ function constructFactory(onreturn, fields) {
+ return hook
+
+ // Handle either an object mapping codes to constructs, a list of
+ // constructs, or a single construct.
+ function hook(constructs, returnState, bogusState) {
+ var listOfConstructs
+ var constructIndex
+ var currentConstruct
+ var info
+
+ return constructs.tokenize || 'length' in constructs
+ ? handleListOfConstructs(miniflat(constructs))
+ : handleMapOfConstructs
+
+ function handleMapOfConstructs(code) {
+ if (code in constructs || codes.eof in constructs) {
+ return handleListOfConstructs(
+ constructs.null
+ ? /* c8 ignore next */
+ miniflat(constructs[code]).concat(miniflat(constructs.null))
+ : constructs[code]
+ )(code)
+ }
+
+ return bogusState(code)
+ }
+
+ function handleListOfConstructs(list) {
+ listOfConstructs = list
+ constructIndex = 0
+ return handleConstruct(list[constructIndex])
+ }
+
+ function handleConstruct(construct) {
+ return start
+
+ function start(code) {
+ // To do: not nede to store if there is no bogus state, probably?
+ // Currently doesn’t work because `inspect` in document does a check
+ // w/o a bogus, which doesn’t make sense. But it does seem to help perf
+ // by not storing.
+ info = store()
+ currentConstruct = construct
+
+ if (!construct.partial) {
+ context.currentConstruct = construct
+ }
+
+ if (
+ construct.name &&
+ context.parser.constructs.disable.null.indexOf(construct.name) > -1
+ ) {
+ return nok(code)
+ }
+
+ return construct.tokenize.call(
+ fields ? assign({}, context, fields) : context,
+ effects,
+ ok,
+ nok
+ )(code)
+ }
+ }
+
+ function ok(code) {
+ assert.equal(code, expectedCode, 'expected code')
+ consumed = true
+ onreturn(currentConstruct, info)
+ return returnState
+ }
+
+ function nok(code) {
+ assert.equal(code, expectedCode, 'expected code')
+ consumed = true
+ info.restore()
+
+ if (++constructIndex < listOfConstructs.length) {
+ return handleConstruct(listOfConstructs[constructIndex])
+ }
+
+ return bogusState
+ }
+ }
+ }
+
+ function addResult(construct, from) {
+ if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {
+ resolveAllConstructs.push(construct)
+ }
+
+ if (construct.resolve) {
+ chunkedSplice(
+ context.events,
+ from,
+ context.events.length - from,
+ construct.resolve(context.events.slice(from), context)
+ )
+ }
+
+ if (construct.resolveTo) {
+ context.events = construct.resolveTo(context.events, context)
+ }
+
+ assert(
+ construct.partial ||
+ !context.events.length ||
+ context.events[context.events.length - 1][0] === 'exit',
+ 'expected last token to end'
+ )
+ }
+
+ function store() {
+ var startPoint = now()
+ var startPrevious = context.previous
+ var startCurrentConstruct = context.currentConstruct
+ var startEventsIndex = context.events.length
+ var startStack = Array.from(stack)
+
+ return {restore: restore, from: startEventsIndex}
+
+ function restore() {
+ point = startPoint
+ context.previous = startPrevious
+ context.currentConstruct = startCurrentConstruct
+ context.events.length = startEventsIndex
+ stack = startStack
+ accountForPotentialSkip()
+ debug('position: restore: `%j`', point)
+ }
+ }
+
+ function accountForPotentialSkip() {
+ if (point.line in columnStart && point.column < 2) {
+ point.column = columnStart[point.line]
+ point.offset += columnStart[point.line] - 1
+ }
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.js
new file mode 100644
index 0000000000..39c5dd4f64
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.js
@@ -0,0 +1,11 @@
+'use strict'
+
+function miniflat(value) {
+ return value === null || value === undefined
+ ? []
+ : 'length' in value
+ ? value
+ : [value]
+}
+
+module.exports = miniflat
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.mjs
new file mode 100644
index 0000000000..7fad196c63
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/miniflat.mjs
@@ -0,0 +1,9 @@
+export default miniflat
+
+function miniflat(value) {
+ return value === null || value === undefined
+ ? []
+ : 'length' in value
+ ? value
+ : [value]
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.js
new file mode 100644
index 0000000000..830807fbba
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.js
@@ -0,0 +1,12 @@
+'use strict'
+
+// Note! `move` only works inside lines! It’s not possible to move past other
+// chunks (replacement characters, tabs, or line endings).
+function movePoint(point, offset) {
+ point.column += offset
+ point.offset += offset
+ point._bufferIndex += offset
+ return point
+}
+
+module.exports = movePoint
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.mjs
new file mode 100644
index 0000000000..8192df49aa
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/move-point.mjs
@@ -0,0 +1,10 @@
+export default movePoint
+
+// Note! `move` only works inside lines! It’s not possible to move past other
+// chunks (replacement characters, tabs, or line endings).
+function movePoint(point, offset) {
+ point.column += offset
+ point.offset += offset
+ point._bufferIndex += offset
+ return point
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.js
new file mode 100644
index 0000000000..0d9d7c0e18
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.js
@@ -0,0 +1,23 @@
+'use strict'
+
+var values = require('../character/values.js')
+
+function normalizeIdentifier(value) {
+ return (
+ value
+ // Collapse Markdown whitespace.
+ .replace(/[\t\n\r ]+/g, values.space)
+ // Trim.
+ .replace(/^ | $/g, '')
+ // Some characters are considered “uppercase”, but if their lowercase
+ // counterpart is uppercased will result in a different uppercase
+ // character.
+ // Hence, to get that form, we perform both lower- and uppercase.
+ // Upper case makes sure keys will not interact with default prototypal
+ // methods: no object method is uppercase.
+ .toLowerCase()
+ .toUpperCase()
+ )
+}
+
+module.exports = normalizeIdentifier
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.mjs
new file mode 100644
index 0000000000..2a383ae115
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-identifier.mjs
@@ -0,0 +1,21 @@
+export default normalizeIdentifier
+
+import values from '../character/values.mjs'
+
+function normalizeIdentifier(value) {
+ return (
+ value
+ // Collapse Markdown whitespace.
+ .replace(/[\t\n\r ]+/g, values.space)
+ // Trim.
+ .replace(/^ | $/g, '')
+ // Some characters are considered “uppercase”, but if their lowercase
+ // counterpart is uppercased will result in a different uppercase
+ // character.
+ // Hence, to get that form, we perform both lower- and uppercase.
+ // Upper case makes sure keys will not interact with default prototypal
+ // methods: no object method is uppercase.
+ .toLowerCase()
+ .toUpperCase()
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.js
new file mode 100644
index 0000000000..e4a07c1df6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.js
@@ -0,0 +1,70 @@
+'use strict'
+
+var asciiAlphanumeric = require('../character/ascii-alphanumeric.js')
+var codes = require('../character/codes.js')
+var values = require('../character/values.js')
+var fromCharCode = require('../constant/from-char-code.js')
+
+// Encode unsafe characters with percent-encoding, skipping already
+// encoded sequences.
+function normalizeUri(value) {
+ var index = -1
+ var result = []
+ var start = 0
+ var skip = 0
+ var code
+ var next
+ var replace
+
+ while (++index < value.length) {
+ code = value.charCodeAt(index)
+
+ // A correct percent encoded value.
+ if (
+ code === codes.percentSign &&
+ asciiAlphanumeric(value.charCodeAt(index + 1)) &&
+ asciiAlphanumeric(value.charCodeAt(index + 2))
+ ) {
+ skip = 2
+ }
+ // ASCII.
+ else if (code < 128) {
+ if (!/[!#$&-;=?-Z_a-z~]/.test(fromCharCode(code))) {
+ replace = fromCharCode(code)
+ }
+ }
+ // Astral.
+ else if (code > 55295 && code < 57344) {
+ next = value.charCodeAt(index + 1)
+
+ // A correct surrogate pair.
+ if (code < 56320 && next > 56319 && next < 57344) {
+ replace = fromCharCode(code, next)
+ skip = 1
+ }
+ // Lone surrogate.
+ else {
+ replace = values.replacementCharacter
+ }
+ }
+ // Unicode.
+ else {
+ replace = fromCharCode(code)
+ }
+
+ if (replace) {
+ result.push(value.slice(start, index), encodeURIComponent(replace))
+ start = index + skip + 1
+ replace = undefined
+ }
+
+ if (skip) {
+ index += skip
+ skip = 0
+ }
+ }
+
+ return result.join('') + value.slice(start)
+}
+
+module.exports = normalizeUri
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.mjs
new file mode 100644
index 0000000000..3102243354
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/normalize-uri.mjs
@@ -0,0 +1,68 @@
+export default normalizeUri
+
+import asciiAlphanumeric from '../character/ascii-alphanumeric.mjs'
+import codes from '../character/codes.mjs'
+import values from '../character/values.mjs'
+import fromCharCode from '../constant/from-char-code.mjs'
+
+// Encode unsafe characters with percent-encoding, skipping already
+// encoded sequences.
+function normalizeUri(value) {
+ var index = -1
+ var result = []
+ var start = 0
+ var skip = 0
+ var code
+ var next
+ var replace
+
+ while (++index < value.length) {
+ code = value.charCodeAt(index)
+
+ // A correct percent encoded value.
+ if (
+ code === codes.percentSign &&
+ asciiAlphanumeric(value.charCodeAt(index + 1)) &&
+ asciiAlphanumeric(value.charCodeAt(index + 2))
+ ) {
+ skip = 2
+ }
+ // ASCII.
+ else if (code < 128) {
+ if (!/[!#$&-;=?-Z_a-z~]/.test(fromCharCode(code))) {
+ replace = fromCharCode(code)
+ }
+ }
+ // Astral.
+ else if (code > 55295 && code < 57344) {
+ next = value.charCodeAt(index + 1)
+
+ // A correct surrogate pair.
+ if (code < 56320 && next > 56319 && next < 57344) {
+ replace = fromCharCode(code, next)
+ skip = 1
+ }
+ // Lone surrogate.
+ else {
+ replace = values.replacementCharacter
+ }
+ }
+ // Unicode.
+ else {
+ replace = fromCharCode(code)
+ }
+
+ if (replace) {
+ result.push(value.slice(start, index), encodeURIComponent(replace))
+ start = index + skip + 1
+ replace = undefined
+ }
+
+ if (skip) {
+ index += skip
+ skip = 0
+ }
+ }
+
+ return result.join('') + value.slice(start)
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.js
new file mode 100644
index 0000000000..a560e3e83a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.js
@@ -0,0 +1,11 @@
+'use strict'
+
+var sizeChunks = require('./size-chunks.js')
+
+function prefixSize(events, type) {
+ var tail = events[events.length - 1]
+ if (!tail || tail[1].type !== type) return 0
+ return sizeChunks(tail[2].sliceStream(tail[1]))
+}
+
+module.exports = prefixSize
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.mjs
new file mode 100644
index 0000000000..473e18a29c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/prefix-size.mjs
@@ -0,0 +1,9 @@
+export default prefixSize
+
+import sizeChunks from './size-chunks.mjs'
+
+function prefixSize(events, type) {
+ var tail = events[events.length - 1]
+ if (!tail || tail[1].type !== type) return 0
+ return sizeChunks(tail[2].sliceStream(tail[1]))
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.js
new file mode 100644
index 0000000000..895772e67d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.js
@@ -0,0 +1,12 @@
+'use strict'
+
+var fromCharCode = require('../constant/from-char-code.js')
+
+function regexCheck(regex) {
+ return check
+ function check(code) {
+ return regex.test(fromCharCode(code))
+ }
+}
+
+module.exports = regexCheck
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.mjs
new file mode 100644
index 0000000000..f4bc0fd61a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/regex-check.mjs
@@ -0,0 +1,10 @@
+export default regexCheck
+
+import fromCharCode from '../constant/from-char-code.mjs'
+
+function regexCheck(regex) {
+ return check
+ function check(code) {
+ return regex.test(fromCharCode(code))
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.js
new file mode 100644
index 0000000000..3e8d76b4a4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.js
@@ -0,0 +1,20 @@
+'use strict'
+
+function resolveAll(constructs, events, context) {
+ var called = []
+ var index = -1
+ var resolve
+
+ while (++index < constructs.length) {
+ resolve = constructs[index].resolveAll
+
+ if (resolve && called.indexOf(resolve) < 0) {
+ events = resolve(events, context)
+ called.push(resolve)
+ }
+ }
+
+ return events
+}
+
+module.exports = resolveAll
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.mjs
new file mode 100644
index 0000000000..1a70eebe9b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/resolve-all.mjs
@@ -0,0 +1,18 @@
+export default resolveAll
+
+function resolveAll(constructs, events, context) {
+ var called = []
+ var index = -1
+ var resolve
+
+ while (++index < constructs.length) {
+ resolve = constructs[index].resolveAll
+
+ if (resolve && called.indexOf(resolve) < 0) {
+ events = resolve(events, context)
+ called.push(resolve)
+ }
+ }
+
+ return events
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.js
new file mode 100644
index 0000000000..e5e642892a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.js
@@ -0,0 +1,32 @@
+'use strict'
+
+var codes = require('../character/codes.js')
+var values = require('../character/values.js')
+var fromCharCode = require('../constant/from-char-code.js')
+
+function safeFromInt(value, base) {
+ var code = parseInt(value, base)
+
+ if (
+ // C0 except for HT, LF, FF, CR, space
+ code < codes.ht ||
+ code === codes.vt ||
+ (code > codes.cr && code < codes.space) ||
+ // Control character (DEL) of the basic block and C1 controls.
+ (code > codes.tilde && code < 160) ||
+ // Lone high surrogates and low surrogates.
+ (code > 55295 && code < 57344) ||
+ // Noncharacters.
+ (code > 64975 && code < 65008) ||
+ (code & 65535) === 65535 ||
+ (code & 65535) === 65534 ||
+ // Out of range
+ code > 1114111
+ ) {
+ return values.replacementCharacter
+ }
+
+ return fromCharCode(code)
+}
+
+module.exports = safeFromInt
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.mjs
new file mode 100644
index 0000000000..e218d47156
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/safe-from-int.mjs
@@ -0,0 +1,30 @@
+export default safeFromInt
+
+import codes from '../character/codes.mjs'
+import values from '../character/values.mjs'
+import fromCharCode from '../constant/from-char-code.mjs'
+
+function safeFromInt(value, base) {
+ var code = parseInt(value, base)
+
+ if (
+ // C0 except for HT, LF, FF, CR, space
+ code < codes.ht ||
+ code === codes.vt ||
+ (code > codes.cr && code < codes.space) ||
+ // Control character (DEL) of the basic block and C1 controls.
+ (code > codes.tilde && code < 160) ||
+ // Lone high surrogates and low surrogates.
+ (code > 55295 && code < 57344) ||
+ // Noncharacters.
+ (code > 64975 && code < 65008) ||
+ (code & 65535) === 65535 ||
+ (code & 65535) === 65534 ||
+ // Out of range
+ code > 1114111
+ ) {
+ return values.replacementCharacter
+ }
+
+ return fromCharCode(code)
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.js
new file mode 100644
index 0000000000..4d01d91556
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.js
@@ -0,0 +1,54 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var values = require('../character/values.js')
+var fromCharCode = require('../constant/from-char-code.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+function serializeChunks(chunks) {
+ var index = -1
+ var result = []
+ var chunk
+ var value
+ var atTab
+
+ while (++index < chunks.length) {
+ chunk = chunks[index]
+
+ if (typeof chunk === 'string') {
+ value = chunk
+ } else if (chunk === codes.carriageReturn) {
+ value = values.cr
+ } else if (chunk === codes.lineFeed) {
+ value = values.lf
+ } else if (chunk === codes.carriageReturnLineFeed) {
+ value = values.cr + values.lf
+ } else if (chunk === codes.horizontalTab) {
+ value = values.ht
+ } else if (chunk === codes.virtualSpace) {
+ if (atTab) continue
+ value = values.space
+ } else {
+ assert__default['default'].equal(
+ typeof chunk,
+ 'number',
+ 'expected number'
+ )
+ // Currently only replacement character.
+ value = fromCharCode(chunk)
+ }
+
+ atTab = chunk === codes.horizontalTab
+ result.push(value)
+ }
+
+ return result.join('')
+}
+
+module.exports = serializeChunks
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.mjs
new file mode 100644
index 0000000000..42ab3a9a6b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/serialize-chunks.mjs
@@ -0,0 +1,42 @@
+export default serializeChunks
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import values from '../character/values.mjs'
+import fromCharCode from '../constant/from-char-code.mjs'
+
+function serializeChunks(chunks) {
+ var index = -1
+ var result = []
+ var chunk
+ var value
+ var atTab
+
+ while (++index < chunks.length) {
+ chunk = chunks[index]
+
+ if (typeof chunk === 'string') {
+ value = chunk
+ } else if (chunk === codes.carriageReturn) {
+ value = values.cr
+ } else if (chunk === codes.lineFeed) {
+ value = values.lf
+ } else if (chunk === codes.carriageReturnLineFeed) {
+ value = values.cr + values.lf
+ } else if (chunk === codes.horizontalTab) {
+ value = values.ht
+ } else if (chunk === codes.virtualSpace) {
+ if (atTab) continue
+ value = values.space
+ } else {
+ assert.equal(typeof chunk, 'number', 'expected number')
+ // Currently only replacement character.
+ value = fromCharCode(chunk)
+ }
+
+ atTab = chunk === codes.horizontalTab
+ result.push(value)
+ }
+
+ return result.join('')
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.js
new file mode 100644
index 0000000000..f980ab99e4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.js
@@ -0,0 +1,9 @@
+'use strict'
+
+var assign = require('../constant/assign.js')
+
+function shallow(object) {
+ return assign({}, object)
+}
+
+module.exports = shallow
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.mjs
new file mode 100644
index 0000000000..e121ccaa4a
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/shallow.mjs
@@ -0,0 +1,7 @@
+export default shallow
+
+import assign from '../constant/assign.mjs'
+
+function shallow(object) {
+ return assign({}, object)
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.js
new file mode 100644
index 0000000000..6b2f5ec792
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.js
@@ -0,0 +1,16 @@
+'use strict'
+
+// Measure the number of character codes in chunks.
+// Counts tabs based on their expanded size, and CR+LF as one character.
+function sizeChunks(chunks) {
+ var index = -1
+ var size = 0
+
+ while (++index < chunks.length) {
+ size += typeof chunks[index] === 'string' ? chunks[index].length : 1
+ }
+
+ return size
+}
+
+module.exports = sizeChunks
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.mjs
new file mode 100644
index 0000000000..d3305bbb61
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/size-chunks.mjs
@@ -0,0 +1,14 @@
+export default sizeChunks
+
+// Measure the number of character codes in chunks.
+// Counts tabs based on their expanded size, and CR+LF as one character.
+function sizeChunks(chunks) {
+ var index = -1
+ var size = 0
+
+ while (++index < chunks.length) {
+ size += typeof chunks[index] === 'string' ? chunks[index].length : 1
+ }
+
+ return size
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.js
new file mode 100644
index 0000000000..b52c8dcc9e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.js
@@ -0,0 +1,43 @@
+'use strict'
+
+var assert = require('assert')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+function sliceChunks(chunks, token) {
+ var startIndex = token.start._index
+ var startBufferIndex = token.start._bufferIndex
+ var endIndex = token.end._index
+ var endBufferIndex = token.end._bufferIndex
+ var view
+
+ if (startIndex === endIndex) {
+ assert__default['default'](
+ endBufferIndex > -1,
+ 'expected non-negative end buffer index'
+ )
+ assert__default['default'](
+ startBufferIndex > -1,
+ 'expected non-negative start buffer index'
+ )
+ view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]
+ } else {
+ view = chunks.slice(startIndex, endIndex)
+
+ if (startBufferIndex > -1) {
+ view[0] = view[0].slice(startBufferIndex)
+ }
+
+ if (endBufferIndex > 0) {
+ view.push(chunks[endIndex].slice(0, endBufferIndex))
+ }
+ }
+
+ return view
+}
+
+module.exports = sliceChunks
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.mjs
new file mode 100644
index 0000000000..987bbe1db5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/slice-chunks.mjs
@@ -0,0 +1,29 @@
+export default sliceChunks
+
+import assert from 'assert'
+
+function sliceChunks(chunks, token) {
+ var startIndex = token.start._index
+ var startBufferIndex = token.start._bufferIndex
+ var endIndex = token.end._index
+ var endBufferIndex = token.end._bufferIndex
+ var view
+
+ if (startIndex === endIndex) {
+ assert(endBufferIndex > -1, 'expected non-negative end buffer index')
+ assert(startBufferIndex > -1, 'expected non-negative start buffer index')
+ view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]
+ } else {
+ view = chunks.slice(startIndex, endIndex)
+
+ if (startBufferIndex > -1) {
+ view[0] = view[0].slice(startBufferIndex)
+ }
+
+ if (endBufferIndex > 0) {
+ view.push(chunks[endIndex].slice(0, endBufferIndex))
+ }
+ }
+
+ return view
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.js b/tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.js
new file mode 100644
index 0000000000..9e7648c00f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.js
@@ -0,0 +1,219 @@
+'use strict'
+
+var assert = require('assert')
+var codes = require('../character/codes.js')
+var assign = require('../constant/assign.js')
+var types = require('../constant/types.js')
+var chunkedSplice = require('./chunked-splice.js')
+var shallow = require('./shallow.js')
+
+function _interopDefaultLegacy(e) {
+ return e && typeof e === 'object' && 'default' in e ? e : {default: e}
+}
+
+var assert__default = /*#__PURE__*/ _interopDefaultLegacy(assert)
+
+function subtokenize(events) {
+ var jumps = {}
+ var index = -1
+ var event
+ var lineIndex
+ var otherIndex
+ var otherEvent
+ var parameters
+ var subevents
+ var more
+
+ while (++index < events.length) {
+ while (index in jumps) {
+ index = jumps[index]
+ }
+
+ event = events[index]
+
+ // Add a hook for the GFM tasklist extension, which needs to know if text
+ // is in the first content of a list item.
+ if (
+ index &&
+ event[1].type === types.chunkFlow &&
+ events[index - 1][1].type === types.listItemPrefix
+ ) {
+ subevents = event[1]._tokenizer.events
+ otherIndex = 0
+
+ if (
+ otherIndex < subevents.length &&
+ subevents[otherIndex][1].type === types.lineEndingBlank
+ ) {
+ otherIndex += 2
+ }
+
+ if (
+ otherIndex < subevents.length &&
+ subevents[otherIndex][1].type === types.content
+ ) {
+ while (++otherIndex < subevents.length) {
+ if (subevents[otherIndex][1].type === types.content) {
+ break
+ }
+
+ if (subevents[otherIndex][1].type === types.chunkText) {
+ subevents[otherIndex][1].isInFirstContentOfListItem = true
+ otherIndex++
+ }
+ }
+ }
+ }
+
+ // Enter.
+ if (event[0] === 'enter') {
+ if (event[1].contentType) {
+ assign(jumps, subcontent(events, index))
+ index = jumps[index]
+ more = true
+ }
+ }
+ // Exit.
+ else if (event[1]._container || event[1]._movePreviousLineEndings) {
+ otherIndex = index
+ lineIndex = undefined
+
+ while (otherIndex--) {
+ otherEvent = events[otherIndex]
+
+ if (
+ otherEvent[1].type === types.lineEnding ||
+ otherEvent[1].type === types.lineEndingBlank
+ ) {
+ if (otherEvent[0] === 'enter') {
+ if (lineIndex) {
+ events[lineIndex][1].type = types.lineEndingBlank
+ }
+
+ otherEvent[1].type = types.lineEnding
+ lineIndex = otherIndex
+ }
+ } else {
+ break
+ }
+ }
+
+ if (lineIndex) {
+ // Fix position.
+ event[1].end = shallow(events[lineIndex][1].start)
+
+ // Switch container exit w/ line endings.
+ parameters = events.slice(lineIndex, index)
+ parameters.unshift(event)
+ chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)
+ }
+ }
+ }
+
+ return !more
+}
+
+function subcontent(events, eventIndex) {
+ var token = events[eventIndex][1]
+ var context = events[eventIndex][2]
+ var startPosition = eventIndex - 1
+ var startPositions = []
+ var tokenizer =
+ token._tokenizer || context.parser[token.contentType](token.start)
+ var childEvents = tokenizer.events
+ var jumps = []
+ var gaps = {}
+ var stream
+ var previous
+ var index
+ var entered
+ var end
+ var adjust
+
+ // Loop forward through the linked tokens to pass them in order to the
+ // subtokenizer.
+ while (token) {
+ // Find the position of the event for this token.
+ while (events[++startPosition][1] !== token) {
+ // Empty.
+ }
+
+ startPositions.push(startPosition)
+
+ if (!token._tokenizer) {
+ stream = context.sliceStream(token)
+
+ if (!token.next) {
+ stream.push(codes.eof)
+ }
+
+ if (previous) {
+ tokenizer.defineSkip(token.start)
+ }
+
+ if (token.isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = true
+ }
+
+ tokenizer.write(stream)
+
+ if (token.isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = undefined
+ }
+ }
+
+ // Unravel the next token.
+ previous = token
+ token = token.next
+ }
+
+ // Now, loop back through all events (and linked tokens), to figure out which
+ // parts belong where.
+ token = previous
+ index = childEvents.length
+
+ while (index--) {
+ // Make sure we’ve at least seen something (final eol is part of the last
+ // token).
+ if (childEvents[index][0] === 'enter') {
+ entered = true
+ } else if (
+ // Find a void token that includes a break.
+ entered &&
+ childEvents[index][1].type === childEvents[index - 1][1].type &&
+ childEvents[index][1].start.line !== childEvents[index][1].end.line
+ ) {
+ add(childEvents.slice(index + 1, end))
+ assert__default['default'](token.previous, 'expected a previous token')
+ // Help GC.
+ token._tokenizer = token.next = undefined
+ token = token.previous
+ end = index + 1
+ }
+ }
+
+ assert__default['default'](!token.previous, 'expected no previous token')
+ // Help GC.
+ tokenizer.events = token._tokenizer = token.next = undefined
+
+ // Do head:
+ add(childEvents.slice(0, end))
+
+ index = -1
+ adjust = 0
+
+ while (++index < jumps.length) {
+ gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]
+ adjust += jumps[index][1] - jumps[index][0] - 1
+ }
+
+ return gaps
+
+ function add(slice) {
+ var start = startPositions.pop()
+ jumps.unshift([start, start + slice.length - 1])
+ chunkedSplice(events, start, 2, slice)
+ }
+}
+
+module.exports = subtokenize
diff --git a/tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.mjs b/tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.mjs
new file mode 100644
index 0000000000..7844130de4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/lib/util/subtokenize.mjs
@@ -0,0 +1,211 @@
+export default subtokenize
+
+import assert from 'assert'
+import codes from '../character/codes.mjs'
+import assign from '../constant/assign.mjs'
+import types from '../constant/types.mjs'
+import chunkedSplice from './chunked-splice.mjs'
+import shallow from './shallow.mjs'
+
+function subtokenize(events) {
+ var jumps = {}
+ var index = -1
+ var event
+ var lineIndex
+ var otherIndex
+ var otherEvent
+ var parameters
+ var subevents
+ var more
+
+ while (++index < events.length) {
+ while (index in jumps) {
+ index = jumps[index]
+ }
+
+ event = events[index]
+
+ // Add a hook for the GFM tasklist extension, which needs to know if text
+ // is in the first content of a list item.
+ if (
+ index &&
+ event[1].type === types.chunkFlow &&
+ events[index - 1][1].type === types.listItemPrefix
+ ) {
+ subevents = event[1]._tokenizer.events
+ otherIndex = 0
+
+ if (
+ otherIndex < subevents.length &&
+ subevents[otherIndex][1].type === types.lineEndingBlank
+ ) {
+ otherIndex += 2
+ }
+
+ if (
+ otherIndex < subevents.length &&
+ subevents[otherIndex][1].type === types.content
+ ) {
+ while (++otherIndex < subevents.length) {
+ if (subevents[otherIndex][1].type === types.content) {
+ break
+ }
+
+ if (subevents[otherIndex][1].type === types.chunkText) {
+ subevents[otherIndex][1].isInFirstContentOfListItem = true
+ otherIndex++
+ }
+ }
+ }
+ }
+
+ // Enter.
+ if (event[0] === 'enter') {
+ if (event[1].contentType) {
+ assign(jumps, subcontent(events, index))
+ index = jumps[index]
+ more = true
+ }
+ }
+ // Exit.
+ else if (event[1]._container || event[1]._movePreviousLineEndings) {
+ otherIndex = index
+ lineIndex = undefined
+
+ while (otherIndex--) {
+ otherEvent = events[otherIndex]
+
+ if (
+ otherEvent[1].type === types.lineEnding ||
+ otherEvent[1].type === types.lineEndingBlank
+ ) {
+ if (otherEvent[0] === 'enter') {
+ if (lineIndex) {
+ events[lineIndex][1].type = types.lineEndingBlank
+ }
+
+ otherEvent[1].type = types.lineEnding
+ lineIndex = otherIndex
+ }
+ } else {
+ break
+ }
+ }
+
+ if (lineIndex) {
+ // Fix position.
+ event[1].end = shallow(events[lineIndex][1].start)
+
+ // Switch container exit w/ line endings.
+ parameters = events.slice(lineIndex, index)
+ parameters.unshift(event)
+ chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)
+ }
+ }
+ }
+
+ return !more
+}
+
+function subcontent(events, eventIndex) {
+ var token = events[eventIndex][1]
+ var context = events[eventIndex][2]
+ var startPosition = eventIndex - 1
+ var startPositions = []
+ var tokenizer =
+ token._tokenizer || context.parser[token.contentType](token.start)
+ var childEvents = tokenizer.events
+ var jumps = []
+ var gaps = {}
+ var stream
+ var previous
+ var index
+ var entered
+ var end
+ var adjust
+
+ // Loop forward through the linked tokens to pass them in order to the
+ // subtokenizer.
+ while (token) {
+ // Find the position of the event for this token.
+ while (events[++startPosition][1] !== token) {
+ // Empty.
+ }
+
+ startPositions.push(startPosition)
+
+ if (!token._tokenizer) {
+ stream = context.sliceStream(token)
+
+ if (!token.next) {
+ stream.push(codes.eof)
+ }
+
+ if (previous) {
+ tokenizer.defineSkip(token.start)
+ }
+
+ if (token.isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = true
+ }
+
+ tokenizer.write(stream)
+
+ if (token.isInFirstContentOfListItem) {
+ tokenizer._gfmTasklistFirstContentOfListItem = undefined
+ }
+ }
+
+ // Unravel the next token.
+ previous = token
+ token = token.next
+ }
+
+ // Now, loop back through all events (and linked tokens), to figure out which
+ // parts belong where.
+ token = previous
+ index = childEvents.length
+
+ while (index--) {
+ // Make sure we’ve at least seen something (final eol is part of the last
+ // token).
+ if (childEvents[index][0] === 'enter') {
+ entered = true
+ } else if (
+ // Find a void token that includes a break.
+ entered &&
+ childEvents[index][1].type === childEvents[index - 1][1].type &&
+ childEvents[index][1].start.line !== childEvents[index][1].end.line
+ ) {
+ add(childEvents.slice(index + 1, end))
+ assert(token.previous, 'expected a previous token')
+ // Help GC.
+ token._tokenizer = token.next = undefined
+ token = token.previous
+ end = index + 1
+ }
+ }
+
+ assert(!token.previous, 'expected no previous token')
+ // Help GC.
+ tokenizer.events = token._tokenizer = token.next = undefined
+
+ // Do head:
+ add(childEvents.slice(0, end))
+
+ index = -1
+ adjust = 0
+
+ while (++index < jumps.length) {
+ gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]
+ adjust += jumps[index][1] - jumps[index][0] - 1
+ }
+
+ return gaps
+
+ function add(slice) {
+ var start = startPositions.pop()
+ jumps.unshift([start, start + slice.length - 1])
+ chunkedSplice(events, start, 2, slice)
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/license b/tools/node_modules/eslint/node_modules/micromark/license
new file mode 100644
index 0000000000..39372356c4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2020 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/micromark/package.json b/tools/node_modules/eslint/node_modules/micromark/package.json
new file mode 100644
index 0000000000..b1b3941c2d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/package.json
@@ -0,0 +1,208 @@
+{
+ "name": "micromark",
+ "version": "2.11.4",
+ "description": "small commonmark compliant markdown parser with positional info and concrete tokens",
+ "license": "MIT",
+ "keywords": [
+ "commonmark",
+ "compiler",
+ "gfm",
+ "html",
+ "lexer",
+ "markdown",
+ "markup",
+ "md",
+ "unified",
+ "parse",
+ "parser",
+ "plugin",
+ "process",
+ "remark",
+ "render",
+ "renderer",
+ "token",
+ "tokenizer"
+ ],
+ "repository": "micromark/micromark",
+ "bugs": "https://github.com/micromark/micromark/issues",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "Bogdan Chadkin <trysound@yandex.ru>",
+ "Christian Murphy <christian.murphy.42@gmail.com>",
+ "Marouane Fazouane <fazouanem3@gmail.com>",
+ "John Otander <johnotander@gmail.com> (https://johno.com)",
+ "Stephan Schneider <stephanschndr@gmail.com>",
+ "Victor Felder <victor@draft.li> (https://draft.li)",
+ "Mudit Ameta <zeusdeux@gmail.com> (https://mudit.xyz)",
+ "Merlijn Vos <merlijn@soverin.net>"
+ ],
+ "files": [
+ "dist/",
+ "lib/",
+ "buffer.d.ts",
+ "buffer.js",
+ "buffer.mjs",
+ "index.js",
+ "index.mjs",
+ "index.d.ts",
+ "stream.d.ts",
+ "stream.js",
+ "stream.mjs"
+ ],
+ "main": "./index.js",
+ "types": "index.d.ts",
+ "dependencies": {
+ "debug": "^4.0.0",
+ "parse-entities": "^2.0.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.0.0",
+ "@rollup/plugin-babel": "^5.0.0",
+ "@rollup/plugin-commonjs": "^17.0.0",
+ "@rollup/plugin-node-resolve": "^11.0.0",
+ "@types/events": "^3.0.0",
+ "@unicode/unicode-13.0.0": "^1.0.0",
+ "babel-plugin-inline-constants": "^1.0.0",
+ "babel-plugin-unassert": "^3.0.0",
+ "babel-plugin-undebug": "^1.0.0",
+ "c8": "^7.0.0",
+ "character-entities": "^1.0.0",
+ "commonmark.json": "^0.29.0",
+ "concat-stream": "^2.0.0",
+ "cross-env": "^7.0.0",
+ "dtslint": "^4.0.0",
+ "eslint-plugin-es": "^4.0.0",
+ "eslint-plugin-security": "^1.0.0",
+ "esm": "^3.0.0",
+ "glob": "^7.0.0",
+ "gzip-size-cli": "^4.0.0",
+ "jsfuzz": "1.0.14",
+ "ms": "^2.0.0",
+ "patch-package": "^6.0.0",
+ "prettier": "^2.0.0",
+ "regenerate": "^1.0.0",
+ "remark-cli": "^9.0.0",
+ "remark-preset-wooorm": "^8.0.0",
+ "resolve-from": "^5.0.0",
+ "rollup": "^2.0.0",
+ "rollup-plugin-terser": "^7.0.0",
+ "tape": "^5.0.0",
+ "xo": "^0.37.0"
+ },
+ "scripts": {
+ "generate-lib-types": "node --experimental-modules script/generate-constant-typings.mjs",
+ "generate-lib-expressions": "node --experimental-modules script/generate-expressions.mjs",
+ "generate-lib-cjs": "rollup -c --silent",
+ "generate-lib": "npm run generate-lib-types && npm run generate-lib-expressions && npm run generate-lib-cjs",
+ "generate-dist-types": "node --experimental-modules script/copy-dict.mjs",
+ "generate-dist-js": "cross-env BUILD=dist rollup -c --silent",
+ "generate-dist": "npm run generate-dist-types && npm run generate-dist-js",
+ "generate-size": "cross-env BUILD=size rollup -c --silent && gzip-size micromark.min.js && gzip-size --raw micromark.min.js",
+ "generate": "npm run generate-lib && npm run generate-dist && npm run generate-size",
+ "format": "remark . -qfo && prettier . -w --loglevel warn && xo --fix",
+ "pretest-fuzz": "patch-package --patch-dir script/patches && node script/generate-fixtures.mjs",
+ "test-fuzz": "cross-env NODE_OPTIONS=\"-r esm\" timeout 15m jsfuzz test/fuzz.js test/fixtures",
+ "test-api": "node --experimental-modules test/index.mjs",
+ "test-coverage": "c8 --check-coverage --lines 100 --functions 100 --branches 100 --reporter lcov node --experimental-modules test/index.mjs",
+ "test-types": "dtslint .",
+ "test": "npm run generate && npm run format && npm run test-coverage && npm run test-types"
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "esnext": false,
+ "extensions": [
+ "mjs"
+ ],
+ "prettier": true,
+ "envs": [
+ "shared-node-browser"
+ ],
+ "rules": {
+ "import/extensions": [
+ "error",
+ "always"
+ ]
+ },
+ "overrides": [
+ {
+ "files": [
+ "lib/**/*.{js,mjs}"
+ ],
+ "plugin": [
+ "es"
+ ],
+ "extends": [
+ "plugin:es/no-new-in-es2015",
+ "plugin:security/recommended"
+ ],
+ "rules": {
+ "complexity": "off",
+ "es/no-array-from": "off",
+ "es/no-object-assign": "off",
+ "es/no-modules": "off",
+ "import/no-mutable-exports": "off",
+ "import/no-anonymous-default-export": "off",
+ "guard-for-in": "off",
+ "max-depth": "off",
+ "no-multi-assign": "off",
+ "no-unmodified-loop-condition": "off",
+ "security/detect-object-injection": "off",
+ "unicorn/explicit-length-check": "off",
+ "unicorn/prefer-includes": "off",
+ "unicorn/prefer-number-properties": "off"
+ }
+ },
+ {
+ "files": [
+ "**/*.d.ts"
+ ],
+ "rules": {
+ "import/extensions": [
+ "error",
+ "never"
+ ]
+ }
+ },
+ {
+ "files": [
+ "test/**/*.{js,mjs}"
+ ],
+ "rules": {
+ "import/no-unassigned-import": "off"
+ }
+ }
+ ],
+ "ignores": [
+ "dist/",
+ "lib/**/*.js",
+ "micromark.test.ts"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm",
+ [
+ "lint-no-html",
+ false
+ ]
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/micromark/readme.md b/tools/node_modules/eslint/node_modules/micromark/readme.md
new file mode 100644
index 0000000000..db7931df81
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/readme.md
@@ -0,0 +1,737 @@
+<h1 align="center">
+ <img src="https://raw.githubusercontent.com/micromark/micromark/9c34547/logo.svg?sanitize=true" alt="micromark" width="400" />
+</h1>
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][bundle-size-badge]][bundle-size]
+[![Sponsors][sponsors-badge]][opencollective]
+[![Backers][backers-badge]][opencollective]
+[![Chat][chat-badge]][chat]
+
+The smallest CommonMark compliant markdown parser with positional info and
+concrete tokens.
+
+* [x] **[compliant][commonmark]** (100% to CommonMark)
+* [x] **[extensions][]** ([GFM][], [directives][], [footnotes][],
+ [frontmatter][], [math][], [MDX.js][mdxjs])
+* [x] **[safe][security]** (by default)
+* [x] **[small][size]** (smallest CM parser that exists)
+* [x] **[robust][test]** (1800+ tests, 100% coverage, fuzz testing)
+
+## Intro
+
+micromark is a long awaited markdown parser.
+It uses a [state machine][cmsm] to parse the entirety of markdown into concrete
+tokens.
+It’s the smallest 100% [CommonMark][] compliant markdown parser in JavaScript.
+It was made to replace the internals of [`remark-parse`][remark-parse], the most
+[popular][] markdown parser.
+Its API compiles to HTML, but its parts are made to be used separately, so as to
+generate syntax trees ([`mdast-util-from-markdown`][from-markdown]) or compile
+to other output formats.
+It’s in open beta: up next are [CMSM][] and CSTs.
+
+* for updates, see [Twitter][]
+* for more about us, see [`unifiedjs.com`][site]
+* for questions, see [Discussions][chat]
+* to help, see [contribute][] or [sponsor][] below
+
+## Contents
+
+* [Install](#install)
+* [Use](#use)
+* [API](#api)
+ * [`micromark(doc[, encoding][, options])`](#micromarkdoc-encoding-options)
+ * [`micromarkStream(options?)`](#micromarkstreamoptions)
+* [Extensions](#extensions)
+ * [`SyntaxExtension`](#syntaxextension)
+ * [`HtmlExtension`](#htmlextension)
+ * [List of extensions](#list-of-extensions)
+* [Syntax tree](#syntax-tree)
+* [CommonMark](#commonmark)
+* [Grammar](#grammar)
+* [Test](#test)
+* [Size & debug](#size--debug)
+* [Comparison](#comparison)
+* [Version](#version)
+* [Security](#security)
+* [Contribute](#contribute)
+* [Sponsor](#sponsor)
+* [Origin story](#origin-story)
+* [License](#license)
+
+## Install
+
+[npm][]:
+
+```sh
+npm install micromark
+```
+
+## Use
+
+Typical use (buffering):
+
+```js
+var micromark = require('micromark')
+
+console.log(micromark('## Hello, *world*!'))
+```
+
+Yields:
+
+```html
+<h2>Hello, <em>world</em>!</h2>
+```
+
+The same can be done with ESM (in Node 10+, browsers that support it, or with a
+bundler), in an `example.mjs` file, like so:
+
+```js
+import micromark from 'micromark'
+
+console.log(micromark('## Hello, *world*!'))
+```
+
+You can pass extensions (in this case [`micromark-extension-gfm`][gfm]):
+
+```js
+var micromark = require('micromark')
+var gfmSyntax = require('micromark-extension-gfm')
+var gfmHtml = require('micromark-extension-gfm/html')
+
+var doc = '* [x] contact@example.com ~~strikethrough~~'
+
+var result = micromark(doc, {
+ extensions: [gfmSyntax()],
+ htmlExtensions: [gfmHtml]
+})
+
+console.log(result)
+```
+
+Yields:
+
+```html
+<ul>
+<li><input checked="" disabled="" type="checkbox"> <a href="mailto:contact@example.com">contact@example.com</a> <del>strikethrough</del></li>
+</ul>
+```
+
+Streaming interface:
+
+```js
+var fs = require('fs')
+var micromarkStream = require('micromark/stream')
+
+fs.createReadStream('example.md')
+ .on('error', handleError)
+ .pipe(micromarkStream())
+ .pipe(process.stdout)
+
+function handleError(err) {
+ // Handle your error here!
+ throw err
+}
+```
+
+## API
+
+This section documents the API.
+The parts can be used separately, but this isn’t documented yet.
+
+### `micromark(doc[, encoding][, options])`
+
+Compile markdown to HTML.
+
+##### Parameters
+
+###### `doc`
+
+Markdown to parse (`string` or `Buffer`)
+
+###### `encoding`
+
+[Character encoding][encoding] to understand `doc` as when it’s a
+[`Buffer`][buffer] (`string`, default: `'utf8'`).
+
+###### `options.defaultLineEnding`
+
+Value to use for line endings not in `doc` (`string`, default: first line
+ending or `'\n'`).
+
+Generally, micromark copies line endings (`'\r'`, `'\n'`, `'\r\n'`) in the
+markdown document over to the compiled HTML.
+In some cases, such as `> a`, CommonMark requires that extra line endings are
+added: `<blockquote>\n<p>a</p>\n</blockquote>`.
+
+###### `options.allowDangerousHtml`
+
+Whether to allow embedded HTML (`boolean`, default: `false`).
+
+###### `options.allowDangerousProtocol`
+
+Whether to allow potentially dangerous protocols in links and images (`boolean`,
+default: `false`).
+URLs relative to the current protocol are always allowed (such as, `image.jpg`).
+For links, the allowed protocols are `http`, `https`, `irc`, `ircs`, `mailto`,
+and `xmpp`.
+For images, the allowed protocols are `http` and `https`.
+
+###### `options.extensions`
+
+Array of syntax extensions ([`Array.<SyntaxExtension>`][syntax-extension],
+default: `[]`).
+
+###### `options.htmlExtensions`
+
+Array of HTML extensions ([`Array.<HtmlExtension>`][html-extension], default:
+`[]`).
+
+##### Returns
+
+`string` — Compiled HTML.
+
+### `micromarkStream(options?)`
+
+Streaming interface of micromark.
+Compiles markdown to HTML.
+`options` are the same as the buffering API above.
+Available at `require('micromark/stream')`.
+Note that some of the work to parse markdown can be done streaming, but in the
+end buffering is required.
+
+micromark does not handle errors for you, so you must handle errors on whatever
+streams you pipe into it.
+As markdown does not know errors, `micromark` itself does not emit errors.
+
+## Extensions
+
+There are two types of extensions for micromark:
+[`SyntaxExtension`][syntax-extension] and [`HtmlExtension`][html-extension].
+They can be passed in [`extensions`][option-extensions] or
+[`htmlExtensions`][option-htmlextensions], respectively.
+
+### `SyntaxExtension`
+
+A syntax extension is an object whose fields are the names of hooks, referring
+to where constructs “hook” into.
+`content` (a block of, well, content: definitions and paragraphs), `document`
+(containers such as block quotes and lists), `flow` (block constructs such as
+ATX and setext headings, HTML, indented and fenced code, thematic breaks),
+`string` (things that work in a few places such as destinations, fenced code
+info, etc: character escapes and -references), or `text` (rich inline text:
+autolinks, character escapes and -references, code, hard breaks, HTML, images,
+links, emphasis, strong).
+
+The fields at such objects are character codes, mapping to constructs as values.
+The built in [constructs][] are an extension.
+See it and the [existing extensions][extensions] for inspiration.
+
+### `HtmlExtension`
+
+An HTML extension is an object whose fields are either `enter` or `exit`
+(reflecting whether a token is entered or exited).
+The values at such objects are names of tokens mapping to handlers.
+See the [existing extensions][extensions] for inspiration.
+
+### List of extensions
+
+* [`micromark/micromark-extension-directive`][directives]
+ — support directives (generic extensions)
+* [`micromark/micromark-extension-footnote`][footnotes]
+ — support footnotes
+* [`micromark/micromark-extension-frontmatter`][frontmatter]
+ — support frontmatter (YAML, TOML, etc)
+* [`micromark/micromark-extension-gfm`][gfm]
+ — support GFM (GitHub Flavored Markdown)
+* [`micromark/micromark-extension-gfm-autolink-literal`](https://github.com/micromark/micromark-extension-gfm-autolink-literal)
+ — support GFM autolink literals
+* [`micromark/micromark-extension-gfm-strikethrough`](https://github.com/micromark/micromark-extension-gfm-strikethrough)
+ — support GFM strikethrough
+* [`micromark/micromark-extension-gfm-table`](https://github.com/micromark/micromark-extension-gfm-table)
+ — support GFM tables
+* [`micromark/micromark-extension-gfm-tagfilter`](https://github.com/micromark/micromark-extension-gfm-tagfilter)
+ — support GFM tagfilter
+* [`micromark/micromark-extension-gfm-task-list-item`](https://github.com/micromark/micromark-extension-gfm-task-list-item)
+ — support GFM tasklists
+* [`micromark/micromark-extension-math`][math]
+ — support math
+* [`micromark/micromark-extension-mdx`](https://github.com/micromark/micromark-extension-mdx)
+ — support MDX
+* [`micromark/micromark-extension-mdxjs`][mdxjs]
+ — support MDX.js
+* [`micromark/micromark-extension-mdx-expression`](https://github.com/micromark/micromark-extension-mdx-expression)
+ — support MDX (or MDX.js) expressions
+* [`micromark/micromark-extension-mdx-jsx`](https://github.com/micromark/micromark-extension-mdx-jsx)
+ — support MDX (or MDX.js) JSX
+* [`micromark/micromark-extension-mdx-md`](https://github.com/micromark/micromark-extension-mdx-md)
+ — support misc MDX changes
+* [`micromark/micromark-extension-mdxjs-esm`](https://github.com/micromark/micromark-extension-mdxjs-esm)
+ — support MDX.js import/exports
+
+## Syntax tree
+
+A higher level project, [`mdast-util-from-markdown`][from-markdown], can give
+you an AST.
+
+```js
+var fromMarkdown = require('mdast-util-from-markdown')
+
+var result = fromMarkdown('## Hello, *world*!')
+
+console.log(result.children[0])
+```
+
+Yields:
+
+```js
+{
+ type: 'heading',
+ depth: 2,
+ children: [
+ {type: 'text', value: 'Hello, ', position: [Object]},
+ {type: 'emphasis', children: [Array], position: [Object]},
+ {type: 'text', value: '!', position: [Object]}
+ ],
+ position: {
+ start: {line: 1, column: 1, offset: 0},
+ end: {line: 1, column: 19, offset: 18}
+ }
+}
+```
+
+Another level up is [**remark**][remark], which provides a nice interface and
+hundreds of plugins.
+
+## CommonMark
+
+The first definition of “Markdown” gave several examples of how it worked,
+showing input Markdown and output HTML, and came with a reference implementation
+(`Markdown.pl`).
+When new implementations followed, they mostly followed the first definition,
+but deviated from the first implementation, and added extensions, thus making
+the format a family of formats.
+
+Some years later, an attempt was made to standardize the differences between
+implementations, by specifying how several edge cases should be handled, through
+more input and output examples.
+This is known as [CommonMark][commonmark-spec], and many implementations now
+work towards some degree of CommonMark compliancy.
+Still, CommonMark describes what the output in HTML should be given some
+input, which leaves many edge cases up for debate, and does not answer what
+should happen for other output formats.
+
+micromark passes all tests from CommonMark and has many more tests to match the
+CommonMark reference parsers.
+Finally, it comes with [CMSM][], which describes how to parse markup, instead
+of documenting input and output examples.
+
+## Grammar
+
+The syntax of markdown can be described in Backus–Naur form (BNF) as:
+
+```bnf
+markdown = .*
+```
+
+No, that’s not a [typo](http://trevorjim.com/a-specification-for-markdown/):
+markdown has no syntax errors; anything thrown at it renders *something*.
+
+## Test
+
+micromark is tested with the \~650 CommonMark tests and more than 1.2k extra
+tests confirmed with CM reference parsers.
+These tests reach all branches in the code, thus this project has 100% coverage.
+Finally, we use fuzz testing to ensure micromark is stable, reliable, and
+secure.
+
+To build, format, and test the codebase, use `$ npm test` after clone and
+install.
+The `$ npm run test-api` and `$ npm run test-coverage` scripts check the unit
+tests and their coverage, respectively.
+The `$ npm run test-types` script checks TypeScript definitions.
+
+The `$ npm run test-fuzz` script does fuzz testing for 15 minutes.
+The timeout is provided by GNU coreutils **timeout(1)**, which might not be
+available on your system.
+Either install it or remove it from the script.
+
+## Size & debug
+
+micromark is really small.
+A ton of time went into making sure it minifies well, by the way code is written
+but also through custom build scripts to pre-evaluate certain expressions.
+Furthermore, care went into making it compress well with GZip and Brotli.
+
+Normally, you’ll use the pre-evaluated version of micromark, which is published
+in the `dist/` folder and has entries in the root.
+While developing or debugging, you can switch to use the source, which is
+published in the `lib/` folder, and comes instrumented with assertions and debug
+messages.
+To see debug messages, run your script with a `DEBUG` env variable, such as with
+`DEBUG="micromark" node script.js`.
+
+To generate the codebase, use `$ npm run generate` after clone and install.
+The `$ npm run generate-dist` script specifically takes `lib/` and generates
+`dist/`.
+The `$ npm run generate-size` script checks the bundle size of `dist/`.
+
+## Comparison
+
+There are many other markdown parsers out there, and maybe they’re better suited
+to your use case!
+Here is a short comparison of a couple of ’em in JavaScript.
+Note that this list is made by the folks who make `micromark` and `remark`, so
+there is some bias.
+
+**Note**: these are, in fact, not really comparable: micromark (and remark)
+focus on completely different things than other markdown parsers do.
+Sure, you can generate HTML from markdown with them, but micromark (and remark)
+are created for (abstract or concrete) syntax trees—to inspect, transform, and
+generate content, so that you can make things like [MDX][], [Prettier][], or
+[Gatsby][].
+
+###### micromark
+
+micromark can be used in two different ways.
+It can either be used, optionally with existing extensions, to get HTML pretty
+easily.
+Or, it can give tremendous power, such as access to all tokens with positional
+info, at the cost of being hard to get into.
+It’s super small, pretty fast, and has 100% CommonMark compliance.
+It has syntax extensions, such as supporting 100% GFM compliance (with
+`micromark-extension-gfm`), but they’re rather complex to write.
+It’s the newest parser on the block.
+
+If you’re looking for fine grained control, use micromark.
+
+###### remark
+
+[remark][] is the most popular markdown parser.
+It’s built on top of `micromark` and boasts syntax trees.
+For an analogy, it’s like if Babel, ESLint, and more, were one project.
+It supports the syntax extensions that micromark has (so it’s 100% CM compliant
+and can be 100% GFM compliant), but most of the work is done in plugins that
+transform or inspect the tree.
+Transforming the tree is relatively easy: it’s a JSON object that can be
+manipulated directly.
+remark is stable, widely used, and extremely powerful for handling complex data.
+
+If you’re looking to inspect or transform lots of content, use [remark][].
+
+###### marked
+
+[marked][] is the oldest markdown parser on the block.
+It’s been around for ages, is battle tested, small, popular, and has a bunch of
+extensions, but doesn’t match CommonMark or GFM, and is unsafe by default.
+
+If you have markdown you trust and want to turn it into HTML without a fuss, use
+[marked][].
+
+###### markdown-it
+
+[markdown-it][] is a good, stable, and essentially CommonMark compliant markdown
+parser, with (optional) support for some GFM features as well.
+It’s used a lot as a direct dependency in packages, but is rather big.
+It shines at syntax extensions, where you want to support not just markdown, but
+*your* (company’s) version of markdown.
+
+If you’re in Node and have CommonMark-compliant (or funky) markdown and want to
+turn it into HTML, use [markdown-it][].
+
+###### Others
+
+There are lots of other markdown parsers!
+Some say they’re small, or fast, or that they’re CommonMark compliant — but
+that’s not always true.
+This list is not supposed to be exhaustive.
+This list of markdown parsers is a snapshot in time of why (not) to use
+(alternatives to) `micromark`: they’re all good choices, depending on what your
+goals are.
+
+## Version
+
+The open beta of micromark starts at version `2.0.0` (there was a different
+package published on npm as `micromark` before).
+micromark will adhere to semver at `3.0.0`.
+Use tilde ranges for now: `"micromark": "~2.10.1"`.
+
+## Security
+
+The typical security aspect discussed for markdown is [cross-site scripting
+(XSS)][xss] attacks.
+It’s safe to compile markdown to HTML if it does not include embedded HTML nor
+uses dangerous protocols in links (such as `javascript:` or `data:`).
+micromark is safe by default when embedded HTML or dangerous protocols are used
+too, as it encodes or drops them.
+Turning on the `allowDangerousHtml` or `allowDangerousProtocol` options for
+user-provided markdown opens you up to XSS attacks.
+
+Another aspect is DDoS attacks.
+For example, an attacker could throw a 100mb file at micromark, in which case
+the JavaScript engine will run out of memory and crash.
+It is also possible to crash micromark with smaller payloads, notably when
+thousands of links, images, emphasis, or strong are opened but not closed.
+It is wise to cap the accepted size of input (500kb can hold a big book) and to
+process content in a different thread or worker so that it can be stopped when
+needed.
+
+Using extensions might also be unsafe, refer to their documentation for more
+information.
+
+For more information on markdown sanitation, see
+[`improper-markup-sanitization.md`][improper] by [**@chalker**][chalker].
+
+See [`security.md`][securitymd] in [`micromark/.github`][health] for how to
+submit a security report.
+
+## Contribute
+
+See [`contributing.md`][contributing] in [`micromark/.github`][health] for ways
+to get started.
+See [`support.md`][support] for ways to get help.
+
+This project has a [code of conduct][coc].
+By interacting with this repository, organisation, or community you agree to
+abide by its terms.
+
+## Sponsor
+
+Support this effort and give back by sponsoring on [OpenCollective][]!
+
+<table>
+<tr valign="middle">
+<td width="100%" align="center" colspan="10">
+ <br>
+ <a href="https://www.salesforce.com">Salesforce</a> 🏅<br><br>
+ <a href="https://www.salesforce.com"><img src="https://images.opencollective.com/salesforce/ca8f997/logo/512.png" width="256"></a>
+</td>
+</tr>
+<tr valign="middle">
+<td width="20%" align="center" colspan="2">
+ <a href="https://www.gatsbyjs.org">Gatsby</a> 🥇<br><br>
+ <a href="https://www.gatsbyjs.org"><img src="https://avatars1.githubusercontent.com/u/12551863?s=256&v=4" width="128"></a>
+</td>
+<td width="20%" align="center" colspan="2">
+ <a href="https://vercel.com">Vercel</a> 🥇<br><br>
+ <a href="https://vercel.com"><img src="https://avatars1.githubusercontent.com/u/14985020?s=256&v=4" width="128"></a>
+</td>
+<td width="20%" align="center" colspan="2">
+ <a href="https://www.netlify.com">Netlify</a><br><br>
+ <!--OC has a sharper image-->
+ <a href="https://www.netlify.com"><img src="https://images.opencollective.com/netlify/4087de2/logo/256.png" width="128"></a>
+</td>
+<td width="10%" align="center">
+ <a href="https://www.holloway.com">Holloway</a><br><br>
+ <a href="https://www.holloway.com"><img src="https://avatars1.githubusercontent.com/u/35904294?s=128&v=4" width="64"></a>
+</td>
+<td width="10%" align="center">
+ <a href="https://themeisle.com">ThemeIsle</a><br><br>
+ <a href="https://themeisle.com"><img src="https://avatars1.githubusercontent.com/u/58979018?s=128&v=4" width="64"></a>
+</td>
+<td width="10%" align="center">
+ <a href="https://boosthub.io">Boost Hub</a><br><br>
+ <a href="https://boosthub.io"><img src="https://images.opencollective.com/boosthub/6318083/logo/128.png" width="64"></a>
+</td>
+<td width="10%" align="center">
+ <a href="https://expo.io">Expo</a><br><br>
+ <a href="https://expo.io"><img src="https://avatars1.githubusercontent.com/u/12504344?s=128&v=4" width="64"></a>
+</td>
+</tr>
+<tr valign="middle">
+<td width="100%" align="center" colspan="10">
+ <br>
+ <a href="https://opencollective.com/unified"><strong>You?</strong></a>
+ <br><br>
+</td>
+</tr>
+</table>
+
+## Origin story
+
+Over the summer of 2018, micromark was planned, and the idea shared in August
+with a couple of friends and potential sponsors.
+The problem I (**[@wooorm][]**) had was that issues were piling up in remark and
+other repos, but my day job (teaching) was fun, fulfilling, and deserved time
+too.
+It was getting hard to combine the two.
+The thought was to feed two birds with one scone: fix the issues in remark with
+a new markdown parser (codename marydown) while being financially supported by
+sponsors building fancy stuff on top, such as Gatsby, Contentful, and Vercel
+(ZEIT at the time).
+**[@johno][]** was making MDX on top of remark at the time (important historical
+note: several other folks were working on JSX + markdown too).
+We bundled our strengths: MDX was getting some traction and we thought together
+we could perhaps make something sustainable.
+
+In November 2018, we launched with the idea for micromark to solve all existing
+bugs, sustaining the existing hundreds of projects, and furthering the exciting
+high-level project MDX.
+We pushed a single name: unified (which back then was a small but essential
+part of the chain).
+Gatsby and Vercel were immediate sponsors.
+We didn’t know whether it would work, and it worked.
+But now you have a new problem: you are getting some financial support (much
+more than other open source projects) but it’s not enough money for rent, and
+too much money to print stickers with.
+You still have your job and issues are still piling up.
+
+At the start of summer 2019, after a couple months of saving up donations, I
+quit my job and worked on unified through fall.
+That got the number of open issues down significantly and set up a strong
+governance and maintenance system for the collective.
+But when the time came to work on micromark, the money was gone again, so I
+contracted through winter 2019, and in spring 2020 I could do about half open
+source, half contracting.
+One of the contracting gigs was to write a new MDX parser, for which I also
+documented how to do that with a state machine [in prose][mdx-cmsm].
+That gave me the insight into how the same could be done for markdown: I drafted
+[CMSM][], which was some of the core ideas for micromark, but in prose.
+
+In May 2020, Salesforce reached out: they saw the bugs in remark, how micromark
+could help, and the initial work on CMSM.
+And they had thousands of Markdown files.
+In a for open source uncharacteristic move, they decided to fund my work on
+micromark.
+A large part of what maintaining open source means, is putting out fires,
+triaging issues, and making sure users and sponsors are happy, so it was
+amazing to get several months to just focus and make something new.
+I remember feeling that this project would probably be the hardest thing I’d
+work on: yeah, parsers are pretty difficult, but markdown is on another level.
+Markdown is such a giant stack of edge cases on edge cases on even more
+weirdness, what a mess.
+On August 20, 2020, I released [2.0.0][200], the first working version of
+micromark.
+And it’s hard to describe how that moment felt.
+It was great.
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://github.com/micromark/micromark/workflows/main/badge.svg
+
+[build]: https://github.com/micromark/micromark/actions
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/micromark/micromark.svg
+
+[coverage]: https://codecov.io/github/micromark/micromark
+
+[downloads-badge]: https://img.shields.io/npm/dm/micromark.svg
+
+[downloads]: https://www.npmjs.com/package/micromark
+
+[bundle-size-badge]: https://img.shields.io/bundlephobia/minzip/micromark.svg
+
+[bundle-size]: https://bundlephobia.com/result?p=micromark
+
+[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
+
+[backers-badge]: https://opencollective.com/unified/backers/badge.svg
+
+[opencollective]: https://opencollective.com/unified
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[chat-badge]: https://img.shields.io/badge/chat-discussions-success.svg
+
+[chat]: https://github.com/micromark/micromark/discussions
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[health]: https://github.com/micromark/.github
+
+[xss]: https://en.wikipedia.org/wiki/Cross-site_scripting
+
+[securitymd]: https://github.com/micromark/.github/blob/HEAD/security.md
+
+[contributing]: https://github.com/micromark/.github/blob/HEAD/contributing.md
+
+[support]: https://github.com/micromark/.github/blob/HEAD/support.md
+
+[coc]: https://github.com/micromark/.github/blob/HEAD/code-of-conduct.md
+
+[twitter]: https://twitter.com/unifiedjs
+
+[remark]: https://github.com/remarkjs/remark
+
+[site]: https://unifiedjs.com
+
+[contribute]: #contribute
+
+[encoding]: https://nodejs.org/api/buffer.html#buffer_buffers_and_character_encodings
+
+[buffer]: https://nodejs.org/api/buffer.html
+
+[commonmark-spec]: https://commonmark.org
+
+[popular]: https://www.npmtrends.com/remark-parse-vs-marked-vs-markdown-it
+
+[remark-parse]: https://unifiedjs.com/explore/package/remark-parse/
+
+[improper]: https://github.com/ChALkeR/notes/blob/master/Improper-markup-sanitization.md
+
+[chalker]: https://github.com/ChALkeR
+
+[cmsm]: https://github.com/micromark/common-markup-state-machine
+
+[mdx-cmsm]: https://github.com/micromark/mdx-state-machine
+
+[from-markdown]: https://github.com/syntax-tree/mdast-util-from-markdown
+
+[directives]: https://github.com/micromark/micromark-extension-directive
+
+[footnotes]: https://github.com/micromark/micromark-extension-footnote
+
+[frontmatter]: https://github.com/micromark/micromark-extension-frontmatter
+
+[gfm]: https://github.com/micromark/micromark-extension-gfm
+
+[math]: https://github.com/micromark/micromark-extension-math
+
+[mdxjs]: https://github.com/micromark/micromark-extension-mdxjs
+
+[constructs]: lib/constructs.mjs
+
+[extensions]: #list-of-extensions
+
+[syntax-extension]: #syntaxextension
+
+[html-extension]: #htmlextension
+
+[option-extensions]: #optionsextensions
+
+[option-htmlextensions]: #optionshtmlextensions
+
+[marked]: https://github.com/markedjs/marked
+
+[markdown-it]: https://github.com/markdown-it/markdown-it
+
+[mdx]: https://github.com/mdx-js/mdx
+
+[prettier]: https://github.com/prettier/prettier
+
+[gatsby]: https://github.com/gatsbyjs/gatsby
+
+[commonmark]: #commonmark
+
+[size]: #size--debug
+
+[test]: #test
+
+[security]: #security
+
+[sponsor]: #sponsor
+
+[@wooorm]: https://github.com/wooorm
+
+[@johno]: https://github.com/johno
+
+[200]: https://github.com/micromark/micromark/releases/tag/2.0.0
diff --git a/tools/node_modules/eslint/node_modules/micromark/stream.js b/tools/node_modules/eslint/node_modules/micromark/stream.js
new file mode 100644
index 0000000000..e90ff8f6c6
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/stream.js
@@ -0,0 +1,3 @@
+'use strict'
+
+module.exports = require('./dist/stream.js')
diff --git a/tools/node_modules/eslint/node_modules/micromark/stream.mjs b/tools/node_modules/eslint/node_modules/micromark/stream.mjs
new file mode 100644
index 0000000000..e33b22880b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/micromark/stream.mjs
@@ -0,0 +1 @@
+export {default} from './dist/stream.js'
diff --git a/tools/node_modules/eslint/node_modules/minimist/LICENSE b/tools/node_modules/eslint/node_modules/minimist/LICENSE
new file mode 100644
index 0000000000..ee27ba4b44
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/minimist/LICENSE
@@ -0,0 +1,18 @@
+This software is released under the MIT license:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/minimist/index.js b/tools/node_modules/eslint/node_modules/minimist/index.js
new file mode 100644
index 0000000000..d2afe5e4d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/minimist/index.js
@@ -0,0 +1,245 @@
+module.exports = function (args, opts) {
+ if (!opts) opts = {};
+
+ var flags = { bools : {}, strings : {}, unknownFn: null };
+
+ if (typeof opts['unknown'] === 'function') {
+ flags.unknownFn = opts['unknown'];
+ }
+
+ if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
+ flags.allBools = true;
+ } else {
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+ }
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
+
+ var defaults = opts['default'] || {};
+
+ var argv = { _ : [] };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--')+1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function argDefined(key, arg) {
+ return (flags.allBools && /^--[^=]+$/.test(arg)) ||
+ flags.strings[key] || flags.bools[key] || aliases[key];
+ }
+
+ function setArg (key, val, arg) {
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
+ if (flags.unknownFn(arg) === false) return;
+ }
+
+ var value = !flags.strings[key] && isNumber(val)
+ ? Number(val) : val
+ ;
+ setKey(argv, key.split('.'), value);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ function setKey (obj, keys, value) {
+ var o = obj;
+ for (var i = 0; i < keys.length-1; i++) {
+ var key = keys[i];
+ if (key === '__proto__') return;
+ if (o[key] === undefined) o[key] = {};
+ if (o[key] === Object.prototype || o[key] === Number.prototype
+ || o[key] === String.prototype) o[key] = {};
+ if (o[key] === Array.prototype) o[key] = [];
+ o = o[key];
+ }
+
+ var key = keys[keys.length - 1];
+ if (key === '__proto__') return;
+ if (o === Object.prototype || o === Number.prototype
+ || o === String.prototype) o = {};
+ if (o === Array.prototype) o = [];
+ if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
+ o[key] = value;
+ }
+ else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ }
+ else {
+ o[key] = [ o[key], value ];
+ }
+ }
+
+ function aliasIsBoolean(key) {
+ return aliases[key].some(function (x) {
+ return flags.bools[x];
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ var key = m[1];
+ var value = m[2];
+ if (flags.bools[key]) {
+ value = value !== 'false';
+ }
+ setArg(key, value, arg);
+ }
+ else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false, arg);
+ }
+ else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+ if (next !== undefined && !/^-/.test(next)
+ && !flags.bools[key]
+ && !flags.allBools
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, next, arg);
+ i++;
+ }
+ else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1,-1).split('');
+
+ var broken = false;
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j+2);
+
+ if (next === '-') {
+ setArg(letters[j], next, arg)
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
+ setArg(letters[j], next.split('=')[1], arg);
+ broken = true;
+ break;
+ }
+
+ if (/[A-Za-z]/.test(letters[j])
+ && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next, arg);
+ broken = true;
+ break;
+ }
+
+ if (letters[j+1] && letters[j+1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j+2), arg);
+ broken = true;
+ break;
+ }
+ else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+ if (!broken && key !== '-') {
+ if (args[i+1] && !/^(-|--)[^-]/.test(args[i+1])
+ && !flags.bools[key]
+ && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, args[i+1], arg);
+ i++;
+ }
+ else if (args[i+1] && /^(true|false)$/.test(args[i+1])) {
+ setArg(key, args[i+1] === 'true', arg);
+ i++;
+ }
+ else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ }
+ else {
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
+ argv._.push(
+ flags.strings['_'] || !isNumber(arg) ? arg : Number(arg)
+ );
+ }
+ if (opts.stopEarly) {
+ argv._.push.apply(argv._, args.slice(i + 1));
+ break;
+ }
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ if (opts['--']) {
+ argv['--'] = new Array();
+ notFlags.forEach(function(key) {
+ argv['--'].push(key);
+ });
+ }
+ else {
+ notFlags.forEach(function(key) {
+ argv._.push(key);
+ });
+ }
+
+ return argv;
+};
+
+function hasKey (obj, keys) {
+ var o = obj;
+ keys.slice(0,-1).forEach(function (key) {
+ o = (o[key] || {});
+ });
+
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function isNumber (x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
+
diff --git a/tools/node_modules/eslint/node_modules/minimist/package.json b/tools/node_modules/eslint/node_modules/minimist/package.json
new file mode 100644
index 0000000000..c091d41375
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/minimist/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "minimist",
+ "version": "1.2.5",
+ "description": "parse argument options",
+ "main": "index.js",
+ "devDependencies": {
+ "covert": "^1.0.0",
+ "tap": "~0.4.0",
+ "tape": "^3.5.0"
+ },
+ "scripts": {
+ "test": "tap test/*.js",
+ "coverage": "covert test/*.js"
+ },
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/6..latest",
+ "ff/5",
+ "firefox/latest",
+ "chrome/10",
+ "chrome/latest",
+ "safari/5.1",
+ "safari/latest",
+ "opera/12"
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/substack/minimist.git"
+ },
+ "homepage": "https://github.com/substack/minimist",
+ "keywords": [
+ "argv",
+ "getopt",
+ "parser",
+ "optimist"
+ ],
+ "author": {
+ "name": "James Halliday",
+ "email": "mail@substack.net",
+ "url": "http://substack.net"
+ },
+ "license": "MIT"
+}
diff --git a/tools/node_modules/eslint/node_modules/minimist/readme.markdown b/tools/node_modules/eslint/node_modules/minimist/readme.markdown
new file mode 100644
index 0000000000..5fd97ab11e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/minimist/readme.markdown
@@ -0,0 +1,95 @@
+# minimist
+
+parse argument options
+
+This module is the guts of optimist's argument parser without all the
+fanciful decoration.
+
+# example
+
+``` js
+var argv = require('minimist')(process.argv.slice(2));
+console.log(argv);
+```
+
+```
+$ node example/parse.js -a beep -b boop
+{ _: [], a: 'beep', b: 'boop' }
+```
+
+```
+$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
+{ _: [ 'foo', 'bar', 'baz' ],
+ x: 3,
+ y: 4,
+ n: 5,
+ a: true,
+ b: true,
+ c: true,
+ beep: 'boop' }
+```
+
+# security
+
+Previous versions had a prototype pollution bug that could cause privilege
+escalation in some circumstances when handling untrusted user input.
+
+Please use version 1.2.3 or later: https://snyk.io/vuln/SNYK-JS-MINIMIST-559764
+
+# methods
+
+``` js
+var parseArgs = require('minimist')
+```
+
+## var argv = parseArgs(args, opts={})
+
+Return an argument object `argv` populated with the array arguments from `args`.
+
+`argv._` contains all the arguments that didn't have an option associated with
+them.
+
+Numeric-looking arguments will be returned as numbers unless `opts.string` or
+`opts.boolean` is set for that argument name.
+
+Any arguments after `'--'` will not be parsed and will end up in `argv._`.
+
+options can be:
+
+* `opts.string` - a string or array of strings argument names to always treat as
+strings
+* `opts.boolean` - a boolean, string or array of strings to always treat as
+booleans. if `true` will treat all double hyphenated arguments without equal signs
+as boolean (e.g. affects `--foo`, not `-f` or `--foo=bar`)
+* `opts.alias` - an object mapping string names to strings or arrays of string
+argument names to use as aliases
+* `opts.default` - an object mapping string argument names to default values
+* `opts.stopEarly` - when true, populate `argv._` with everything after the
+first non-option
+* `opts['--']` - when true, populate `argv._` with everything before the `--`
+and `argv['--']` with everything after the `--`. Here's an example:
+
+ ```
+ > require('./')('one two three -- four five --six'.split(' '), { '--': true })
+ { _: [ 'one', 'two', 'three' ],
+ '--': [ 'four', 'five', '--six' ] }
+ ```
+
+ Note that with `opts['--']` set, parsing for arguments still stops after the
+ `--`.
+
+* `opts.unknown` - a function which is invoked with a command line parameter not
+defined in the `opts` configuration object. If the function returns `false`, the
+unknown option is not added to `argv`.
+
+# install
+
+With [npm](https://npmjs.org) do:
+
+```
+npm install minimist
+```
+
+# license
+
+MIT
diff --git a/tools/node_modules/eslint/node_modules/node-releases/LICENSE b/tools/node_modules/eslint/node_modules/node-releases/LICENSE
new file mode 100644
index 0000000000..ea39e4f9b7
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/node-releases/LICENSE
@@ -0,0 +1,21 @@
+The MIT License
+
+Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/node-releases/README.md b/tools/node_modules/eslint/node_modules/node-releases/README.md
new file mode 100644
index 0000000000..114fb4a267
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/node-releases/README.md
@@ -0,0 +1,31 @@
+# Node.js releases data
+
+All data is located in `data` directory.
+
+`data/raw` contains raw data `nodejs.json` and `iojs.json`.
+
+`data/processed` contains `envs.js` with both node.js and io.js data preprocessed to be used by [Browserslist](https://github.com/ai/browserslist) and other projects. Each version in this file contains only necessary info: version, release date and optionally LTS flag.
+
+## Installation
+```bash
+npm install --save node-releases
+```
+
+## Updating data
+```bash
+npm run build
+```
+This is a build script which fetches data from web, processes it and saves processed data to `data/processed/envs.json`. If you want to run this steps separately you can use commands described below.
+
+
+### Fetching data
+```bash
+npm run fetch
+```
+This npm script will download new data to `data/raw` directory. Also it'll download Node.js release schedule into `release-schedule` folder.
+
+### Processing data
+```bash
+npm run process
+```
+This script generates `envs.json` file from raw data files and saves it to `data/processed` directory.
diff --git a/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json b/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json
new file mode 100644
index 0000000000..08d7f8c8f2
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/node-releases/data/processed/envs.json
@@ -0,0 +1 @@
+[{"name":"nodejs","version":"0.2.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.3.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.4.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.5.0","date":"2011-08-26","lts":false,"security":false},{"name":"nodejs","version":"0.6.0","date":"2011-11-04","lts":false,"security":false},{"name":"nodejs","version":"0.7.0","date":"2012-01-17","lts":false,"security":false},{"name":"nodejs","version":"0.8.0","date":"2012-06-22","lts":false,"security":false},{"name":"nodejs","version":"0.9.0","date":"2012-07-20","lts":false,"security":false},{"name":"nodejs","version":"0.10.0","date":"2013-03-11","lts":false,"security":false},{"name":"nodejs","version":"0.11.0","date":"2013-03-28","lts":false,"security":false},{"name":"nodejs","version":"0.12.0","date":"2015-02-06","lts":false,"security":false},{"name":"nodejs","version":"4.0.0","date":"2015-09-08","lts":false,"security":false},{"name":"nodejs","version":"4.1.0","date":"2015-09-17","lts":false,"security":false},{"name":"nodejs","version":"4.2.0","date":"2015-10-12","lts":"Argon","security":false},{"name":"nodejs","version":"4.3.0","date":"2016-02-09","lts":"Argon","security":false},{"name":"nodejs","version":"4.4.0","date":"2016-03-08","lts":"Argon","security":false},{"name":"nodejs","version":"4.5.0","date":"2016-08-16","lts":"Argon","security":false},{"name":"nodejs","version":"4.6.0","date":"2016-09-27","lts":"Argon","security":true},{"name":"nodejs","version":"4.7.0","date":"2016-12-06","lts":"Argon","security":false},{"name":"nodejs","version":"4.8.0","date":"2017-02-21","lts":"Argon","security":false},{"name":"nodejs","version":"4.9.0","date":"2018-03-28","lts":"Argon","security":true},{"name":"nodejs","version":"5.0.0","date":"2015-10-29","lts":false,"security":false},{"name":"nodejs","version":"5.1.0","date":"2015-11-17","lts":false,"security":false},{"name":"nodejs","version":"5.2.0","date":"2015-12-09","lts":false,"security":false},{"name":"nodejs","version":"5.3.0","date":"2015-12-15","lts":false,"security":false},{"name":"nodejs","version":"5.4.0","date":"2016-01-06","lts":false,"security":false},{"name":"nodejs","version":"5.5.0","date":"2016-01-21","lts":false,"security":false},{"name":"nodejs","version":"5.6.0","date":"2016-02-09","lts":false,"security":false},{"name":"nodejs","version":"5.7.0","date":"2016-02-23","lts":false,"security":false},{"name":"nodejs","version":"5.8.0","date":"2016-03-09","lts":false,"security":false},{"name":"nodejs","version":"5.9.0","date":"2016-03-16","lts":false,"security":false},{"name":"nodejs","version":"5.10.0","date":"2016-04-01","lts":false,"security":false},{"name":"nodejs","version":"5.11.0","date":"2016-04-21","lts":false,"security":false},{"name":"nodejs","version":"5.12.0","date":"2016-06-23","lts":false,"security":false},{"name":"nodejs","version":"6.0.0","date":"2016-04-26","lts":false,"security":false},{"name":"nodejs","version":"6.1.0","date":"2016-05-05","lts":false,"security":false},{"name":"nodejs","version":"6.2.0","date":"2016-05-17","lts":false,"security":false},{"name":"nodejs","version":"6.3.0","date":"2016-07-06","lts":false,"security":false},{"name":"nodejs","version":"6.4.0","date":"2016-08-12","lts":false,"security":false},{"name":"nodejs","version":"6.5.0","date":"2016-08-26","lts":false,"security":false},{"name":"nodejs","version":"6.6.0","date":"2016-09-14","lts":false,"security":false},{"name":"nodejs","version":"6.7.0","date":"2016-09-27","lts":false,"security":true},{"name":"nodejs","version":"6.8.0","date":"2016-10-12","lts":false,"security":false},{"name":"nodejs","version":"6.9.0","date":"2016-10-18","lts":"Boron","security":false},{"name":"nodejs","version":"6.10.0","date":"2017-02-21","lts":"Boron","security":false},{"name":"nodejs","version":"6.11.0","date":"2017-06-06","lts":"Boron","security":false},{"name":"nodejs","version":"6.12.0","date":"2017-11-06","lts":"Boron","security":false},{"name":"nodejs","version":"6.13.0","date":"2018-02-10","lts":"Boron","security":false},{"name":"nodejs","version":"6.14.0","date":"2018-03-28","lts":"Boron","security":true},{"name":"nodejs","version":"6.15.0","date":"2018-11-27","lts":"Boron","security":true},{"name":"nodejs","version":"6.16.0","date":"2018-12-26","lts":"Boron","security":false},{"name":"nodejs","version":"6.17.0","date":"2019-02-28","lts":"Boron","security":true},{"name":"nodejs","version":"7.0.0","date":"2016-10-25","lts":false,"security":false},{"name":"nodejs","version":"7.1.0","date":"2016-11-08","lts":false,"security":false},{"name":"nodejs","version":"7.2.0","date":"2016-11-22","lts":false,"security":false},{"name":"nodejs","version":"7.3.0","date":"2016-12-20","lts":false,"security":false},{"name":"nodejs","version":"7.4.0","date":"2017-01-04","lts":false,"security":false},{"name":"nodejs","version":"7.5.0","date":"2017-01-31","lts":false,"security":false},{"name":"nodejs","version":"7.6.0","date":"2017-02-21","lts":false,"security":false},{"name":"nodejs","version":"7.7.0","date":"2017-02-28","lts":false,"security":false},{"name":"nodejs","version":"7.8.0","date":"2017-03-29","lts":false,"security":false},{"name":"nodejs","version":"7.9.0","date":"2017-04-11","lts":false,"security":false},{"name":"nodejs","version":"7.10.0","date":"2017-05-02","lts":false,"security":false},{"name":"nodejs","version":"8.0.0","date":"2017-05-30","lts":false,"security":false},{"name":"nodejs","version":"8.1.0","date":"2017-06-08","lts":false,"security":false},{"name":"nodejs","version":"8.2.0","date":"2017-07-19","lts":false,"security":false},{"name":"nodejs","version":"8.3.0","date":"2017-08-08","lts":false,"security":false},{"name":"nodejs","version":"8.4.0","date":"2017-08-15","lts":false,"security":false},{"name":"nodejs","version":"8.5.0","date":"2017-09-12","lts":false,"security":false},{"name":"nodejs","version":"8.6.0","date":"2017-09-26","lts":false,"security":false},{"name":"nodejs","version":"8.7.0","date":"2017-10-11","lts":false,"security":false},{"name":"nodejs","version":"8.8.0","date":"2017-10-24","lts":false,"security":false},{"name":"nodejs","version":"8.9.0","date":"2017-10-31","lts":"Carbon","security":false},{"name":"nodejs","version":"8.10.0","date":"2018-03-06","lts":"Carbon","security":false},{"name":"nodejs","version":"8.11.0","date":"2018-03-28","lts":"Carbon","security":true},{"name":"nodejs","version":"8.12.0","date":"2018-09-10","lts":"Carbon","security":false},{"name":"nodejs","version":"8.13.0","date":"2018-11-20","lts":"Carbon","security":false},{"name":"nodejs","version":"8.14.0","date":"2018-11-27","lts":"Carbon","security":true},{"name":"nodejs","version":"8.15.0","date":"2018-12-26","lts":"Carbon","security":false},{"name":"nodejs","version":"8.16.0","date":"2019-04-16","lts":"Carbon","security":false},{"name":"nodejs","version":"8.17.0","date":"2019-12-17","lts":"Carbon","security":true},{"name":"nodejs","version":"9.0.0","date":"2017-10-31","lts":false,"security":false},{"name":"nodejs","version":"9.1.0","date":"2017-11-07","lts":false,"security":false},{"name":"nodejs","version":"9.2.0","date":"2017-11-14","lts":false,"security":false},{"name":"nodejs","version":"9.3.0","date":"2017-12-12","lts":false,"security":false},{"name":"nodejs","version":"9.4.0","date":"2018-01-10","lts":false,"security":false},{"name":"nodejs","version":"9.5.0","date":"2018-01-31","lts":false,"security":false},{"name":"nodejs","version":"9.6.0","date":"2018-02-21","lts":false,"security":false},{"name":"nodejs","version":"9.7.0","date":"2018-03-01","lts":false,"security":false},{"name":"nodejs","version":"9.8.0","date":"2018-03-07","lts":false,"security":false},{"name":"nodejs","version":"9.9.0","date":"2018-03-21","lts":false,"security":false},{"name":"nodejs","version":"9.10.0","date":"2018-03-28","lts":false,"security":true},{"name":"nodejs","version":"9.11.0","date":"2018-04-04","lts":false,"security":false},{"name":"nodejs","version":"10.0.0","date":"2018-04-24","lts":false,"security":false},{"name":"nodejs","version":"10.1.0","date":"2018-05-08","lts":false,"security":false},{"name":"nodejs","version":"10.2.0","date":"2018-05-23","lts":false,"security":false},{"name":"nodejs","version":"10.3.0","date":"2018-05-29","lts":false,"security":false},{"name":"nodejs","version":"10.4.0","date":"2018-06-06","lts":false,"security":false},{"name":"nodejs","version":"10.5.0","date":"2018-06-20","lts":false,"security":false},{"name":"nodejs","version":"10.6.0","date":"2018-07-04","lts":false,"security":false},{"name":"nodejs","version":"10.7.0","date":"2018-07-18","lts":false,"security":false},{"name":"nodejs","version":"10.8.0","date":"2018-08-01","lts":false,"security":false},{"name":"nodejs","version":"10.9.0","date":"2018-08-15","lts":false,"security":false},{"name":"nodejs","version":"10.10.0","date":"2018-09-06","lts":false,"security":false},{"name":"nodejs","version":"10.11.0","date":"2018-09-19","lts":false,"security":false},{"name":"nodejs","version":"10.12.0","date":"2018-10-10","lts":false,"security":false},{"name":"nodejs","version":"10.13.0","date":"2018-10-30","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.14.0","date":"2018-11-27","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.15.0","date":"2018-12-26","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.16.0","date":"2019-05-28","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.17.0","date":"2019-10-22","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.18.0","date":"2019-12-17","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.19.0","date":"2020-02-05","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.20.0","date":"2020-03-26","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.21.0","date":"2020-06-02","lts":"Dubnium","security":true},{"name":"nodejs","version":"10.22.0","date":"2020-07-21","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.23.0","date":"2020-10-27","lts":"Dubnium","security":false},{"name":"nodejs","version":"10.24.0","date":"2021-02-23","lts":"Dubnium","security":true},{"name":"nodejs","version":"11.0.0","date":"2018-10-23","lts":false,"security":false},{"name":"nodejs","version":"11.1.0","date":"2018-10-30","lts":false,"security":false},{"name":"nodejs","version":"11.2.0","date":"2018-11-15","lts":false,"security":false},{"name":"nodejs","version":"11.3.0","date":"2018-11-27","lts":false,"security":true},{"name":"nodejs","version":"11.4.0","date":"2018-12-07","lts":false,"security":false},{"name":"nodejs","version":"11.5.0","date":"2018-12-18","lts":false,"security":false},{"name":"nodejs","version":"11.6.0","date":"2018-12-26","lts":false,"security":false},{"name":"nodejs","version":"11.7.0","date":"2019-01-17","lts":false,"security":false},{"name":"nodejs","version":"11.8.0","date":"2019-01-24","lts":false,"security":false},{"name":"nodejs","version":"11.9.0","date":"2019-01-30","lts":false,"security":false},{"name":"nodejs","version":"11.10.0","date":"2019-02-14","lts":false,"security":false},{"name":"nodejs","version":"11.11.0","date":"2019-03-05","lts":false,"security":false},{"name":"nodejs","version":"11.12.0","date":"2019-03-14","lts":false,"security":false},{"name":"nodejs","version":"11.13.0","date":"2019-03-28","lts":false,"security":false},{"name":"nodejs","version":"11.14.0","date":"2019-04-10","lts":false,"security":false},{"name":"nodejs","version":"11.15.0","date":"2019-04-30","lts":false,"security":false},{"name":"nodejs","version":"12.0.0","date":"2019-04-23","lts":false,"security":false},{"name":"nodejs","version":"12.1.0","date":"2019-04-29","lts":false,"security":false},{"name":"nodejs","version":"12.2.0","date":"2019-05-07","lts":false,"security":false},{"name":"nodejs","version":"12.3.0","date":"2019-05-21","lts":false,"security":false},{"name":"nodejs","version":"12.4.0","date":"2019-06-04","lts":false,"security":false},{"name":"nodejs","version":"12.5.0","date":"2019-06-26","lts":false,"security":false},{"name":"nodejs","version":"12.6.0","date":"2019-07-03","lts":false,"security":false},{"name":"nodejs","version":"12.7.0","date":"2019-07-23","lts":false,"security":false},{"name":"nodejs","version":"12.8.0","date":"2019-08-06","lts":false,"security":false},{"name":"nodejs","version":"12.9.0","date":"2019-08-20","lts":false,"security":false},{"name":"nodejs","version":"12.10.0","date":"2019-09-04","lts":false,"security":false},{"name":"nodejs","version":"12.11.0","date":"2019-09-25","lts":false,"security":false},{"name":"nodejs","version":"12.12.0","date":"2019-10-11","lts":false,"security":false},{"name":"nodejs","version":"12.13.0","date":"2019-10-21","lts":"Erbium","security":false},{"name":"nodejs","version":"12.14.0","date":"2019-12-17","lts":"Erbium","security":true},{"name":"nodejs","version":"12.15.0","date":"2020-02-05","lts":"Erbium","security":true},{"name":"nodejs","version":"12.16.0","date":"2020-02-11","lts":"Erbium","security":false},{"name":"nodejs","version":"12.17.0","date":"2020-05-26","lts":"Erbium","security":false},{"name":"nodejs","version":"12.18.0","date":"2020-06-02","lts":"Erbium","security":true},{"name":"nodejs","version":"12.19.0","date":"2020-10-06","lts":"Erbium","security":false},{"name":"nodejs","version":"12.20.0","date":"2020-11-24","lts":"Erbium","security":false},{"name":"nodejs","version":"12.21.0","date":"2021-02-23","lts":"Erbium","security":true},{"name":"nodejs","version":"12.22.0","date":"2021-03-30","lts":"Erbium","security":false},{"name":"nodejs","version":"13.0.0","date":"2019-10-22","lts":false,"security":false},{"name":"nodejs","version":"13.1.0","date":"2019-11-05","lts":false,"security":false},{"name":"nodejs","version":"13.2.0","date":"2019-11-21","lts":false,"security":false},{"name":"nodejs","version":"13.3.0","date":"2019-12-03","lts":false,"security":false},{"name":"nodejs","version":"13.4.0","date":"2019-12-17","lts":false,"security":true},{"name":"nodejs","version":"13.5.0","date":"2019-12-18","lts":false,"security":false},{"name":"nodejs","version":"13.6.0","date":"2020-01-07","lts":false,"security":false},{"name":"nodejs","version":"13.7.0","date":"2020-01-21","lts":false,"security":false},{"name":"nodejs","version":"13.8.0","date":"2020-02-05","lts":false,"security":true},{"name":"nodejs","version":"13.9.0","date":"2020-02-18","lts":false,"security":false},{"name":"nodejs","version":"13.10.0","date":"2020-03-04","lts":false,"security":false},{"name":"nodejs","version":"13.11.0","date":"2020-03-12","lts":false,"security":false},{"name":"nodejs","version":"13.12.0","date":"2020-03-26","lts":false,"security":false},{"name":"nodejs","version":"13.13.0","date":"2020-04-14","lts":false,"security":false},{"name":"nodejs","version":"13.14.0","date":"2020-04-29","lts":false,"security":false},{"name":"nodejs","version":"14.0.0","date":"2020-04-21","lts":false,"security":false},{"name":"nodejs","version":"14.1.0","date":"2020-04-29","lts":false,"security":false},{"name":"nodejs","version":"14.2.0","date":"2020-05-05","lts":false,"security":false},{"name":"nodejs","version":"14.3.0","date":"2020-05-19","lts":false,"security":false},{"name":"nodejs","version":"14.4.0","date":"2020-06-02","lts":false,"security":true},{"name":"nodejs","version":"14.5.0","date":"2020-06-30","lts":false,"security":false},{"name":"nodejs","version":"14.6.0","date":"2020-07-20","lts":false,"security":false},{"name":"nodejs","version":"14.7.0","date":"2020-07-29","lts":false,"security":false},{"name":"nodejs","version":"14.8.0","date":"2020-08-11","lts":false,"security":false},{"name":"nodejs","version":"14.9.0","date":"2020-08-27","lts":false,"security":false},{"name":"nodejs","version":"14.10.0","date":"2020-09-08","lts":false,"security":false},{"name":"nodejs","version":"14.11.0","date":"2020-09-15","lts":false,"security":true},{"name":"nodejs","version":"14.12.0","date":"2020-09-22","lts":false,"security":false},{"name":"nodejs","version":"14.13.0","date":"2020-09-29","lts":false,"security":false},{"name":"nodejs","version":"14.14.0","date":"2020-10-15","lts":false,"security":false},{"name":"nodejs","version":"14.15.0","date":"2020-10-27","lts":"Fermium","security":false},{"name":"nodejs","version":"14.16.0","date":"2021-02-23","lts":"Fermium","security":true},{"name":"nodejs","version":"14.17.0","date":"2021-05-11","lts":"Fermium","security":false},{"name":"nodejs","version":"14.18.0","date":"2021-09-28","lts":"Fermium","security":false},{"name":"nodejs","version":"15.0.0","date":"2020-10-20","lts":false,"security":false},{"name":"nodejs","version":"15.1.0","date":"2020-11-04","lts":false,"security":false},{"name":"nodejs","version":"15.2.0","date":"2020-11-10","lts":false,"security":false},{"name":"nodejs","version":"15.3.0","date":"2020-11-24","lts":false,"security":false},{"name":"nodejs","version":"15.4.0","date":"2020-12-09","lts":false,"security":false},{"name":"nodejs","version":"15.5.0","date":"2020-12-22","lts":false,"security":false},{"name":"nodejs","version":"15.6.0","date":"2021-01-14","lts":false,"security":false},{"name":"nodejs","version":"15.7.0","date":"2021-01-25","lts":false,"security":false},{"name":"nodejs","version":"15.8.0","date":"2021-02-02","lts":false,"security":false},{"name":"nodejs","version":"15.9.0","date":"2021-02-18","lts":false,"security":false},{"name":"nodejs","version":"15.10.0","date":"2021-02-23","lts":false,"security":true},{"name":"nodejs","version":"15.11.0","date":"2021-03-03","lts":false,"security":false},{"name":"nodejs","version":"15.12.0","date":"2021-03-17","lts":false,"security":false},{"name":"nodejs","version":"15.13.0","date":"2021-03-31","lts":false,"security":false},{"name":"nodejs","version":"15.14.0","date":"2021-04-06","lts":false,"security":false},{"name":"nodejs","version":"16.0.0","date":"2021-04-20","lts":false,"security":false},{"name":"nodejs","version":"16.1.0","date":"2021-05-04","lts":false,"security":false},{"name":"nodejs","version":"16.2.0","date":"2021-05-19","lts":false,"security":false},{"name":"nodejs","version":"16.3.0","date":"2021-06-03","lts":false,"security":false},{"name":"nodejs","version":"16.4.0","date":"2021-06-23","lts":false,"security":false},{"name":"nodejs","version":"16.5.0","date":"2021-07-14","lts":false,"security":false},{"name":"nodejs","version":"16.6.0","date":"2021-07-29","lts":false,"security":true},{"name":"nodejs","version":"16.7.0","date":"2021-08-18","lts":false,"security":false},{"name":"nodejs","version":"16.8.0","date":"2021-08-25","lts":false,"security":false},{"name":"nodejs","version":"16.9.0","date":"2021-09-07","lts":false,"security":false},{"name":"nodejs","version":"16.10.0","date":"2021-09-22","lts":false,"security":false},{"name":"nodejs","version":"16.11.0","date":"2021-10-08","lts":false,"security":false},{"name":"nodejs","version":"16.12.0","date":"2021-10-20","lts":false,"security":false},{"name":"nodejs","version":"17.0.0","date":"2021-10-19","lts":false,"security":false}] \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json b/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json
new file mode 100644
index 0000000000..c77eb68d68
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/node-releases/data/release-schedule/release-schedule.json
@@ -0,0 +1 @@
+{"v0.8":{"start":"2012-06-25","end":"2014-07-31"},"v0.10":{"start":"2013-03-11","end":"2016-10-31"},"v0.12":{"start":"2015-02-06","end":"2016-12-31"},"v4":{"start":"2015-09-08","lts":"2015-10-12","maintenance":"2017-04-01","end":"2018-04-30","codename":"Argon"},"v5":{"start":"2015-10-29","maintenance":"2016-04-30","end":"2016-06-30"},"v6":{"start":"2016-04-26","lts":"2016-10-18","maintenance":"2018-04-30","end":"2019-04-30","codename":"Boron"},"v7":{"start":"2016-10-25","maintenance":"2017-04-30","end":"2017-06-30"},"v8":{"start":"2017-05-30","lts":"2017-10-31","maintenance":"2019-01-01","end":"2019-12-31","codename":"Carbon"},"v9":{"start":"2017-10-01","maintenance":"2018-04-01","end":"2018-06-30"},"v10":{"start":"2018-04-24","lts":"2018-10-30","maintenance":"2020-05-19","end":"2021-04-30","codename":"Dubnium"},"v11":{"start":"2018-10-23","maintenance":"2019-04-22","end":"2019-06-01"},"v12":{"start":"2019-04-23","lts":"2019-10-21","maintenance":"2020-11-30","end":"2022-04-30","codename":"Erbium"},"v13":{"start":"2019-10-22","maintenance":"2020-04-01","end":"2020-06-01"},"v14":{"start":"2020-04-21","lts":"2020-10-27","maintenance":"2021-10-19","end":"2023-04-30","codename":"Fermium"},"v15":{"start":"2020-10-20","maintenance":"2021-04-01","end":"2021-06-01"},"v16":{"start":"2021-04-20","lts":"2021-10-26","maintenance":"2022-10-18","end":"2024-04-30","codename":""},"v17":{"start":"2021-10-19","maintenance":"2022-04-01","end":"2022-06-01"},"v18":{"start":"2022-04-19","lts":"2022-10-25","maintenance":"2023-10-18","end":"2025-04-30","codename":""}} \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/node-releases/package.json b/tools/node_modules/eslint/node_modules/node-releases/package.json
new file mode 100644
index 0000000000..efbc2eee58
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/node-releases/package.json
@@ -0,0 +1,18 @@
+{
+ "name": "node-releases",
+ "version": "2.0.1",
+ "description": "Node.js releases data",
+ "scripts": {
+ "build": "node scripts/build.js"
+ },
+ "repository": "chicoxyzzy/node-releases",
+ "keywords": [
+ "nodejs",
+ "releases"
+ ],
+ "author": "Sergey Rubanov <chi187@gmail.com>",
+ "license": "MIT",
+ "devDependencies": {
+ "semver": "^7.3.5"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/parse-entities/decode-entity.browser.js b/tools/node_modules/eslint/node_modules/parse-entities/decode-entity.browser.js
new file mode 100644
index 0000000000..feb3266420
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/parse-entities/decode-entity.browser.js
@@ -0,0 +1,30 @@
+'use strict'
+
+/* eslint-env browser */
+
+var el
+
+var semicolon = 59 // ';'
+
+module.exports = decodeEntity
+
+function decodeEntity(characters) {
+ var entity = '&' + characters + ';'
+ var char
+
+ el = el || document.createElement('i')
+ el.innerHTML = entity
+ char = el.textContent
+
+ // Some entities do not require the closing semicolon (`&not` - for instance),
+ // which leads to situations where parsing the assumed entity of &notit; will
+ // result in the string `¬it;`. When we encounter a trailing semicolon after
+ // parsing and the entity to decode was not a semicolon (`&semi;`), we can
+ // assume that the matching was incomplete
+ if (char.charCodeAt(char.length - 1) === semicolon && characters !== 'semi') {
+ return false
+ }
+
+ // If the decoded string is equal to the input, the entity was not valid
+ return char === entity ? false : char
+}
diff --git a/tools/node_modules/eslint/node_modules/parse-entities/decode-entity.js b/tools/node_modules/eslint/node_modules/parse-entities/decode-entity.js
new file mode 100644
index 0000000000..87c3b1e0bc
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/parse-entities/decode-entity.js
@@ -0,0 +1,13 @@
+'use strict'
+
+var characterEntities = require('character-entities')
+
+module.exports = decodeEntity
+
+var own = {}.hasOwnProperty
+
+function decodeEntity(characters) {
+ return own.call(characterEntities, characters)
+ ? characterEntities[characters]
+ : false
+}
diff --git a/tools/node_modules/eslint/node_modules/parse-entities/index.js b/tools/node_modules/eslint/node_modules/parse-entities/index.js
new file mode 100644
index 0000000000..106d6d86d4
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/parse-entities/index.js
@@ -0,0 +1,451 @@
+'use strict'
+
+var legacy = require('character-entities-legacy')
+var invalid = require('character-reference-invalid')
+var decimal = require('is-decimal')
+var hexadecimal = require('is-hexadecimal')
+var alphanumerical = require('is-alphanumerical')
+var decodeEntity = require('./decode-entity')
+
+module.exports = parseEntities
+
+var own = {}.hasOwnProperty
+var fromCharCode = String.fromCharCode
+var noop = Function.prototype
+
+// Default settings.
+var defaults = {
+ warning: null,
+ reference: null,
+ text: null,
+ warningContext: null,
+ referenceContext: null,
+ textContext: null,
+ position: {},
+ additional: null,
+ attribute: false,
+ nonTerminated: true
+}
+
+// Characters.
+var tab = 9 // '\t'
+var lineFeed = 10 // '\n'
+var formFeed = 12 // '\f'
+var space = 32 // ' '
+var ampersand = 38 // '&'
+var semicolon = 59 // ';'
+var lessThan = 60 // '<'
+var equalsTo = 61 // '='
+var numberSign = 35 // '#'
+var uppercaseX = 88 // 'X'
+var lowercaseX = 120 // 'x'
+var replacementCharacter = 65533 // '�'
+
+// Reference types.
+var name = 'named'
+var hexa = 'hexadecimal'
+var deci = 'decimal'
+
+// Map of bases.
+var bases = {}
+
+bases[hexa] = 16
+bases[deci] = 10
+
+// Map of types to tests.
+// Each type of character reference accepts different characters.
+// This test is used to detect whether a reference has ended (as the semicolon
+// is not strictly needed).
+var tests = {}
+
+tests[name] = alphanumerical
+tests[deci] = decimal
+tests[hexa] = hexadecimal
+
+// Warning types.
+var namedNotTerminated = 1
+var numericNotTerminated = 2
+var namedEmpty = 3
+var numericEmpty = 4
+var namedUnknown = 5
+var numericDisallowed = 6
+var numericProhibited = 7
+
+// Warning messages.
+var messages = {}
+
+messages[namedNotTerminated] =
+ 'Named character references must be terminated by a semicolon'
+messages[numericNotTerminated] =
+ 'Numeric character references must be terminated by a semicolon'
+messages[namedEmpty] = 'Named character references cannot be empty'
+messages[numericEmpty] = 'Numeric character references cannot be empty'
+messages[namedUnknown] = 'Named character references must be known'
+messages[numericDisallowed] =
+ 'Numeric character references cannot be disallowed'
+messages[numericProhibited] =
+ 'Numeric character references cannot be outside the permissible Unicode range'
+
+// Wrap to ensure clean parameters are given to `parse`.
+function parseEntities(value, options) {
+ var settings = {}
+ var option
+ var key
+
+ if (!options) {
+ options = {}
+ }
+
+ for (key in defaults) {
+ option = options[key]
+ settings[key] =
+ option === null || option === undefined ? defaults[key] : option
+ }
+
+ if (settings.position.indent || settings.position.start) {
+ settings.indent = settings.position.indent || []
+ settings.position = settings.position.start
+ }
+
+ return parse(value, settings)
+}
+
+// Parse entities.
+// eslint-disable-next-line complexity
+function parse(value, settings) {
+ var additional = settings.additional
+ var nonTerminated = settings.nonTerminated
+ var handleText = settings.text
+ var handleReference = settings.reference
+ var handleWarning = settings.warning
+ var textContext = settings.textContext
+ var referenceContext = settings.referenceContext
+ var warningContext = settings.warningContext
+ var pos = settings.position
+ var indent = settings.indent || []
+ var length = value.length
+ var index = 0
+ var lines = -1
+ var column = pos.column || 1
+ var line = pos.line || 1
+ var queue = ''
+ var result = []
+ var entityCharacters
+ var namedEntity
+ var terminated
+ var characters
+ var character
+ var reference
+ var following
+ var warning
+ var reason
+ var output
+ var entity
+ var begin
+ var start
+ var type
+ var test
+ var prev
+ var next
+ var diff
+ var end
+
+ if (typeof additional === 'string') {
+ additional = additional.charCodeAt(0)
+ }
+
+ // Cache the current point.
+ prev = now()
+
+ // Wrap `handleWarning`.
+ warning = handleWarning ? parseError : noop
+
+ // Ensure the algorithm walks over the first character and the end
+ // (inclusive).
+ index--
+ length++
+
+ while (++index < length) {
+ // If the previous character was a newline.
+ if (character === lineFeed) {
+ column = indent[lines] || 1
+ }
+
+ character = value.charCodeAt(index)
+
+ if (character === ampersand) {
+ following = value.charCodeAt(index + 1)
+
+ // The behaviour depends on the identity of the next character.
+ if (
+ following === tab ||
+ following === lineFeed ||
+ following === formFeed ||
+ following === space ||
+ following === ampersand ||
+ following === lessThan ||
+ following !== following ||
+ (additional && following === additional)
+ ) {
+ // Not a character reference.
+ // No characters are consumed, and nothing is returned.
+ // This is not an error, either.
+ queue += fromCharCode(character)
+ column++
+
+ continue
+ }
+
+ start = index + 1
+ begin = start
+ end = start
+
+ if (following === numberSign) {
+ // Numerical entity.
+ end = ++begin
+
+ // The behaviour further depends on the next character.
+ following = value.charCodeAt(end)
+
+ if (following === uppercaseX || following === lowercaseX) {
+ // ASCII hex digits.
+ type = hexa
+ end = ++begin
+ } else {
+ // ASCII digits.
+ type = deci
+ }
+ } else {
+ // Named entity.
+ type = name
+ }
+
+ entityCharacters = ''
+ entity = ''
+ characters = ''
+ test = tests[type]
+ end--
+
+ while (++end < length) {
+ following = value.charCodeAt(end)
+
+ if (!test(following)) {
+ break
+ }
+
+ characters += fromCharCode(following)
+
+ // Check if we can match a legacy named reference.
+ // If so, we cache that as the last viable named reference.
+ // This ensures we do not need to walk backwards later.
+ if (type === name && own.call(legacy, characters)) {
+ entityCharacters = characters
+ entity = legacy[characters]
+ }
+ }
+
+ terminated = value.charCodeAt(end) === semicolon
+
+ if (terminated) {
+ end++
+
+ namedEntity = type === name ? decodeEntity(characters) : false
+
+ if (namedEntity) {
+ entityCharacters = characters
+ entity = namedEntity
+ }
+ }
+
+ diff = 1 + end - start
+
+ if (!terminated && !nonTerminated) {
+ // Empty.
+ } else if (!characters) {
+ // An empty (possible) entity is valid, unless it’s numeric (thus an
+ // ampersand followed by an octothorp).
+ if (type !== name) {
+ warning(numericEmpty, diff)
+ }
+ } else if (type === name) {
+ // An ampersand followed by anything unknown, and not terminated, is
+ // invalid.
+ if (terminated && !entity) {
+ warning(namedUnknown, 1)
+ } else {
+ // If theres something after an entity name which is not known, cap
+ // the reference.
+ if (entityCharacters !== characters) {
+ end = begin + entityCharacters.length
+ diff = 1 + end - begin
+ terminated = false
+ }
+
+ // If the reference is not terminated, warn.
+ if (!terminated) {
+ reason = entityCharacters ? namedNotTerminated : namedEmpty
+
+ if (settings.attribute) {
+ following = value.charCodeAt(end)
+
+ if (following === equalsTo) {
+ warning(reason, diff)
+ entity = null
+ } else if (alphanumerical(following)) {
+ entity = null
+ } else {
+ warning(reason, diff)
+ }
+ } else {
+ warning(reason, diff)
+ }
+ }
+ }
+
+ reference = entity
+ } else {
+ if (!terminated) {
+ // All non-terminated numeric entities are not rendered, and trigger a
+ // warning.
+ warning(numericNotTerminated, diff)
+ }
+
+ // When terminated and number, parse as either hexadecimal or decimal.
+ reference = parseInt(characters, bases[type])
+
+ // Trigger a warning when the parsed number is prohibited, and replace
+ // with replacement character.
+ if (prohibited(reference)) {
+ warning(numericProhibited, diff)
+ reference = fromCharCode(replacementCharacter)
+ } else if (reference in invalid) {
+ // Trigger a warning when the parsed number is disallowed, and replace
+ // by an alternative.
+ warning(numericDisallowed, diff)
+ reference = invalid[reference]
+ } else {
+ // Parse the number.
+ output = ''
+
+ // Trigger a warning when the parsed number should not be used.
+ if (disallowed(reference)) {
+ warning(numericDisallowed, diff)
+ }
+
+ // Stringify the number.
+ if (reference > 0xffff) {
+ reference -= 0x10000
+ output += fromCharCode((reference >>> (10 & 0x3ff)) | 0xd800)
+ reference = 0xdc00 | (reference & 0x3ff)
+ }
+
+ reference = output + fromCharCode(reference)
+ }
+ }
+
+ // Found it!
+ // First eat the queued characters as normal text, then eat an entity.
+ if (reference) {
+ flush()
+
+ prev = now()
+ index = end - 1
+ column += end - start + 1
+ result.push(reference)
+ next = now()
+ next.offset++
+
+ if (handleReference) {
+ handleReference.call(
+ referenceContext,
+ reference,
+ {start: prev, end: next},
+ value.slice(start - 1, end)
+ )
+ }
+
+ prev = next
+ } else {
+ // If we could not find a reference, queue the checked characters (as
+ // normal characters), and move the pointer to their end.
+ // This is possible because we can be certain neither newlines nor
+ // ampersands are included.
+ characters = value.slice(start - 1, end)
+ queue += characters
+ column += characters.length
+ index = end - 1
+ }
+ } else {
+ // Handle anything other than an ampersand, including newlines and EOF.
+ if (
+ character === 10 // Line feed
+ ) {
+ line++
+ lines++
+ column = 0
+ }
+
+ if (character === character) {
+ queue += fromCharCode(character)
+ column++
+ } else {
+ flush()
+ }
+ }
+ }
+
+ // Return the reduced nodes.
+ return result.join('')
+
+ // Get current position.
+ function now() {
+ return {
+ line: line,
+ column: column,
+ offset: index + (pos.offset || 0)
+ }
+ }
+
+ // “Throw” a parse-error: a warning.
+ function parseError(code, offset) {
+ var position = now()
+
+ position.column += offset
+ position.offset += offset
+
+ handleWarning.call(warningContext, messages[code], position, code)
+ }
+
+ // Flush `queue` (normal text).
+ // Macro invoked before each entity and at the end of `value`.
+ // Does nothing when `queue` is empty.
+ function flush() {
+ if (queue) {
+ result.push(queue)
+
+ if (handleText) {
+ handleText.call(textContext, queue, {start: prev, end: now()})
+ }
+
+ queue = ''
+ }
+ }
+}
+
+// Check if `character` is outside the permissible unicode range.
+function prohibited(code) {
+ return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff
+}
+
+// Check if `character` is disallowed.
+function disallowed(code) {
+ return (
+ (code >= 0x0001 && code <= 0x0008) ||
+ code === 0x000b ||
+ (code >= 0x000d && code <= 0x001f) ||
+ (code >= 0x007f && code <= 0x009f) ||
+ (code >= 0xfdd0 && code <= 0xfdef) ||
+ (code & 0xffff) === 0xffff ||
+ (code & 0xffff) === 0xfffe
+ )
+}
diff --git a/tools/node_modules/eslint/node_modules/parse-entities/license b/tools/node_modules/eslint/node_modules/parse-entities/license
new file mode 100644
index 0000000000..611b67581b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/parse-entities/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2015 Titus Wormer <mailto:tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/parse-entities/package.json b/tools/node_modules/eslint/node_modules/parse-entities/package.json
new file mode 100644
index 0000000000..60e191fff0
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/parse-entities/package.json
@@ -0,0 +1,99 @@
+{
+ "name": "parse-entities",
+ "version": "2.0.0",
+ "description": "Parse HTML character references: fast, spec-compliant, positional information",
+ "license": "MIT",
+ "keywords": [
+ "parse",
+ "html",
+ "character",
+ "reference",
+ "entity",
+ "entities"
+ ],
+ "repository": "wooorm/parse-entities",
+ "bugs": "https://github.com/wooorm/parse-entities/issues",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "browser": {
+ "./decode-entity.js": "./decode-entity.browser.js"
+ },
+ "react-native": {
+ "./decode-entity.js": "./decode-entity.js"
+ },
+ "files": [
+ "index.js",
+ "decode-entity.js",
+ "decode-entity.browser.js",
+ "types/index.d.ts"
+ ],
+ "types": "types/index.d.ts",
+ "dependencies": {
+ "character-entities": "^1.0.0",
+ "character-entities-legacy": "^1.0.0",
+ "character-reference-invalid": "^1.0.0",
+ "is-alphanumerical": "^1.0.0",
+ "is-decimal": "^1.0.0",
+ "is-hexadecimal": "^1.0.0"
+ },
+ "devDependencies": {
+ "browserify": "^16.0.0",
+ "dtslint": "^2.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tape-run": "^6.0.0",
+ "tinyify": "^2.0.0",
+ "xo": "^0.25.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.{js,ts}\" && xo --fix",
+ "build-bundle": "browserify . -s parseEntities > parse-entities.js",
+ "build-mangle": "browserify . -s parseEntities -p tinyify > parse-entities.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test-browser": "browserify test.js | tape-run",
+ "test-types": "dtslint types",
+ "test": "npm run format && npm run build && npm run test-coverage && npm run test-types"
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "rules": {
+ "no-self-compare": "off",
+ "guard-for-in": "off",
+ "max-depth": "off"
+ },
+ "ignores": [
+ "parse-entities.js"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/parse-entities/readme.md b/tools/node_modules/eslint/node_modules/parse-entities/readme.md
new file mode 100644
index 0000000000..5ca60e7a87
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/parse-entities/readme.md
@@ -0,0 +1,217 @@
+# parse-entities
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+
+Parse HTML character references: fast, spec-compliant, positional
+information.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install parse-entities
+```
+
+## Use
+
+```js
+var decode = require('parse-entities')
+
+decode('alpha &amp bravo')
+// => alpha & bravo
+
+decode('charlie &copycat; delta')
+// => charlie ©cat; delta
+
+decode('echo &copy; foxtrot &#8800; golf &#x1D306; hotel')
+// => echo © foxtrot ≠ golf 𝌆 hotel
+```
+
+## API
+
+## `parseEntities(value[, options])`
+
+##### `options`
+
+###### `options.additional`
+
+Additional character to accept (`string?`, default: `''`).
+This allows other characters, without error, when following an ampersand.
+
+###### `options.attribute`
+
+Whether to parse `value` as an attribute value (`boolean?`, default:
+`false`).
+
+###### `options.nonTerminated`
+
+Whether to allow non-terminated entities (`boolean`, default: `true`).
+For example, `&copycat` for `©cat`. This behaviour is spec-compliant but
+can lead to unexpected results.
+
+###### `options.warning`
+
+Error handler ([`Function?`][warning]).
+
+###### `options.text`
+
+Text handler ([`Function?`][text]).
+
+###### `options.reference`
+
+Reference handler ([`Function?`][reference]).
+
+###### `options.warningContext`
+
+Context used when invoking `warning` (`'*'`, optional).
+
+###### `options.textContext`
+
+Context used when invoking `text` (`'*'`, optional).
+
+###### `options.referenceContext`
+
+Context used when invoking `reference` (`'*'`, optional)
+
+###### `options.position`
+
+Starting `position` of `value` (`Location` or `Position`, optional). Useful
+when dealing with values nested in some sort of syntax tree. The default is:
+
+```js
+{
+ start: {line: 1, column: 1, offset: 0},
+ indent: []
+}
+```
+
+##### Returns
+
+`string` — Decoded `value`.
+
+### `function warning(reason, position, code)`
+
+Error handler.
+
+##### Context
+
+`this` refers to `warningContext` when given to `parseEntities`.
+
+##### Parameters
+
+###### `reason`
+
+Human-readable reason for triggering a parse error (`string`).
+
+###### `position`
+
+Place at which the parse error occurred (`Position`).
+
+###### `code`
+
+Identifier of reason for triggering a parse error (`number`).
+
+The following codes are used:
+
+| Code | Example | Note |
+| ---- | ------------------ | --------------------------------------------- |
+| `1` | `foo &amp bar` | Missing semicolon (named) |
+| `2` | `foo &#123 bar` | Missing semicolon (numeric) |
+| `3` | `Foo &bar baz` | Ampersand did not start a reference |
+| `4` | `Foo &#` | Empty reference |
+| `5` | `Foo &bar; baz` | Unknown entity |
+| `6` | `Foo &#128; baz` | [Disallowed reference][invalid] |
+| `7` | `Foo &#xD800; baz` | Prohibited: outside permissible unicode range |
+
+### `function text(value, location)`
+
+Text handler.
+
+##### Context
+
+`this` refers to `textContext` when given to `parseEntities`.
+
+##### Parameters
+
+###### `value`
+
+String of content (`string`).
+
+###### `location`
+
+Location at which `value` starts and ends (`Location`).
+
+### `function reference(value, location, source)`
+
+Character reference handler.
+
+##### Context
+
+`this` refers to `referenceContext` when given to `parseEntities`.
+
+##### Parameters
+
+###### `value`
+
+Encoded character reference (`string`).
+
+###### `location`
+
+Location at which `value` starts and ends (`Location`).
+
+###### `source`
+
+Source of character reference (`Location`).
+
+## Related
+
+* [`stringify-entities`](https://github.com/wooorm/stringify-entities)
+ — Encode HTML character references
+* [`character-entities`](https://github.com/wooorm/character-entities)
+ — Info on character entities
+* [`character-entities-html4`](https://github.com/wooorm/character-entities-html4)
+ — Info on HTML4 character entities
+* [`character-entities-legacy`](https://github.com/wooorm/character-entities-legacy)
+ — Info on legacy character entities
+* [`character-reference-invalid`](https://github.com/wooorm/character-reference-invalid)
+ — Info on invalid numeric character references
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definitions -->
+
+[build-badge]: https://img.shields.io/travis/wooorm/parse-entities.svg
+
+[build]: https://travis-ci.org/wooorm/parse-entities
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/wooorm/parse-entities.svg
+
+[coverage]: https://codecov.io/github/wooorm/parse-entities
+
+[downloads-badge]: https://img.shields.io/npm/dm/parse-entities.svg
+
+[downloads]: https://www.npmjs.com/package/parse-entities
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/parse-entities.svg
+
+[size]: https://bundlephobia.com/result?p=parse-entities
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[warning]: #function-warningreason-position-code
+
+[text]: #function-textvalue-location
+
+[reference]: #function-referencevalue-location-source
+
+[invalid]: https://github.com/wooorm/character-reference-invalid
diff --git a/tools/node_modules/eslint/node_modules/picocolors/LICENSE b/tools/node_modules/eslint/node_modules/picocolors/LICENSE
new file mode 100644
index 0000000000..496098c6e8
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/picocolors/LICENSE
@@ -0,0 +1,15 @@
+ISC License
+
+Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/picocolors/README.md b/tools/node_modules/eslint/node_modules/picocolors/README.md
new file mode 100644
index 0000000000..8e47aa8eea
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/picocolors/README.md
@@ -0,0 +1,21 @@
+# picocolors
+
+The tiniest and the fastest library for terminal output formatting with ANSI colors.
+
+```javascript
+import pc from "picocolors"
+
+console.log(
+ pc.green(`How are ${pc.italic(`you`)} doing?`)
+)
+```
+
+- **No dependencies.**
+- **14 times** smaller and **2 times** faster than chalk.
+- Used by popular tools like PostCSS, SVGO, Stylelint, and Browserslist.
+- Node.js v6+ & browsers support. Support for both CJS and ESM projects.
+- TypeScript type declarations included.
+- [`NO_COLOR`](https://no-color.org/) friendly.
+
+## Docs
+Read **[full docs](https://github.com/alexeyraspopov/picocolors#readme)** on GitHub.
diff --git a/tools/node_modules/eslint/node_modules/picocolors/package.json b/tools/node_modules/eslint/node_modules/picocolors/package.json
new file mode 100644
index 0000000000..85a12d5234
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/picocolors/package.json
@@ -0,0 +1,25 @@
+{
+ "name": "picocolors",
+ "version": "1.0.0",
+ "main": "./picocolors.js",
+ "types": "./picocolors.d.ts",
+ "browser": {
+ "./picocolors.js": "./picocolors.browser.js"
+ },
+ "sideEffects": false,
+ "description": "The tiniest and the fastest library for terminal output formatting with ANSI colors",
+ "files": [
+ "picocolors.*",
+ "types.ts"
+ ],
+ "keywords": [
+ "terminal",
+ "colors",
+ "formatting",
+ "cli",
+ "console"
+ ],
+ "author": "Alexey Raspopov",
+ "repository": "alexeyraspopov/picocolors",
+ "license": "ISC"
+}
diff --git a/tools/node_modules/eslint/node_modules/picocolors/picocolors.browser.js b/tools/node_modules/eslint/node_modules/picocolors/picocolors.browser.js
new file mode 100644
index 0000000000..5eb9fbe8b5
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/picocolors/picocolors.browser.js
@@ -0,0 +1,4 @@
+var x=String;
+var create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};
+module.exports=create();
+module.exports.createColors = create;
diff --git a/tools/node_modules/eslint/node_modules/picocolors/picocolors.js b/tools/node_modules/eslint/node_modules/picocolors/picocolors.js
new file mode 100644
index 0000000000..fdb630451d
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/picocolors/picocolors.js
@@ -0,0 +1,58 @@
+let tty = require("tty")
+
+let isColorSupported =
+ !("NO_COLOR" in process.env || process.argv.includes("--no-color")) &&
+ ("FORCE_COLOR" in process.env ||
+ process.argv.includes("--color") ||
+ process.platform === "win32" ||
+ (tty.isatty(1) && process.env.TERM !== "dumb") ||
+ "CI" in process.env)
+
+let formatter =
+ (open, close, replace = open) =>
+ input => {
+ let string = "" + input
+ let index = string.indexOf(close, open.length)
+ return ~index
+ ? open + replaceClose(string, close, replace, index) + close
+ : open + string + close
+ }
+
+let replaceClose = (string, close, replace, index) => {
+ let start = string.substring(0, index) + replace
+ let end = string.substring(index + close.length)
+ let nextIndex = end.indexOf(close)
+ return ~nextIndex ? start + replaceClose(end, close, replace, nextIndex) : start + end
+}
+
+let createColors = (enabled = isColorSupported) => ({
+ isColorSupported: enabled,
+ reset: enabled ? s => `\x1b[0m${s}\x1b[0m` : String,
+ bold: enabled ? formatter("\x1b[1m", "\x1b[22m", "\x1b[22m\x1b[1m") : String,
+ dim: enabled ? formatter("\x1b[2m", "\x1b[22m", "\x1b[22m\x1b[2m") : String,
+ italic: enabled ? formatter("\x1b[3m", "\x1b[23m") : String,
+ underline: enabled ? formatter("\x1b[4m", "\x1b[24m") : String,
+ inverse: enabled ? formatter("\x1b[7m", "\x1b[27m") : String,
+ hidden: enabled ? formatter("\x1b[8m", "\x1b[28m") : String,
+ strikethrough: enabled ? formatter("\x1b[9m", "\x1b[29m") : String,
+ black: enabled ? formatter("\x1b[30m", "\x1b[39m") : String,
+ red: enabled ? formatter("\x1b[31m", "\x1b[39m") : String,
+ green: enabled ? formatter("\x1b[32m", "\x1b[39m") : String,
+ yellow: enabled ? formatter("\x1b[33m", "\x1b[39m") : String,
+ blue: enabled ? formatter("\x1b[34m", "\x1b[39m") : String,
+ magenta: enabled ? formatter("\x1b[35m", "\x1b[39m") : String,
+ cyan: enabled ? formatter("\x1b[36m", "\x1b[39m") : String,
+ white: enabled ? formatter("\x1b[37m", "\x1b[39m") : String,
+ gray: enabled ? formatter("\x1b[90m", "\x1b[39m") : String,
+ bgBlack: enabled ? formatter("\x1b[40m", "\x1b[49m") : String,
+ bgRed: enabled ? formatter("\x1b[41m", "\x1b[49m") : String,
+ bgGreen: enabled ? formatter("\x1b[42m", "\x1b[49m") : String,
+ bgYellow: enabled ? formatter("\x1b[43m", "\x1b[49m") : String,
+ bgBlue: enabled ? formatter("\x1b[44m", "\x1b[49m") : String,
+ bgMagenta: enabled ? formatter("\x1b[45m", "\x1b[49m") : String,
+ bgCyan: enabled ? formatter("\x1b[46m", "\x1b[49m") : String,
+ bgWhite: enabled ? formatter("\x1b[47m", "\x1b[49m") : String,
+})
+
+module.exports = createColors()
+module.exports.createColors = createColors
diff --git a/tools/node_modules/eslint/node_modules/safe-buffer/LICENSE b/tools/node_modules/eslint/node_modules/safe-buffer/LICENSE
new file mode 100644
index 0000000000..0c068ceecb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/safe-buffer/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Feross Aboukhadijeh
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/safe-buffer/README.md b/tools/node_modules/eslint/node_modules/safe-buffer/README.md
new file mode 100644
index 0000000000..e9a81afd04
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/safe-buffer/README.md
@@ -0,0 +1,584 @@
+# safe-buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
+
+[travis-image]: https://img.shields.io/travis/feross/safe-buffer/master.svg
+[travis-url]: https://travis-ci.org/feross/safe-buffer
+[npm-image]: https://img.shields.io/npm/v/safe-buffer.svg
+[npm-url]: https://npmjs.org/package/safe-buffer
+[downloads-image]: https://img.shields.io/npm/dm/safe-buffer.svg
+[downloads-url]: https://npmjs.org/package/safe-buffer
+[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
+[standard-url]: https://standardjs.com
+
+#### Safer Node.js Buffer API
+
+**Use the new Node.js Buffer APIs (`Buffer.from`, `Buffer.alloc`,
+`Buffer.allocUnsafe`, `Buffer.allocUnsafeSlow`) in all versions of Node.js.**
+
+**Uses the built-in implementation when available.**
+
+## install
+
+```
+npm install safe-buffer
+```
+
+## usage
+
+The goal of this package is to provide a safe replacement for the node.js `Buffer`.
+
+It's a drop-in replacement for `Buffer`. You can use it by adding one `require` line to
+the top of your node.js modules:
+
+```js
+var Buffer = require('safe-buffer').Buffer
+
+// Existing buffer code will continue to work without issues:
+
+new Buffer('hey', 'utf8')
+new Buffer([1, 2, 3], 'utf8')
+new Buffer(obj)
+new Buffer(16) // create an uninitialized buffer (potentially unsafe)
+
+// But you can use these new explicit APIs to make clear what you want:
+
+Buffer.from('hey', 'utf8') // convert from many types to a Buffer
+Buffer.alloc(16) // create a zero-filled buffer (safe)
+Buffer.allocUnsafe(16) // create an uninitialized buffer (potentially unsafe)
+```
+
+## api
+
+### Class Method: Buffer.from(array)
+<!-- YAML
+added: v3.0.0
+-->
+
+* `array` {Array}
+
+Allocates a new `Buffer` using an `array` of octets.
+
+```js
+const buf = Buffer.from([0x62,0x75,0x66,0x66,0x65,0x72]);
+ // creates a new Buffer containing ASCII bytes
+ // ['b','u','f','f','e','r']
+```
+
+A `TypeError` will be thrown if `array` is not an `Array`.
+
+### Class Method: Buffer.from(arrayBuffer[, byteOffset[, length]])
+<!-- YAML
+added: v5.10.0
+-->
+
+* `arrayBuffer` {ArrayBuffer} The `.buffer` property of a `TypedArray` or
+ a `new ArrayBuffer()`
+* `byteOffset` {Number} Default: `0`
+* `length` {Number} Default: `arrayBuffer.length - byteOffset`
+
+When passed a reference to the `.buffer` property of a `TypedArray` instance,
+the newly created `Buffer` will share the same allocated memory as the
+TypedArray.
+
+```js
+const arr = new Uint16Array(2);
+arr[0] = 5000;
+arr[1] = 4000;
+
+const buf = Buffer.from(arr.buffer); // shares the memory with arr;
+
+console.log(buf);
+ // Prints: <Buffer 88 13 a0 0f>
+
+// changing the TypedArray changes the Buffer also
+arr[1] = 6000;
+
+console.log(buf);
+ // Prints: <Buffer 88 13 70 17>
+```
+
+The optional `byteOffset` and `length` arguments specify a memory range within
+the `arrayBuffer` that will be shared by the `Buffer`.
+
+```js
+const ab = new ArrayBuffer(10);
+const buf = Buffer.from(ab, 0, 2);
+console.log(buf.length);
+ // Prints: 2
+```
+
+A `TypeError` will be thrown if `arrayBuffer` is not an `ArrayBuffer`.
+
+### Class Method: Buffer.from(buffer)
+<!-- YAML
+added: v3.0.0
+-->
+
+* `buffer` {Buffer}
+
+Copies the passed `buffer` data onto a new `Buffer` instance.
+
+```js
+const buf1 = Buffer.from('buffer');
+const buf2 = Buffer.from(buf1);
+
+buf1[0] = 0x61;
+console.log(buf1.toString());
+ // 'auffer'
+console.log(buf2.toString());
+ // 'buffer' (copy is not changed)
+```
+
+A `TypeError` will be thrown if `buffer` is not a `Buffer`.
+
+### Class Method: Buffer.from(str[, encoding])
+<!-- YAML
+added: v5.10.0
+-->
+
+* `str` {String} String to encode.
+* `encoding` {String} Encoding to use, Default: `'utf8'`
+
+Creates a new `Buffer` containing the given JavaScript string `str`. If
+provided, the `encoding` parameter identifies the character encoding.
+If not provided, `encoding` defaults to `'utf8'`.
+
+```js
+const buf1 = Buffer.from('this is a tést');
+console.log(buf1.toString());
+ // prints: this is a tést
+console.log(buf1.toString('ascii'));
+ // prints: this is a tC)st
+
+const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
+console.log(buf2.toString());
+ // prints: this is a tést
+```
+
+A `TypeError` will be thrown if `str` is not a string.
+
+### Class Method: Buffer.alloc(size[, fill[, encoding]])
+<!-- YAML
+added: v5.10.0
+-->
+
+* `size` {Number}
+* `fill` {Value} Default: `undefined`
+* `encoding` {String} Default: `utf8`
+
+Allocates a new `Buffer` of `size` bytes. If `fill` is `undefined`, the
+`Buffer` will be *zero-filled*.
+
+```js
+const buf = Buffer.alloc(5);
+console.log(buf);
+ // <Buffer 00 00 00 00 00>
+```
+
+The `size` must be less than or equal to the value of
+`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
+`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
+be created if a `size` less than or equal to 0 is specified.
+
+If `fill` is specified, the allocated `Buffer` will be initialized by calling
+`buf.fill(fill)`. See [`buf.fill()`][] for more information.
+
+```js
+const buf = Buffer.alloc(5, 'a');
+console.log(buf);
+ // <Buffer 61 61 61 61 61>
+```
+
+If both `fill` and `encoding` are specified, the allocated `Buffer` will be
+initialized by calling `buf.fill(fill, encoding)`. For example:
+
+```js
+const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');
+console.log(buf);
+ // <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
+```
+
+Calling `Buffer.alloc(size)` can be significantly slower than the alternative
+`Buffer.allocUnsafe(size)` but ensures that the newly created `Buffer` instance
+contents will *never contain sensitive data*.
+
+A `TypeError` will be thrown if `size` is not a number.
+
+### Class Method: Buffer.allocUnsafe(size)
+<!-- YAML
+added: v5.10.0
+-->
+
+* `size` {Number}
+
+Allocates a new *non-zero-filled* `Buffer` of `size` bytes. The `size` must
+be less than or equal to the value of `require('buffer').kMaxLength` (on 64-bit
+architectures, `kMaxLength` is `(2^31)-1`). Otherwise, a [`RangeError`][] is
+thrown. A zero-length Buffer will be created if a `size` less than or equal to
+0 is specified.
+
+The underlying memory for `Buffer` instances created in this way is *not
+initialized*. The contents of the newly created `Buffer` are unknown and
+*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
+`Buffer` instances to zeroes.
+
+```js
+const buf = Buffer.allocUnsafe(5);
+console.log(buf);
+ // <Buffer 78 e0 82 02 01>
+ // (octets will be different, every time)
+buf.fill(0);
+console.log(buf);
+ // <Buffer 00 00 00 00 00>
+```
+
+A `TypeError` will be thrown if `size` is not a number.
+
+Note that the `Buffer` module pre-allocates an internal `Buffer` instance of
+size `Buffer.poolSize` that is used as a pool for the fast allocation of new
+`Buffer` instances created using `Buffer.allocUnsafe(size)` (and the deprecated
+`new Buffer(size)` constructor) only when `size` is less than or equal to
+`Buffer.poolSize >> 1` (floor of `Buffer.poolSize` divided by two). The default
+value of `Buffer.poolSize` is `8192` but can be modified.
+
+Use of this pre-allocated internal memory pool is a key difference between
+calling `Buffer.alloc(size, fill)` vs. `Buffer.allocUnsafe(size).fill(fill)`.
+Specifically, `Buffer.alloc(size, fill)` will *never* use the internal Buffer
+pool, while `Buffer.allocUnsafe(size).fill(fill)` *will* use the internal
+Buffer pool if `size` is less than or equal to half `Buffer.poolSize`. The
+difference is subtle but can be important when an application requires the
+additional performance that `Buffer.allocUnsafe(size)` provides.
+
+### Class Method: Buffer.allocUnsafeSlow(size)
+<!-- YAML
+added: v5.10.0
+-->
+
+* `size` {Number}
+
+Allocates a new *non-zero-filled* and non-pooled `Buffer` of `size` bytes. The
+`size` must be less than or equal to the value of
+`require('buffer').kMaxLength` (on 64-bit architectures, `kMaxLength` is
+`(2^31)-1`). Otherwise, a [`RangeError`][] is thrown. A zero-length Buffer will
+be created if a `size` less than or equal to 0 is specified.
+
+The underlying memory for `Buffer` instances created in this way is *not
+initialized*. The contents of the newly created `Buffer` are unknown and
+*may contain sensitive data*. Use [`buf.fill(0)`][] to initialize such
+`Buffer` instances to zeroes.
+
+When using `Buffer.allocUnsafe()` to allocate new `Buffer` instances,
+allocations under 4KB are, by default, sliced from a single pre-allocated
+`Buffer`. This allows applications to avoid the garbage collection overhead of
+creating many individually allocated Buffers. This approach improves both
+performance and memory usage by eliminating the need to track and cleanup as
+many `Persistent` objects.
+
+However, in the case where a developer may need to retain a small chunk of
+memory from a pool for an indeterminate amount of time, it may be appropriate
+to create an un-pooled Buffer instance using `Buffer.allocUnsafeSlow()` then
+copy out the relevant bits.
+
+```js
+// need to keep around a few small chunks of memory
+const store = [];
+
+socket.on('readable', () => {
+ const data = socket.read();
+ // allocate for retained data
+ const sb = Buffer.allocUnsafeSlow(10);
+ // copy the data into the new allocation
+ data.copy(sb, 0, 0, 10);
+ store.push(sb);
+});
+```
+
+Use of `Buffer.allocUnsafeSlow()` should be used only as a last resort *after*
+a developer has observed undue memory retention in their applications.
+
+A `TypeError` will be thrown if `size` is not a number.
+
+### All the Rest
+
+The rest of the `Buffer` API is exactly the same as in node.js.
+[See the docs](https://nodejs.org/api/buffer.html).
+
+
+## Related links
+
+- [Node.js issue: Buffer(number) is unsafe](https://github.com/nodejs/node/issues/4660)
+- [Node.js Enhancement Proposal: Buffer.from/Buffer.alloc/Buffer.zalloc/Buffer() soft-deprecate](https://github.com/nodejs/node-eps/pull/4)
+
+## Why is `Buffer` unsafe?
+
+Today, the node.js `Buffer` constructor is overloaded to handle many different argument
+types like `String`, `Array`, `Object`, `TypedArrayView` (`Uint8Array`, etc.),
+`ArrayBuffer`, and also `Number`.
+
+The API is optimized for convenience: you can throw any type at it, and it will try to do
+what you want.
+
+Because the Buffer constructor is so powerful, you often see code like this:
+
+```js
+// Convert UTF-8 strings to hex
+function toHex (str) {
+ return new Buffer(str).toString('hex')
+}
+```
+
+***But what happens if `toHex` is called with a `Number` argument?***
+
+### Remote Memory Disclosure
+
+If an attacker can make your program call the `Buffer` constructor with a `Number`
+argument, then they can make it allocate uninitialized memory from the node.js process.
+This could potentially disclose TLS private keys, user data, or database passwords.
+
+When the `Buffer` constructor is passed a `Number` argument, it returns an
+**UNINITIALIZED** block of memory of the specified `size`. When you create a `Buffer` like
+this, you **MUST** overwrite the contents before returning it to the user.
+
+From the [node.js docs](https://nodejs.org/api/buffer.html#buffer_new_buffer_size):
+
+> `new Buffer(size)`
+>
+> - `size` Number
+>
+> The underlying memory for `Buffer` instances created in this way is not initialized.
+> **The contents of a newly created `Buffer` are unknown and could contain sensitive
+> data.** Use `buf.fill(0)` to initialize a Buffer to zeroes.
+
+(Emphasis our own.)
+
+Whenever the programmer intended to create an uninitialized `Buffer` you often see code
+like this:
+
+```js
+var buf = new Buffer(16)
+
+// Immediately overwrite the uninitialized buffer with data from another buffer
+for (var i = 0; i < buf.length; i++) {
+ buf[i] = otherBuf[i]
+}
+```
+
+
+### Would this ever be a problem in real code?
+
+Yes. It's surprisingly common to forget to check the type of your variables in a
+dynamically-typed language like JavaScript.
+
+Usually the consequences of assuming the wrong type is that your program crashes with an
+uncaught exception. But the failure mode for forgetting to check the type of arguments to
+the `Buffer` constructor is more catastrophic.
+
+Here's an example of a vulnerable service that takes a JSON payload and converts it to
+hex:
+
+```js
+// Take a JSON payload {str: "some string"} and convert it to hex
+var server = http.createServer(function (req, res) {
+ var data = ''
+ req.setEncoding('utf8')
+ req.on('data', function (chunk) {
+ data += chunk
+ })
+ req.on('end', function () {
+ var body = JSON.parse(data)
+ res.end(new Buffer(body.str).toString('hex'))
+ })
+})
+
+server.listen(8080)
+```
+
+In this example, an http client just has to send:
+
+```json
+{
+ "str": 1000
+}
+```
+
+and it will get back 1,000 bytes of uninitialized memory from the server.
+
+This is a very serious bug. It's similar in severity to the
+[the Heartbleed bug](http://heartbleed.com/) that allowed disclosure of OpenSSL process
+memory by remote attackers.
+
+
+### Which real-world packages were vulnerable?
+
+#### [`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht)
+
+[Mathias Buus](https://github.com/mafintosh) and I
+([Feross Aboukhadijeh](http://feross.org/)) found this issue in one of our own packages,
+[`bittorrent-dht`](https://www.npmjs.com/package/bittorrent-dht). The bug would allow
+anyone on the internet to send a series of messages to a user of `bittorrent-dht` and get
+them to reveal 20 bytes at a time of uninitialized memory from the node.js process.
+
+Here's
+[the commit](https://github.com/feross/bittorrent-dht/commit/6c7da04025d5633699800a99ec3fbadf70ad35b8)
+that fixed it. We released a new fixed version, created a
+[Node Security Project disclosure](https://nodesecurity.io/advisories/68), and deprecated all
+vulnerable versions on npm so users will get a warning to upgrade to a newer version.
+
+#### [`ws`](https://www.npmjs.com/package/ws)
+
+That got us wondering if there were other vulnerable packages. Sure enough, within a short
+period of time, we found the same issue in [`ws`](https://www.npmjs.com/package/ws), the
+most popular WebSocket implementation in node.js.
+
+If certain APIs were called with `Number` parameters instead of `String` or `Buffer` as
+expected, then uninitialized server memory would be disclosed to the remote peer.
+
+These were the vulnerable methods:
+
+```js
+socket.send(number)
+socket.ping(number)
+socket.pong(number)
+```
+
+Here's a vulnerable socket server with some echo functionality:
+
+```js
+server.on('connection', function (socket) {
+ socket.on('message', function (message) {
+ message = JSON.parse(message)
+ if (message.type === 'echo') {
+ socket.send(message.data) // send back the user's message
+ }
+ })
+})
+```
+
+`socket.send(number)` called on the server, will disclose server memory.
+
+Here's [the release](https://github.com/websockets/ws/releases/tag/1.0.1) where the issue
+was fixed, with a more detailed explanation. Props to
+[Arnout Kazemier](https://github.com/3rd-Eden) for the quick fix. Here's the
+[Node Security Project disclosure](https://nodesecurity.io/advisories/67).
+
+
+### What's the solution?
+
+It's important that node.js offers a fast way to get memory otherwise performance-critical
+applications would needlessly get a lot slower.
+
+But we need a better way to *signal our intent* as programmers. **When we want
+uninitialized memory, we should request it explicitly.**
+
+Sensitive functionality should not be packed into a developer-friendly API that loosely
+accepts many different types. This type of API encourages the lazy practice of passing
+variables in without checking the type very carefully.
+
+#### A new API: `Buffer.allocUnsafe(number)`
+
+The functionality of creating buffers with uninitialized memory should be part of another
+API. We propose `Buffer.allocUnsafe(number)`. This way, it's not part of an API that
+frequently gets user input of all sorts of different types passed into it.
+
+```js
+var buf = Buffer.allocUnsafe(16) // careful, uninitialized memory!
+
+// Immediately overwrite the uninitialized buffer with data from another buffer
+for (var i = 0; i < buf.length; i++) {
+ buf[i] = otherBuf[i]
+}
+```
+
+
+### How do we fix node.js core?
+
+We sent [a PR to node.js core](https://github.com/nodejs/node/pull/4514) (merged as
+`semver-major`) which defends against one case:
+
+```js
+var str = 16
+new Buffer(str, 'utf8')
+```
+
+In this situation, it's implied that the programmer intended the first argument to be a
+string, since they passed an encoding as a second argument. Today, node.js will allocate
+uninitialized memory in the case of `new Buffer(number, encoding)`, which is probably not
+what the programmer intended.
+
+But this is only a partial solution, since if the programmer does `new Buffer(variable)`
+(without an `encoding` parameter) there's no way to know what they intended. If `variable`
+is sometimes a number, then uninitialized memory will sometimes be returned.
+
+### What's the real long-term fix?
+
+We could deprecate and remove `new Buffer(number)` and use `Buffer.allocUnsafe(number)` when
+we need uninitialized memory. But that would break 1000s of packages.
+
+~~We believe the best solution is to:~~
+
+~~1. Change `new Buffer(number)` to return safe, zeroed-out memory~~
+
+~~2. Create a new API for creating uninitialized Buffers. We propose: `Buffer.allocUnsafe(number)`~~
+
+#### Update
+
+We now support adding three new APIs:
+
+- `Buffer.from(value)` - convert from any type to a buffer
+- `Buffer.alloc(size)` - create a zero-filled buffer
+- `Buffer.allocUnsafe(size)` - create an uninitialized buffer with given size
+
+This solves the core problem that affected `ws` and `bittorrent-dht` which is
+`Buffer(variable)` getting tricked into taking a number argument.
+
+This way, existing code continues working and the impact on the npm ecosystem will be
+minimal. Over time, npm maintainers can migrate performance-critical code to use
+`Buffer.allocUnsafe(number)` instead of `new Buffer(number)`.
+
+
+### Conclusion
+
+We think there's a serious design issue with the `Buffer` API as it exists today. It
+promotes insecure software by putting high-risk functionality into a convenient API
+with friendly "developer ergonomics".
+
+This wasn't merely a theoretical exercise because we found the issue in some of the
+most popular npm packages.
+
+Fortunately, there's an easy fix that can be applied today. Use `safe-buffer` in place of
+`buffer`.
+
+```js
+var Buffer = require('safe-buffer').Buffer
+```
+
+Eventually, we hope that node.js core can switch to this new, safer behavior. We believe
+the impact on the ecosystem would be minimal since it's not a breaking change.
+Well-maintained, popular packages would be updated to use `Buffer.alloc` quickly, while
+older, insecure packages would magically become safe from this attack vector.
+
+
+## links
+
+- [Node.js PR: buffer: throw if both length and enc are passed](https://github.com/nodejs/node/pull/4514)
+- [Node Security Project disclosure for `ws`](https://nodesecurity.io/advisories/67)
+- [Node Security Project disclosure for`bittorrent-dht`](https://nodesecurity.io/advisories/68)
+
+
+## credit
+
+The original issues in `bittorrent-dht`
+([disclosure](https://nodesecurity.io/advisories/68)) and
+`ws` ([disclosure](https://nodesecurity.io/advisories/67)) were discovered by
+[Mathias Buus](https://github.com/mafintosh) and
+[Feross Aboukhadijeh](http://feross.org/).
+
+Thanks to [Adam Baldwin](https://github.com/evilpacket) for helping disclose these issues
+and for his work running the [Node Security Project](https://nodesecurity.io/).
+
+Thanks to [John Hiesey](https://github.com/jhiesey) for proofreading this README and
+auditing the code.
+
+
+## license
+
+MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org)
diff --git a/tools/node_modules/eslint/node_modules/safe-buffer/index.js b/tools/node_modules/eslint/node_modules/safe-buffer/index.js
new file mode 100644
index 0000000000..22438dabbb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/safe-buffer/index.js
@@ -0,0 +1,62 @@
+/* eslint-disable node/no-deprecated-api */
+var buffer = require('buffer')
+var Buffer = buffer.Buffer
+
+// alternative to using Object.keys for old browsers
+function copyProps (src, dst) {
+ for (var key in src) {
+ dst[key] = src[key]
+ }
+}
+if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
+ module.exports = buffer
+} else {
+ // Copy properties from require('buffer')
+ copyProps(buffer, exports)
+ exports.Buffer = SafeBuffer
+}
+
+function SafeBuffer (arg, encodingOrOffset, length) {
+ return Buffer(arg, encodingOrOffset, length)
+}
+
+// Copy static methods from Buffer
+copyProps(Buffer, SafeBuffer)
+
+SafeBuffer.from = function (arg, encodingOrOffset, length) {
+ if (typeof arg === 'number') {
+ throw new TypeError('Argument must not be a number')
+ }
+ return Buffer(arg, encodingOrOffset, length)
+}
+
+SafeBuffer.alloc = function (size, fill, encoding) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ var buf = Buffer(size)
+ if (fill !== undefined) {
+ if (typeof encoding === 'string') {
+ buf.fill(fill, encoding)
+ } else {
+ buf.fill(fill)
+ }
+ } else {
+ buf.fill(0)
+ }
+ return buf
+}
+
+SafeBuffer.allocUnsafe = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ return Buffer(size)
+}
+
+SafeBuffer.allocUnsafeSlow = function (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('Argument must be a number')
+ }
+ return buffer.SlowBuffer(size)
+}
diff --git a/tools/node_modules/eslint/node_modules/safe-buffer/package.json b/tools/node_modules/eslint/node_modules/safe-buffer/package.json
new file mode 100644
index 0000000000..623fbc3f6b
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/safe-buffer/package.json
@@ -0,0 +1,37 @@
+{
+ "name": "safe-buffer",
+ "description": "Safer Node.js Buffer API",
+ "version": "5.1.2",
+ "author": {
+ "name": "Feross Aboukhadijeh",
+ "email": "feross@feross.org",
+ "url": "http://feross.org"
+ },
+ "bugs": {
+ "url": "https://github.com/feross/safe-buffer/issues"
+ },
+ "devDependencies": {
+ "standard": "*",
+ "tape": "^4.0.0"
+ },
+ "homepage": "https://github.com/feross/safe-buffer",
+ "keywords": [
+ "buffer",
+ "buffer allocate",
+ "node security",
+ "safe",
+ "safe-buffer",
+ "security",
+ "uninitialized"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "types": "index.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/feross/safe-buffer.git"
+ },
+ "scripts": {
+ "test": "standard && tape test/*.js"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/source-map/LICENSE b/tools/node_modules/eslint/node_modules/source-map/LICENSE
new file mode 100644
index 0000000000..ed1b7cf27e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/LICENSE
@@ -0,0 +1,28 @@
+
+Copyright (c) 2009-2011, Mozilla Foundation and contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+* Neither the names of the Mozilla Foundation nor the names of project
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/tools/node_modules/eslint/node_modules/source-map/README.md b/tools/node_modules/eslint/node_modules/source-map/README.md
new file mode 100644
index 0000000000..32813394ad
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/README.md
@@ -0,0 +1,729 @@
+# Source Map
+
+[![Build Status](https://travis-ci.org/mozilla/source-map.png?branch=master)](https://travis-ci.org/mozilla/source-map)
+
+[![NPM](https://nodei.co/npm/source-map.png?downloads=true&downloadRank=true)](https://www.npmjs.com/package/source-map)
+
+This is a library to generate and consume the source map format
+[described here][format].
+
+[format]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit
+
+## Use with Node
+
+ $ npm install source-map
+
+## Use on the Web
+
+ <script src="https://raw.githubusercontent.com/mozilla/source-map/master/dist/source-map.min.js" defer></script>
+
+--------------------------------------------------------------------------------
+
+<!-- `npm run toc` to regenerate the Table of Contents -->
+
+<!-- START doctoc generated TOC please keep comment here to allow auto update -->
+<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
+## Table of Contents
+
+- [Examples](#examples)
+ - [Consuming a source map](#consuming-a-source-map)
+ - [Generating a source map](#generating-a-source-map)
+ - [With SourceNode (high level API)](#with-sourcenode-high-level-api)
+ - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api)
+- [API](#api)
+ - [SourceMapConsumer](#sourcemapconsumer)
+ - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap)
+ - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans)
+ - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition)
+ - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition)
+ - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition)
+ - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources)
+ - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing)
+ - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order)
+ - [SourceMapGenerator](#sourcemapgenerator)
+ - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap)
+ - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer)
+ - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping)
+ - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent)
+ - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath)
+ - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring)
+ - [SourceNode](#sourcenode)
+ - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name)
+ - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath)
+ - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk)
+ - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk)
+ - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent)
+ - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn)
+ - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn)
+ - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep)
+ - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement)
+ - [SourceNode.prototype.toString()](#sourcenodeprototypetostring)
+ - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap)
+
+<!-- END doctoc generated TOC please keep comment here to allow auto update -->
+
+## Examples
+
+### Consuming a source map
+
+```js
+var rawSourceMap = {
+ version: 3,
+ file: 'min.js',
+ names: ['bar', 'baz', 'n'],
+ sources: ['one.js', 'two.js'],
+ sourceRoot: 'http://example.com/www/js/',
+ mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
+};
+
+var smc = new SourceMapConsumer(rawSourceMap);
+
+console.log(smc.sources);
+// [ 'http://example.com/www/js/one.js',
+// 'http://example.com/www/js/two.js' ]
+
+console.log(smc.originalPositionFor({
+ line: 2,
+ column: 28
+}));
+// { source: 'http://example.com/www/js/two.js',
+// line: 2,
+// column: 10,
+// name: 'n' }
+
+console.log(smc.generatedPositionFor({
+ source: 'http://example.com/www/js/two.js',
+ line: 2,
+ column: 10
+}));
+// { line: 2, column: 28 }
+
+smc.eachMapping(function (m) {
+ // ...
+});
+```
+
+### Generating a source map
+
+In depth guide:
+[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/)
+
+#### With SourceNode (high level API)
+
+```js
+function compile(ast) {
+ switch (ast.type) {
+ case 'BinaryExpression':
+ return new SourceNode(
+ ast.location.line,
+ ast.location.column,
+ ast.location.source,
+ [compile(ast.left), " + ", compile(ast.right)]
+ );
+ case 'Literal':
+ return new SourceNode(
+ ast.location.line,
+ ast.location.column,
+ ast.location.source,
+ String(ast.value)
+ );
+ // ...
+ default:
+ throw new Error("Bad AST");
+ }
+}
+
+var ast = parse("40 + 2", "add.js");
+console.log(compile(ast).toStringWithSourceMap({
+ file: 'add.js'
+}));
+// { code: '40 + 2',
+// map: [object SourceMapGenerator] }
+```
+
+#### With SourceMapGenerator (low level API)
+
+```js
+var map = new SourceMapGenerator({
+ file: "source-mapped.js"
+});
+
+map.addMapping({
+ generated: {
+ line: 10,
+ column: 35
+ },
+ source: "foo.js",
+ original: {
+ line: 33,
+ column: 2
+ },
+ name: "christopher"
+});
+
+console.log(map.toString());
+// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}'
+```
+
+## API
+
+Get a reference to the module:
+
+```js
+// Node.js
+var sourceMap = require('source-map');
+
+// Browser builds
+var sourceMap = window.sourceMap;
+
+// Inside Firefox
+const sourceMap = require("devtools/toolkit/sourcemap/source-map.js");
+```
+
+### SourceMapConsumer
+
+A SourceMapConsumer instance represents a parsed source map which we can query
+for information about the original file positions by giving it a file position
+in the generated source.
+
+#### new SourceMapConsumer(rawSourceMap)
+
+The only parameter is the raw source map (either as a string which can be
+`JSON.parse`'d, or an object). According to the spec, source maps have the
+following attributes:
+
+* `version`: Which version of the source map spec this map is following.
+
+* `sources`: An array of URLs to the original source files.
+
+* `names`: An array of identifiers which can be referenced by individual
+ mappings.
+
+* `sourceRoot`: Optional. The URL root from which all sources are relative.
+
+* `sourcesContent`: Optional. An array of contents of the original source files.
+
+* `mappings`: A string of base64 VLQs which contain the actual mappings.
+
+* `file`: Optional. The generated filename this source map is associated with.
+
+```js
+var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData);
+```
+
+#### SourceMapConsumer.prototype.computeColumnSpans()
+
+Compute the last column for each generated mapping. The last column is
+inclusive.
+
+```js
+// Before:
+consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1 },
+// { line: 2,
+// column: 10 },
+// { line: 2,
+// column: 20 } ]
+
+consumer.computeColumnSpans();
+
+// After:
+consumer.allGeneratedPositionsFor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1,
+// lastColumn: 9 },
+// { line: 2,
+// column: 10,
+// lastColumn: 19 },
+// { line: 2,
+// column: 20,
+// lastColumn: Infinity } ]
+
+```
+
+#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)
+
+Returns the original source, line, and column information for the generated
+source's line and column positions provided. The only argument is an object with
+the following properties:
+
+* `line`: The line number in the generated source.
+
+* `column`: The column number in the generated source.
+
+* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or
+ `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest
+ element that is smaller than or greater than the one we are searching for,
+ respectively, if the exact element cannot be found. Defaults to
+ `SourceMapConsumer.GREATEST_LOWER_BOUND`.
+
+and an object is returned with the following properties:
+
+* `source`: The original source file, or null if this information is not
+ available.
+
+* `line`: The line number in the original source, or null if this information is
+ not available.
+
+* `column`: The column number in the original source, or null if this
+ information is not available.
+
+* `name`: The original identifier, or null if this information is not available.
+
+```js
+consumer.originalPositionFor({ line: 2, column: 10 })
+// { source: 'foo.coffee',
+// line: 2,
+// column: 2,
+// name: null }
+
+consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 })
+// { source: null,
+// line: null,
+// column: null,
+// name: null }
+```
+
+#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)
+
+Returns the generated line and column information for the original source,
+line, and column positions provided. The only argument is an object with
+the following properties:
+
+* `source`: The filename of the original source.
+
+* `line`: The line number in the original source.
+
+* `column`: The column number in the original source.
+
+and an object is returned with the following properties:
+
+* `line`: The line number in the generated source, or null.
+
+* `column`: The column number in the generated source, or null.
+
+```js
+consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 })
+// { line: 1,
+// column: 56 }
+```
+
+#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)
+
+Returns all generated line and column information for the original source, line,
+and column provided. If no column is provided, returns all mappings
+corresponding to a either the line we are searching for or the next closest line
+that has any mappings. Otherwise, returns all mappings corresponding to the
+given line and either the column we are searching for or the next closest column
+that has any offsets.
+
+The only argument is an object with the following properties:
+
+* `source`: The filename of the original source.
+
+* `line`: The line number in the original source.
+
+* `column`: Optional. The column number in the original source.
+
+and an array of objects is returned, each with the following properties:
+
+* `line`: The line number in the generated source, or null.
+
+* `column`: The column number in the generated source, or null.
+
+```js
+consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1 },
+// { line: 2,
+// column: 10 },
+// { line: 2,
+// column: 20 } ]
+```
+
+#### SourceMapConsumer.prototype.hasContentsOfAllSources()
+
+Return true if we have the embedded source content for every source listed in
+the source map, false otherwise.
+
+In other words, if this method returns `true`, then
+`consumer.sourceContentFor(s)` will succeed for every source `s` in
+`consumer.sources`.
+
+```js
+// ...
+if (consumer.hasContentsOfAllSources()) {
+ consumerReadyCallback(consumer);
+} else {
+ fetchSources(consumer, consumerReadyCallback);
+}
+// ...
+```
+
+#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])
+
+Returns the original source content for the source provided. The only
+argument is the URL of the original source file.
+
+If the source content for the given source is not found, then an error is
+thrown. Optionally, pass `true` as the second param to have `null` returned
+instead.
+
+```js
+consumer.sources
+// [ "my-cool-lib.clj" ]
+
+consumer.sourceContentFor("my-cool-lib.clj")
+// "..."
+
+consumer.sourceContentFor("this is not in the source map");
+// Error: "this is not in the source map" is not in the source map
+
+consumer.sourceContentFor("this is not in the source map", true);
+// null
+```
+
+#### SourceMapConsumer.prototype.eachMapping(callback, context, order)
+
+Iterate over each mapping between an original source/line/column and a
+generated line/column in this source map.
+
+* `callback`: The function that is called with each mapping. Mappings have the
+ form `{ source, generatedLine, generatedColumn, originalLine, originalColumn,
+ name }`
+
+* `context`: Optional. If specified, this object will be the value of `this`
+ every time that `callback` is called.
+
+* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or
+ `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over
+ the mappings sorted by the generated file's line/column order or the
+ original's source/line/column order, respectively. Defaults to
+ `SourceMapConsumer.GENERATED_ORDER`.
+
+```js
+consumer.eachMapping(function (m) { console.log(m); })
+// ...
+// { source: 'illmatic.js',
+// generatedLine: 1,
+// generatedColumn: 0,
+// originalLine: 1,
+// originalColumn: 0,
+// name: null }
+// { source: 'illmatic.js',
+// generatedLine: 2,
+// generatedColumn: 0,
+// originalLine: 2,
+// originalColumn: 0,
+// name: null }
+// ...
+```
+### SourceMapGenerator
+
+An instance of the SourceMapGenerator represents a source map which is being
+built incrementally.
+
+#### new SourceMapGenerator([startOfSourceMap])
+
+You may pass an object with the following properties:
+
+* `file`: The filename of the generated source that this source map is
+ associated with.
+
+* `sourceRoot`: A root for all relative URLs in this source map.
+
+* `skipValidation`: Optional. When `true`, disables validation of mappings as
+ they are added. This can improve performance but should be used with
+ discretion, as a last resort. Even then, one should avoid using this flag when
+ running tests, if possible.
+
+```js
+var generator = new sourceMap.SourceMapGenerator({
+ file: "my-generated-javascript-file.js",
+ sourceRoot: "http://example.com/app/js/"
+});
+```
+
+#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)
+
+Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance.
+
+* `sourceMapConsumer` The SourceMap.
+
+```js
+var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer);
+```
+
+#### SourceMapGenerator.prototype.addMapping(mapping)
+
+Add a single mapping from original source line and column to the generated
+source's line and column for this source map being created. The mapping object
+should have the following properties:
+
+* `generated`: An object with the generated line and column positions.
+
+* `original`: An object with the original line and column positions.
+
+* `source`: The original source file (relative to the sourceRoot).
+
+* `name`: An optional original token name for this mapping.
+
+```js
+generator.addMapping({
+ source: "module-one.scm",
+ original: { line: 128, column: 0 },
+ generated: { line: 3, column: 456 }
+})
+```
+
+#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)
+
+Set the source content for an original source file.
+
+* `sourceFile` the URL of the original source file.
+
+* `sourceContent` the content of the source file.
+
+```js
+generator.setSourceContent("module-one.scm",
+ fs.readFileSync("path/to/module-one.scm"))
+```
+
+#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])
+
+Applies a SourceMap for a source file to the SourceMap.
+Each mapping to the supplied source file is rewritten using the
+supplied SourceMap. Note: The resolution for the resulting mappings
+is the minimum of this map and the supplied map.
+
+* `sourceMapConsumer`: The SourceMap to be applied.
+
+* `sourceFile`: Optional. The filename of the source file.
+ If omitted, sourceMapConsumer.file will be used, if it exists.
+ Otherwise an error will be thrown.
+
+* `sourceMapPath`: Optional. The dirname of the path to the SourceMap
+ to be applied. If relative, it is relative to the SourceMap.
+
+ This parameter is needed when the two SourceMaps aren't in the same
+ directory, and the SourceMap to be applied contains relative source
+ paths. If so, those relative source paths need to be rewritten
+ relative to the SourceMap.
+
+ If omitted, it is assumed that both SourceMaps are in the same directory,
+ thus not needing any rewriting. (Supplying `'.'` has the same effect.)
+
+#### SourceMapGenerator.prototype.toString()
+
+Renders the source map being generated to a string.
+
+```js
+generator.toString()
+// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}'
+```
+
+### SourceNode
+
+SourceNodes provide a way to abstract over interpolating and/or concatenating
+snippets of generated JavaScript source code, while maintaining the line and
+column information associated between those snippets and the original source
+code. This is useful as the final intermediate representation a compiler might
+use before outputting the generated JS and source map.
+
+#### new SourceNode([line, column, source[, chunk[, name]]])
+
+* `line`: The original line number associated with this source node, or null if
+ it isn't associated with an original line.
+
+* `column`: The original column number associated with this source node, or null
+ if it isn't associated with an original column.
+
+* `source`: The original source's filename; null if no filename is provided.
+
+* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see
+ below.
+
+* `name`: Optional. The original identifier.
+
+```js
+var node = new SourceNode(1, 2, "a.cpp", [
+ new SourceNode(3, 4, "b.cpp", "extern int status;\n"),
+ new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"),
+ new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"),
+]);
+```
+
+#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])
+
+Creates a SourceNode from generated code and a SourceMapConsumer.
+
+* `code`: The generated code
+
+* `sourceMapConsumer` The SourceMap for the generated code
+
+* `relativePath` The optional path that relative sources in `sourceMapConsumer`
+ should be relative to.
+
+```js
+var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map", "utf8"));
+var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"),
+ consumer);
+```
+
+#### SourceNode.prototype.add(chunk)
+
+Add a chunk of generated JS to this source node.
+
+* `chunk`: A string snippet of generated JS code, another instance of
+ `SourceNode`, or an array where each member is one of those things.
+
+```js
+node.add(" + ");
+node.add(otherNode);
+node.add([leftHandOperandNode, " + ", rightHandOperandNode]);
+```
+
+#### SourceNode.prototype.prepend(chunk)
+
+Prepend a chunk of generated JS to this source node.
+
+* `chunk`: A string snippet of generated JS code, another instance of
+ `SourceNode`, or an array where each member is one of those things.
+
+```js
+node.prepend("/** Build Id: f783haef86324gf **/\n\n");
+```
+
+#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)
+
+Set the source content for a source file. This will be added to the
+`SourceMap` in the `sourcesContent` field.
+
+* `sourceFile`: The filename of the source file
+
+* `sourceContent`: The content of the source file
+
+```js
+node.setSourceContent("module-one.scm",
+ fs.readFileSync("path/to/module-one.scm"))
+```
+
+#### SourceNode.prototype.walk(fn)
+
+Walk over the tree of JS snippets in this node and its children. The walking
+function is called once for each snippet of JS and is passed that snippet and
+the its original associated source's line/column location.
+
+* `fn`: The traversal function.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.walk(function (code, loc) { console.log("WALK:", code, loc); })
+// WALK: uno { source: 'b.js', line: 3, column: 4, name: null }
+// WALK: dos { source: 'a.js', line: 1, column: 2, name: null }
+// WALK: tres { source: 'a.js', line: 1, column: 2, name: null }
+// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null }
+```
+
+#### SourceNode.prototype.walkSourceContents(fn)
+
+Walk over the tree of SourceNodes. The walking function is called for each
+source file content and is passed the filename and source content.
+
+* `fn`: The traversal function.
+
+```js
+var a = new SourceNode(1, 2, "a.js", "generated from a");
+a.setSourceContent("a.js", "original a");
+var b = new SourceNode(1, 2, "b.js", "generated from b");
+b.setSourceContent("b.js", "original b");
+var c = new SourceNode(1, 2, "c.js", "generated from c");
+c.setSourceContent("c.js", "original c");
+
+var node = new SourceNode(null, null, null, [a, b, c]);
+node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); })
+// WALK: a.js : original a
+// WALK: b.js : original b
+// WALK: c.js : original c
+```
+
+#### SourceNode.prototype.join(sep)
+
+Like `Array.prototype.join` except for SourceNodes. Inserts the separator
+between each of this source node's children.
+
+* `sep`: The separator.
+
+```js
+var lhs = new SourceNode(1, 2, "a.rs", "my_copy");
+var operand = new SourceNode(3, 4, "a.rs", "=");
+var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()");
+
+var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]);
+var joinedNode = node.join(" ");
+```
+
+#### SourceNode.prototype.replaceRight(pattern, replacement)
+
+Call `String.prototype.replace` on the very right-most source snippet. Useful
+for trimming white space from the end of a source node, etc.
+
+* `pattern`: The pattern to replace.
+
+* `replacement`: The thing to replace the pattern with.
+
+```js
+// Trim trailing white space.
+node.replaceRight(/\s*$/, "");
+```
+
+#### SourceNode.prototype.toString()
+
+Return the string representation of this source node. Walks over the tree and
+concatenates all the various snippets together to one string.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.toString()
+// 'unodostresquatro'
+```
+
+#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])
+
+Returns the string representation of this tree of source nodes, plus a
+SourceMapGenerator which contains all the mappings between the generated and
+original sources.
+
+The arguments are the same as those to `new SourceMapGenerator`.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.toStringWithSourceMap({ file: "my-output-file.js" })
+// { code: 'unodostresquatro',
+// map: [object SourceMapGenerator] }
+```
diff --git a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js
new file mode 100644
index 0000000000..b5ab6382ab
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.debug.js
@@ -0,0 +1,3091 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["sourceMap"] = factory();
+ else
+ root["sourceMap"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
+ exports.SourceNode = __webpack_require__(10).SourceNode;
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var base64VLQ = __webpack_require__(2);
+ var util = __webpack_require__(4);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var MappingList = __webpack_require__(6).MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = ''
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ var base64 = __webpack_require__(3);
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '<dir>/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+ }());
+
+ function identity (s) {
+ return s;
+ }
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+ }
+ exports.toSetString = supportsNullProto ? identity : toSetString;
+
+ function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+ }
+ exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+ function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var has = Object.prototype.hasOwnProperty;
+ var hasNativeMap = typeof Map !== "undefined";
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+
+
+/***/ })
+/******/ ])
+});
+;
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCBlNDczOGZjNzJhN2IyMzAzOTg4OSIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMkNBQTBDLFNBQVM7QUFDbkQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDL1pBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDREQUEyRDtBQUMzRCxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7Ozs7Ozs7QUMzSUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsb0JBQW1CO0FBQ25CLHFCQUFvQjs7QUFFcEIsaUJBQWdCO0FBQ2hCLGlCQUFnQjs7QUFFaEIsaUJBQWdCO0FBQ2hCLGtCQUFpQjs7QUFFakI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNsRUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0NBQThDLFFBQVE7QUFDdEQ7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLDRCQUEyQixRQUFRO0FBQ25DO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNoYUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXNDLFNBQVM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQ3hIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWdCO0FBQ2hCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7OztBQzlFQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxvQkFBbUI7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7O0FBRVg7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVzs7QUFFWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLE1BQU07QUFDakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1REFBc0Q7QUFDdEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHVEQUFzRCxZQUFZO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBLEVBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0NBQW1DO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBeUIsY0FBYztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXVCLHdDQUF3QztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQStDLG1CQUFtQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQixvQkFBb0I7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE2QixNQUFNO0FBQ25DO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdURBQXNEO0FBQ3REOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBLElBQUc7QUFDSDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUMsc0JBQXFCLCtDQUErQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW1CLDJCQUEyQjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQiwyQkFBMkI7QUFDOUM7QUFDQTtBQUNBLHNCQUFxQiw0QkFBNEI7QUFDakQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7O0FDempDQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7OztBQzlHQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFlBQVcsTUFBTTtBQUNqQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBLFlBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQSxZQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFtQixPQUFPO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXLE1BQU07QUFDakI7QUFDQSxZQUFXLFNBQVM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2pIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBaUMsUUFBUTtBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBNkMsU0FBUztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBb0I7QUFDcEI7QUFDQTtBQUNBLHVDQUFzQztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZSxXQUFXO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnREFBK0MsU0FBUztBQUN4RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSw2Q0FBNEMsY0FBYztBQUMxRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7QUFDWDtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQSxJQUFHO0FBQ0g7QUFDQTtBQUNBLElBQUc7O0FBRUgsV0FBVTtBQUNWOztBQUVBIiwiZmlsZSI6InNvdXJjZS1tYXAuZGVidWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJzb3VyY2VNYXBcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHdlYnBhY2svYm9vdHN0cmFwIGU0NzM4ZmM3MmE3YjIzMDM5ODg5IiwiLypcbiAqIENvcHlyaWdodCAyMDA5LTIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLnR4dCBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuZXhwb3J0cy5Tb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbmV4cG9ydHMuU291cmNlTWFwQ29uc3VtZXIgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyJykuU291cmNlTWFwQ29uc3VtZXI7XG5leHBvcnRzLlNvdXJjZU5vZGUgPSByZXF1aXJlKCcuL2xpYi9zb3VyY2Utbm9kZScpLlNvdXJjZU5vZGU7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NvdXJjZS1tYXAuanNcbi8vIG1vZHVsZSBpZCA9IDBcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbi8qKlxuICogQW4gaW5zdGFuY2Ugb2YgdGhlIFNvdXJjZU1hcEdlbmVyYXRvciByZXByZXNlbnRzIGEgc291cmNlIG1hcCB3aGljaCBpc1xuICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAqIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBzb3VyY2VSb290OiBBIHJvb3QgZm9yIGFsbCByZWxhdGl2ZSBVUkxzIGluIHRoaXMgc291cmNlIG1hcC5cbiAqL1xuZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gIGlmICghYUFyZ3MpIHtcbiAgICBhQXJncyA9IHt9O1xuICB9XG4gIHRoaXMuX2ZpbGUgPSB1dGlsLmdldEFyZyhhQXJncywgJ2ZpbGUnLCBudWxsKTtcbiAgdGhpcy5fc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0gbnVsbDtcbn1cblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IgYmFzZWQgb24gYSBTb3VyY2VNYXBDb25zdW1lclxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcC5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIpIHtcbiAgICB2YXIgc291cmNlUm9vdCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VSb290O1xuICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgIGZpbGU6IGFTb3VyY2VNYXBDb25zdW1lci5maWxlLFxuICAgICAgc291cmNlUm9vdDogc291cmNlUm9vdFxuICAgIH0pO1xuICAgIGFTb3VyY2VNYXBDb25zdW1lci5lYWNoTWFwcGluZyhmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIG5ld01hcHBpbmcgPSB7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbmV3TWFwcGluZy5zb3VyY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3TWFwcGluZy5vcmlnaW5hbCA9IHtcbiAgICAgICAgICBsaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgfSk7XG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZXMuZm9yRWFjaChmdW5jdGlvbiAoc291cmNlRmlsZSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgIGlmIChjb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgZ2VuZXJhdG9yLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfTtcblxuLyoqXG4gKiBBZGQgYSBzaW5nbGUgbWFwcGluZyBmcm9tIG9yaWdpbmFsIHNvdXJjZSBsaW5lIGFuZCBjb2x1bW4gdG8gdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAqIG9iamVjdCBzaG91bGQgaGF2ZSB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICogICAtIG9yaWdpbmFsOiBBbiBvYmplY3Qgd2l0aCB0aGUgb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucy5cbiAqICAgLSBzb3VyY2U6IFRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZSAocmVsYXRpdmUgdG8gdGhlIHNvdXJjZVJvb3QpLlxuICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hZGRNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICB2YXIgZ2VuZXJhdGVkID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdnZW5lcmF0ZWQnKTtcbiAgICB2YXIgb3JpZ2luYWwgPSB1dGlsLmdldEFyZyhhQXJncywgJ29yaWdpbmFsJywgbnVsbCk7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhhQXJncywgJ25hbWUnLCBudWxsKTtcblxuICAgIGlmICghdGhpcy5fc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gU3RyaW5nKHNvdXJjZSk7XG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmFtZSAhPSBudWxsKSB7XG4gICAgICBuYW1lID0gU3RyaW5nKG5hbWUpO1xuICAgICAgaWYgKCF0aGlzLl9uYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgdGhpcy5fbmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX21hcHBpbmdzLmFkZCh7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgIG9yaWdpbmFsTGluZTogb3JpZ2luYWwgIT0gbnVsbCAmJiBvcmlnaW5hbC5saW5lLFxuICAgICAgb3JpZ2luYWxDb2x1bW46IG9yaWdpbmFsICE9IG51bGwgJiYgb3JpZ2luYWwuY29sdW1uLFxuICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICBuYW1lOiBuYW1lXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5fc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG5cbiAgICBpZiAoYVNvdXJjZUNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgLy8gQWRkIHRoZSBzb3VyY2UgY29udGVudCB0byB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgfVxuICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBzb3VyY2UgZmlsZSBmcm9tIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcC5cbiAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgZGVsZXRlIHRoaXMuX3NvdXJjZXNDb250ZW50c1t1dGlsLnRvU2V0U3RyaW5nKHNvdXJjZSldO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuX3NvdXJjZXNDb250ZW50cykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG1hcHBpbmdzIG9mIGEgc3ViLXNvdXJjZS1tYXAgZm9yIGEgc3BlY2lmaWMgc291cmNlIGZpbGUgdG8gdGhlXG4gKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICogcmV3cml0dGVuIHVzaW5nIHRoZSBzdXBwbGllZCBzb3VyY2UgbWFwLiBOb3RlOiBUaGUgcmVzb2x1dGlvbiBmb3IgdGhlXG4gKiByZXN1bHRpbmcgbWFwcGluZ3MgaXMgdGhlIG1pbmltaXVtIG9mIHRoaXMgbWFwIGFuZCB0aGUgc3VwcGxpZWQgbWFwLlxuICpcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIHNvdXJjZSBtYXAgdG8gYmUgYXBwbGllZC5cbiAqIEBwYXJhbSBhU291cmNlRmlsZSBPcHRpb25hbC4gVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS5cbiAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICogQHBhcmFtIGFTb3VyY2VNYXBQYXRoIE9wdGlvbmFsLiBUaGUgZGlybmFtZSBvZiB0aGUgcGF0aCB0byB0aGUgc291cmNlIG1hcFxuICogICAgICAgIHRvIGJlIGFwcGxpZWQuIElmIHJlbGF0aXZlLCBpdCBpcyByZWxhdGl2ZSB0byB0aGUgU291cmNlTWFwQ29uc3VtZXIuXG4gKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAqICAgICAgICBkaXJlY3RvcnksIGFuZCB0aGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkIGNvbnRhaW5zIHJlbGF0aXZlIHNvdXJjZVxuICogICAgICAgIHBhdGhzLiBJZiBzbywgdGhvc2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIG5lZWQgdG8gYmUgcmV3cml0dGVuXG4gKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5hcHBseVNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgIHZhciBzb3VyY2VGaWxlID0gYVNvdXJjZUZpbGU7XG4gICAgLy8gSWYgYVNvdXJjZUZpbGUgaXMgb21pdHRlZCwgd2Ugd2lsbCB1c2UgdGhlIGZpbGUgcHJvcGVydHkgb2YgdGhlIFNvdXJjZU1hcFxuICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICBpZiAoYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAnb3IgdGhlIHNvdXJjZSBtYXBcXCdzIFwiZmlsZVwiIHByb3BlcnR5LiBCb3RoIHdlcmUgb21pdHRlZC4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzb3VyY2VGaWxlID0gYVNvdXJjZU1hcENvbnN1bWVyLmZpbGU7XG4gICAgfVxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAvLyBNYWtlIFwic291cmNlRmlsZVwiIHJlbGF0aXZlIGlmIGFuIGFic29sdXRlIFVybCBpcyBwYXNzZWQuXG4gICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgfVxuICAgIC8vIEFwcGx5aW5nIHRoZSBTb3VyY2VNYXAgY2FuIGFkZCBhbmQgcmVtb3ZlIGl0ZW1zIGZyb20gdGhlIHNvdXJjZXMgYW5kXG4gICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgIHZhciBuZXdTb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdmFyIG5ld05hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICB0aGlzLl9tYXBwaW5ncy51bnNvcnRlZEZvckVhY2goZnVuY3Rpb24gKG1hcHBpbmcpIHtcbiAgICAgIGlmIChtYXBwaW5nLnNvdXJjZSA9PT0gc291cmNlRmlsZSAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICB2YXIgb3JpZ2luYWwgPSBhU291cmNlTWFwQ29uc3VtZXIub3JpZ2luYWxQb3NpdGlvbkZvcih7XG4gICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IG9yaWdpbmFsLnNvdXJjZTtcbiAgICAgICAgICBpZiAoYVNvdXJjZU1hcFBhdGggIT0gbnVsbCkge1xuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSA9IG9yaWdpbmFsLmxpbmU7XG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICBpZiAob3JpZ2luYWwubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIW5ld1NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgbmV3U291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICBpZiAobmFtZSAhPSBudWxsICYmICFuZXdOYW1lcy5oYXMobmFtZSkpIHtcbiAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgfVxuXG4gICAgfSwgdGhpcyk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXdOYW1lcztcblxuICAgIC8vIENvcHkgc291cmNlc0NvbnRlbnRzIG9mIGFwcGxpZWQgbWFwLlxuICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgIHZhciBjb250ZW50ID0gYVNvdXJjZU1hcENvbnN1bWVyLnNvdXJjZUNvbnRlbnRGb3Ioc291cmNlRmlsZSk7XG4gICAgICBpZiAoY29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhU291cmNlTWFwUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIHNvdXJjZUZpbGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9LCB0aGlzKTtcbiAgfTtcblxuLyoqXG4gKiBBIG1hcHBpbmcgY2FuIGhhdmUgb25lIG9mIHRoZSB0aHJlZSBsZXZlbHMgb2YgZGF0YTpcbiAqXG4gKiAgIDEuIEp1c3QgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi5cbiAqICAgMi4gVGhlIEdlbmVyYXRlZCBwb3NpdGlvbiwgb3JpZ2luYWwgcG9zaXRpb24sIGFuZCBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAqICAgICAgdG9rZW4uXG4gKlxuICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gKiBpbiB0byBvbmUgb2YgdGhlc2UgY2F0ZWdvcmllcy5cbiAqL1xuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX3ZhbGlkYXRlTWFwcGluZyhhR2VuZXJhdGVkLCBhT3JpZ2luYWwsIGFTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYU5hbWUpIHtcbiAgICAvLyBXaGVuIGFPcmlnaW5hbCBpcyB0cnV0aHkgYnV0IGhhcyBlbXB0eSB2YWx1ZXMgZm9yIC5saW5lIGFuZCAuY29sdW1uLFxuICAgIC8vIGl0IGlzIG1vc3QgbGlrZWx5IGEgcHJvZ3JhbW1lciBlcnJvci4gSW4gdGhpcyBjYXNlIHdlIHRocm93IGEgdmVyeVxuICAgIC8vIHNwZWNpZmljIGVycm9yIG1lc3NhZ2UgdG8gdHJ5IHRvIGd1aWRlIHRoZW0gdGhlIHJpZ2h0IHdheS5cbiAgICAvLyBGb3IgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL1BvbHltZXIvcG9seW1lci1idW5kbGVyL3B1bGwvNTE5XG4gICAgaWYgKGFPcmlnaW5hbCAmJiB0eXBlb2YgYU9yaWdpbmFsLmxpbmUgIT09ICdudW1iZXInICYmIHR5cGVvZiBhT3JpZ2luYWwuY29sdW1uICE9PSAnbnVtYmVyJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnb3JpZ2luYWwubGluZSBhbmQgb3JpZ2luYWwuY29sdW1uIGFyZSBub3QgbnVtYmVycyAtLSB5b3UgcHJvYmFibHkgbWVhbnQgdG8gb21pdCAnICtcbiAgICAgICAgICAgICd0aGUgb3JpZ2luYWwgbWFwcGluZyBlbnRpcmVseSBhbmQgb25seSBtYXAgdGhlIGdlbmVyYXRlZCBwb3NpdGlvbi4gSWYgc28sIHBhc3MgJyArXG4gICAgICAgICAgICAnbnVsbCBmb3IgdGhlIG9yaWdpbmFsIG1hcHBpbmcgaW5zdGVhZCBvZiBhbiBvYmplY3Qgd2l0aCBlbXB0eSBvciBudWxsIHZhbHVlcy4nXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGFHZW5lcmF0ZWQgJiYgJ2xpbmUnIGluIGFHZW5lcmF0ZWQgJiYgJ2NvbHVtbicgaW4gYUdlbmVyYXRlZFxuICAgICAgICAmJiBhR2VuZXJhdGVkLmxpbmUgPiAwICYmIGFHZW5lcmF0ZWQuY29sdW1uID49IDBcbiAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgIC8vIENhc2UgMS5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsICYmICdsaW5lJyBpbiBhT3JpZ2luYWwgJiYgJ2NvbHVtbicgaW4gYU9yaWdpbmFsXG4gICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgJiYgYU9yaWdpbmFsLmxpbmUgPiAwICYmIGFPcmlnaW5hbC5jb2x1bW4gPj0gMFxuICAgICAgICAgICAgICYmIGFTb3VyY2UpIHtcbiAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1hcHBpbmc6ICcgKyBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGdlbmVyYXRlZDogYUdlbmVyYXRlZCxcbiAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICBvcmlnaW5hbDogYU9yaWdpbmFsLFxuICAgICAgICBuYW1lOiBhTmFtZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIGFjY3VtdWxhdGVkIG1hcHBpbmdzIGluIHRvIHRoZSBzdHJlYW0gb2YgYmFzZSA2NCBWTFFzXG4gKiBzcGVjaWZpZWQgYnkgdGhlIHNvdXJjZSBtYXAgZm9ybWF0LlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9zZXJpYWxpemVNYXBwaW5ncyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXJpYWxpemVNYXBwaW5ncygpIHtcbiAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgIHZhciBwcmV2aW91c05hbWUgPSAwO1xuICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgIHZhciBuZXh0O1xuICAgIHZhciBtYXBwaW5nO1xuICAgIHZhciBuYW1lSWR4O1xuICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICB2YXIgbWFwcGluZ3MgPSB0aGlzLl9tYXBwaW5ncy50b0FycmF5KCk7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG1hcHBpbmdzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG4gICAgICBuZXh0ID0gJydcblxuICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICAgICAgd2hpbGUgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbmV4dCArPSAnOyc7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICBpZiAoIXV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZywgbWFwcGluZ3NbaSAtIDFdKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQgKz0gJywnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c0dlbmVyYXRlZENvbHVtbik7XG4gICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2VJZHggPSB0aGlzLl9zb3VyY2VzLmluZGV4T2YobWFwcGluZy5zb3VyY2UpO1xuICAgICAgICBuZXh0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICBwcmV2aW91c1NvdXJjZSA9IHNvdXJjZUlkeDtcblxuICAgICAgICAvLyBsaW5lcyBhcmUgc3RvcmVkIDAtYmFzZWQgaW4gU291cmNlTWFwIHNwZWMgdmVyc2lvbiAzXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsTGluZSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBwcmV2aW91c09yaWdpbmFsTGluZSk7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgIG5leHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgIHByZXZpb3VzT3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLm5hbWUgIT0gbnVsbCkge1xuICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgbmV4dCArPSBiYXNlNjRWTFEuZW5jb2RlKG5hbWVJZHggLSBwcmV2aW91c05hbWUpO1xuICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9IG5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KGFTb3VyY2VzLCBhU291cmNlUm9vdCkge1xuICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBpZiAoYVNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKGFTb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgdmFyIGtleSA9IHV0aWwudG9TZXRTdHJpbmcoc291cmNlKTtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fc291cmNlc0NvbnRlbnRzLCBrZXkpXG4gICAgICAgID8gdGhpcy5fc291cmNlc0NvbnRlbnRzW2tleV1cbiAgICAgICAgOiBudWxsO1xuICAgIH0sIHRoaXMpO1xuICB9O1xuXG4vKipcbiAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICovXG5Tb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnRvSlNPTiA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgdmFyIG1hcCA9IHtcbiAgICAgIHZlcnNpb246IHRoaXMuX3ZlcnNpb24sXG4gICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgIG5hbWVzOiB0aGlzLl9uYW1lcy50b0FycmF5KCksXG4gICAgICBtYXBwaW5nczogdGhpcy5fc2VyaWFsaXplTWFwcGluZ3MoKVxuICAgIH07XG4gICAgaWYgKHRoaXMuX2ZpbGUgIT0gbnVsbCkge1xuICAgICAgbWFwLmZpbGUgPSB0aGlzLl9maWxlO1xuICAgIH1cbiAgICBpZiAodGhpcy5fc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBtYXAuc291cmNlUm9vdCA9IHRoaXMuX3NvdXJjZVJvb3Q7XG4gICAgfVxuICAgIGlmICh0aGlzLl9zb3VyY2VzQ29udGVudHMpIHtcbiAgICAgIG1hcC5zb3VyY2VzQ29udGVudCA9IHRoaXMuX2dlbmVyYXRlU291cmNlc0NvbnRlbnQobWFwLnNvdXJjZXMsIG1hcC5zb3VyY2VSb290KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9O1xuXG4vKipcbiAqIFJlbmRlciB0aGUgc291cmNlIG1hcCBiZWluZyBnZW5lcmF0ZWQgdG8gYSBzdHJpbmcuXG4gKi9cblNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMudG9KU09OKCkpO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IFNvdXJjZU1hcEdlbmVyYXRvcjtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yLmpzXG4vLyBtb2R1bGUgaWQgPSAxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbi8vIEEgc2luZ2xlIGJhc2UgNjQgZGlnaXQgY2FuIGNvbnRhaW4gNiBiaXRzIG9mIGRhdGEuIEZvciB0aGUgYmFzZSA2NCB2YXJpYWJsZVxuLy8gbGVuZ3RoIHF1YW50aXRpZXMgd2UgdXNlIGluIHRoZSBzb3VyY2UgbWFwIHNwZWMsIHRoZSBmaXJzdCBiaXQgaXMgdGhlIHNpZ24sXG4vLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbi8vIGNvbnRpbnVhdGlvbiBiaXQuIFRoZSBjb250aW51YXRpb24gYml0IHRlbGxzIHVzIHdoZXRoZXIgdGhlcmUgYXJlIG1vcmVcbi8vIGRpZ2l0cyBpbiB0aGlzIHZhbHVlIGZvbGxvd2luZyB0aGlzIGRpZ2l0LlxuLy9cbi8vICAgQ29udGludWF0aW9uXG4vLyAgIHwgICAgU2lnblxuLy8gICB8ICAgIHxcbi8vICAgViAgICBWXG4vLyAgIDEwMTAxMVxuXG52YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9CQVNFID0gMSA8PCBWTFFfQkFTRV9TSElGVDtcblxuLy8gYmluYXJ5OiAwMTExMTFcbnZhciBWTFFfQkFTRV9NQVNLID0gVkxRX0JBU0UgLSAxO1xuXG4vLyBiaW5hcnk6IDEwMDAwMFxudmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbi8qKlxuICogQ29udmVydHMgZnJvbSBhIHR3by1jb21wbGVtZW50IHZhbHVlIHRvIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMSBiZWNvbWVzIDIgKDEwIGJpbmFyeSksIC0xIGJlY29tZXMgMyAoMTEgYmluYXJ5KVxuICogICAyIGJlY29tZXMgNCAoMTAwIGJpbmFyeSksIC0yIGJlY29tZXMgNSAoMTAxIGJpbmFyeSlcbiAqL1xuZnVuY3Rpb24gdG9WTFFTaWduZWQoYVZhbHVlKSB7XG4gIHJldHVybiBhVmFsdWUgPCAwXG4gICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgIDogKGFWYWx1ZSA8PCAxKSArIDA7XG59XG5cbi8qKlxuICogQ29udmVydHMgdG8gYSB0d28tY29tcGxlbWVudCB2YWx1ZSBmcm9tIGEgdmFsdWUgd2hlcmUgdGhlIHNpZ24gYml0IGlzXG4gKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICogICA0ICgxMDAgYmluYXJ5KSBiZWNvbWVzIDIsIDUgKDEwMSBiaW5hcnkpIGJlY29tZXMgLTJcbiAqL1xuZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgdmFyIGlzTmVnYXRpdmUgPSAoYVZhbHVlICYgMSkgPT09IDE7XG4gIHZhciBzaGlmdGVkID0gYVZhbHVlID4+IDE7XG4gIHJldHVybiBpc05lZ2F0aXZlXG4gICAgPyAtc2hpZnRlZFxuICAgIDogc2hpZnRlZDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiYXNlIDY0IFZMUSBlbmNvZGVkIHZhbHVlLlxuICovXG5leHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIGJhc2U2NFZMUV9lbmNvZGUoYVZhbHVlKSB7XG4gIHZhciBlbmNvZGVkID0gXCJcIjtcbiAgdmFyIGRpZ2l0O1xuXG4gIHZhciB2bHEgPSB0b1ZMUVNpZ25lZChhVmFsdWUpO1xuXG4gIGRvIHtcbiAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgdmxxID4+Pj0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgaWYgKHZscSA+IDApIHtcbiAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgIC8vIGNvbnRpbnVhdGlvbiBiaXQgaXMgbWFya2VkLlxuICAgICAgZGlnaXQgfD0gVkxRX0NPTlRJTlVBVElPTl9CSVQ7XG4gICAgfVxuICAgIGVuY29kZWQgKz0gYmFzZTY0LmVuY29kZShkaWdpdCk7XG4gIH0gd2hpbGUgKHZscSA+IDApO1xuXG4gIHJldHVybiBlbmNvZGVkO1xufTtcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAqIHZhbHVlIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIHZpYSB0aGUgb3V0IHBhcmFtZXRlci5cbiAqL1xuZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gIHZhciBzdHJMZW4gPSBhU3RyLmxlbmd0aDtcbiAgdmFyIHJlc3VsdCA9IDA7XG4gIHZhciBzaGlmdCA9IDA7XG4gIHZhciBjb250aW51YXRpb24sIGRpZ2l0O1xuXG4gIGRvIHtcbiAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXhwZWN0ZWQgbW9yZSBkaWdpdHMgaW4gYmFzZSA2NCBWTFEgdmFsdWUuXCIpO1xuICAgIH1cblxuICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICBpZiAoZGlnaXQgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBkaWdpdDogXCIgKyBhU3RyLmNoYXJBdChhSW5kZXggLSAxKSk7XG4gICAgfVxuXG4gICAgY29udGludWF0aW9uID0gISEoZGlnaXQgJiBWTFFfQ09OVElOVUFUSU9OX0JJVCk7XG4gICAgZGlnaXQgJj0gVkxRX0JBU0VfTUFTSztcbiAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgIHNoaWZ0ICs9IFZMUV9CQVNFX1NISUZUO1xuICB9IHdoaWxlIChjb250aW51YXRpb24pO1xuXG4gIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgYU91dFBhcmFtLnJlc3QgPSBhSW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LXZscS5qc1xuLy8gbW9kdWxlIGlkID0gMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBpbnRUb0NoYXJNYXAgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycuc3BsaXQoJycpO1xuXG4vKipcbiAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gKi9cbmV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gKG51bWJlcikge1xuICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgIHJldHVybiBpbnRUb0NoYXJNYXBbbnVtYmVyXTtcbiAgfVxuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG59O1xuXG4vKipcbiAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAqIGZhaWx1cmUuXG4gKi9cbmV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gIHZhciBiaWdBID0gNjU7ICAgICAvLyAnQSdcbiAgdmFyIGJpZ1ogPSA5MDsgICAgIC8vICdaJ1xuXG4gIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgdmFyIGxpdHRsZVogPSAxMjI7IC8vICd6J1xuXG4gIHZhciB6ZXJvID0gNDg7ICAgICAvLyAnMCdcbiAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gIHZhciBwbHVzID0gNDM7ICAgICAvLyAnKydcbiAgdmFyIHNsYXNoID0gNDc7ICAgIC8vICcvJ1xuXG4gIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgdmFyIG51bWJlck9mZnNldCA9IDUyO1xuXG4gIC8vIDAgLSAyNTogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcbiAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgIHJldHVybiAoY2hhckNvZGUgLSBiaWdBKTtcbiAgfVxuXG4gIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gIGlmIChsaXR0bGVBIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IGxpdHRsZVopIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gbGl0dGxlQSArIGxpdHRsZU9mZnNldCk7XG4gIH1cblxuICAvLyA1MiAtIDYxOiAwMTIzNDU2Nzg5XG4gIGlmICh6ZXJvIDw9IGNoYXJDb2RlICYmIGNoYXJDb2RlIDw9IG5pbmUpIHtcbiAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gIH1cblxuICAvLyA2MjogK1xuICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgIHJldHVybiA2MjtcbiAgfVxuXG4gIC8vIDYzOiAvXG4gIGlmIChjaGFyQ29kZSA9PSBzbGFzaCkge1xuICAgIHJldHVybiA2MztcbiAgfVxuXG4gIC8vIEludmFsaWQgYmFzZTY0IGRpZ2l0LlxuICByZXR1cm4gLTE7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmFzZTY0LmpzXG4vLyBtb2R1bGUgaWQgPSAzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gKiBvYmplY3RzLlxuICpcbiAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB3ZSBhcmUgZ2V0dGluZy5cbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgQW4gb3B0aW9uYWwgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBwcm9wZXJ0eSBpcyBtaXNzaW5nXG4gKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gKiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAqL1xuZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICBpZiAoYU5hbWUgaW4gYUFyZ3MpIHtcbiAgICByZXR1cm4gYUFyZ3NbYU5hbWVdO1xuICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICByZXR1cm4gYURlZmF1bHRWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gIH1cbn1cbmV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG52YXIgdXJsUmVnZXhwID0gL14oPzooW1xcdytcXC0uXSspOik/XFwvXFwvKD86KFxcdys6XFx3KylAKT8oW1xcdy5dKikoPzo6KFxcZCspKT8oXFxTKikkLztcbnZhciBkYXRhVXJsUmVnZXhwID0gL15kYXRhOi4rXFwsLiskLztcblxuZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICB2YXIgbWF0Y2ggPSBhVXJsLm1hdGNoKHVybFJlZ2V4cCk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgYXV0aDogbWF0Y2hbMl0sXG4gICAgaG9zdDogbWF0Y2hbM10sXG4gICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgcGF0aDogbWF0Y2hbNV1cbiAgfTtcbn1cbmV4cG9ydHMudXJsUGFyc2UgPSB1cmxQYXJzZTtcblxuZnVuY3Rpb24gdXJsR2VuZXJhdGUoYVBhcnNlZFVybCkge1xuICB2YXIgdXJsID0gJyc7XG4gIGlmIChhUGFyc2VkVXJsLnNjaGVtZSkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLnNjaGVtZSArICc6JztcbiAgfVxuICB1cmwgKz0gJy8vJztcbiAgaWYgKGFQYXJzZWRVcmwuYXV0aCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwuaG9zdCkge1xuICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gIH1cbiAgaWYgKGFQYXJzZWRVcmwucG9ydCkge1xuICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICB9XG4gIGlmIChhUGFyc2VkVXJsLnBhdGgpIHtcbiAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICB9XG4gIHJldHVybiB1cmw7XG59XG5leHBvcnRzLnVybEdlbmVyYXRlID0gdXJsR2VuZXJhdGU7XG5cbi8qKlxuICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gKlxuICogLSBSZXBsYWNlcyBjb25zZWN1dGl2ZSBzbGFzaGVzIHdpdGggb25lIHNsYXNoLlxuICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAqIC0gUmVtb3ZlcyB1bm5lY2Vzc2FyeSAnPGRpcj4vLi4nIHBhcnRzLlxuICpcbiAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICpcbiAqIEBwYXJhbSBhUGF0aCBUaGUgcGF0aCBvciB1cmwgdG8gbm9ybWFsaXplLlxuICovXG5mdW5jdGlvbiBub3JtYWxpemUoYVBhdGgpIHtcbiAgdmFyIHBhdGggPSBhUGF0aDtcbiAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgaWYgKHVybCkge1xuICAgIGlmICghdXJsLnBhdGgpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG4gICAgcGF0aCA9IHVybC5wYXRoO1xuICB9XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpO1xuXG4gIHZhciBwYXJ0cyA9IHBhdGguc3BsaXQoL1xcLysvKTtcbiAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBwYXJ0ID0gcGFydHNbaV07XG4gICAgaWYgKHBhcnQgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgaWYgKHBhcnQgPT09ICcnKSB7XG4gICAgICAgIC8vIFRoZSBmaXJzdCBwYXJ0IGlzIGJsYW5rIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLiBUcnlpbmcgdG8gZ29cbiAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgLy8gZGlyZWN0bHkgYWZ0ZXIgdGhlIHJvb3QuXG4gICAgICAgIHBhcnRzLnNwbGljZShpICsgMSwgdXApO1xuICAgICAgICB1cCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5zcGxpY2UoaSwgMik7XG4gICAgICAgIHVwLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHBhdGggPSBwYXJ0cy5qb2luKCcvJyk7XG5cbiAgaWYgKHBhdGggPT09ICcnKSB7XG4gICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gIH1cblxuICBpZiAodXJsKSB7XG4gICAgdXJsLnBhdGggPSBwYXRoO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZSh1cmwpO1xuICB9XG4gIHJldHVybiBwYXRoO1xufVxuZXhwb3J0cy5ub3JtYWxpemUgPSBub3JtYWxpemU7XG5cbi8qKlxuICogSm9pbnMgdHdvIHBhdGhzL1VSTHMuXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBqb2luZWQgd2l0aCB0aGUgcm9vdC5cbiAqXG4gKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICogICBzY2hlbWUtcmVsYXRpdmUgVVJMOiBUaGVuIHRoZSBzY2hlbWUgb2YgYVJvb3QsIGlmIGFueSwgaXMgcHJlcGVuZGVkXG4gKiAgIGZpcnN0LlxuICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gKiAgIGlzIHVwZGF0ZWQgd2l0aCB0aGUgcmVzdWx0IGFuZCBhUm9vdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRcbiAqICAgaXMgcmV0dXJuZWQuXG4gKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gKiAgIC0gT3RoZXJ3aXNlIHRoZSB0d28gcGF0aHMgYXJlIGpvaW5lZCB3aXRoIGEgc2xhc2guXG4gKiAtIEpvaW5pbmcgZm9yIGV4YW1wbGUgJ2h0dHA6Ly8nIGFuZCAnd3d3LmV4YW1wbGUuY29tJyBpcyBhbHNvIHN1cHBvcnRlZC5cbiAqL1xuZnVuY3Rpb24gam9pbihhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuICBpZiAoYVBhdGggPT09IFwiXCIpIHtcbiAgICBhUGF0aCA9IFwiLlwiO1xuICB9XG4gIHZhciBhUGF0aFVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdCA9IGFSb290VXJsLnBhdGggfHwgJy8nO1xuICB9XG5cbiAgLy8gYGpvaW4oZm9vLCAnLy93d3cuZXhhbXBsZS5vcmcnKWBcbiAgaWYgKGFQYXRoVXJsICYmICFhUGF0aFVybC5zY2hlbWUpIHtcbiAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgIGFQYXRoVXJsLnNjaGVtZSA9IGFSb290VXJsLnNjaGVtZTtcbiAgICB9XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgfVxuXG4gIGlmIChhUGF0aFVybCB8fCBhUGF0aC5tYXRjaChkYXRhVXJsUmVnZXhwKSkge1xuICAgIHJldHVybiBhUGF0aDtcbiAgfVxuXG4gIC8vIGBqb2luKCdodHRwOi8vJywgJ3d3dy5leGFtcGxlLmNvbScpYFxuICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICBhUm9vdFVybC5ob3N0ID0gYVBhdGg7XG4gICAgcmV0dXJuIHVybEdlbmVyYXRlKGFSb290VXJsKTtcbiAgfVxuXG4gIHZhciBqb2luZWQgPSBhUGF0aC5jaGFyQXQoMCkgPT09ICcvJ1xuICAgID8gYVBhdGhcbiAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICBpZiAoYVJvb3RVcmwpIHtcbiAgICBhUm9vdFVybC5wYXRoID0gam9pbmVkO1xuICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gIH1cbiAgcmV0dXJuIGpvaW5lZDtcbn1cbmV4cG9ydHMuam9pbiA9IGpvaW47XG5cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uIChhUGF0aCkge1xuICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgISFhUGF0aC5tYXRjaCh1cmxSZWdleHApO1xufTtcblxuLyoqXG4gKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gKlxuICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICovXG5mdW5jdGlvbiByZWxhdGl2ZShhUm9vdCwgYVBhdGgpIHtcbiAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgYVJvb3QgPSBcIi5cIjtcbiAgfVxuXG4gIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAvLyBJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHBhdGggdG8gYmUgYWJvdmUgdGhlIHJvb3QuIEluIHRoaXMgY2FzZSwgc2ltcGx5XG4gIC8vIGNoZWNraW5nIHdoZXRoZXIgdGhlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlIHBhdGggd29uJ3Qgd29yay4gSW5zdGVhZCwgd2VcbiAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gIC8vIGEgcHJlZml4IHRoYXQgZml0cywgb3Igd2UgcnVuIG91dCBvZiBjb21wb25lbnRzIHRvIHJlbW92ZS5cbiAgdmFyIGxldmVsID0gMDtcbiAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgdmFyIGluZGV4ID0gYVJvb3QubGFzdEluZGV4T2YoXCIvXCIpO1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgb25seSBwYXJ0IG9mIHRoZSByb290IHRoYXQgaXMgbGVmdCBpcyB0aGUgc2NoZW1lIChpLmUuIGh0dHA6Ly8sXG4gICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgIC8vIGhhdmUgZXhoYXVzdGVkIGFsbCBjb21wb25lbnRzLCBzbyB0aGUgcGF0aCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHJvb3QuXG4gICAgYVJvb3QgPSBhUm9vdC5zbGljZSgwLCBpbmRleCk7XG4gICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICByZXR1cm4gYVBhdGg7XG4gICAgfVxuXG4gICAgKytsZXZlbDtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSB3ZSBhZGQgYSBcIi4uL1wiIGZvciBlYWNoIGNvbXBvbmVudCB3ZSByZW1vdmVkIGZyb20gdGhlIHJvb3QuXG4gIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG59XG5leHBvcnRzLnJlbGF0aXZlID0gcmVsYXRpdmU7XG5cbnZhciBzdXBwb3J0c051bGxQcm90byA9IChmdW5jdGlvbiAoKSB7XG4gIHZhciBvYmogPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICByZXR1cm4gISgnX19wcm90b19fJyBpbiBvYmopO1xufSgpKTtcblxuZnVuY3Rpb24gaWRlbnRpdHkgKHMpIHtcbiAgcmV0dXJuIHM7XG59XG5cbi8qKlxuICogQmVjYXVzZSBiZWhhdmlvciBnb2VzIHdhY2t5IHdoZW4geW91IHNldCBgX19wcm90b19fYCBvbiBvYmplY3RzLCB3ZVxuICogaGF2ZSB0byBwcmVmaXggYWxsIHRoZSBzdHJpbmdzIGluIG91ciBzZXQgd2l0aCBhbiBhcmJpdHJhcnkgY2hhcmFjdGVyLlxuICpcbiAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL3B1bGwvMzEgYW5kXG4gKiBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8zMFxuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5mdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gIGlmIChpc1Byb3RvU3RyaW5nKGFTdHIpKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cblxuICByZXR1cm4gYVN0cjtcbn1cbmV4cG9ydHMudG9TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogdG9TZXRTdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICBpZiAoaXNQcm90b1N0cmluZyhhU3RyKSkge1xuICAgIHJldHVybiBhU3RyLnNsaWNlKDEpO1xuICB9XG5cbiAgcmV0dXJuIGFTdHI7XG59XG5leHBvcnRzLmZyb21TZXRTdHJpbmcgPSBzdXBwb3J0c051bGxQcm90byA/IGlkZW50aXR5IDogZnJvbVNldFN0cmluZztcblxuZnVuY3Rpb24gaXNQcm90b1N0cmluZyhzKSB7XG4gIGlmICghcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBsZW5ndGggPSBzLmxlbmd0aDtcblxuICBpZiAobGVuZ3RoIDwgOSAvKiBcIl9fcHJvdG9fX1wiLmxlbmd0aCAqLykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChzLmNoYXJDb2RlQXQobGVuZ3RoIC0gMSkgIT09IDk1ICAvKiAnXycgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSAyKSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDMpICE9PSAxMTEgLyogJ28nICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNCkgIT09IDExNiAvKiAndCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA1KSAhPT0gMTExIC8qICdvJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDYpICE9PSAxMTQgLyogJ3InICovIHx8XG4gICAgICBzLmNoYXJDb2RlQXQobGVuZ3RoIC0gNykgIT09IDExMiAvKiAncCcgKi8gfHxcbiAgICAgIHMuY2hhckNvZGVBdChsZW5ndGggLSA4KSAhPT0gOTUgIC8qICdfJyAqLyB8fFxuICAgICAgcy5jaGFyQ29kZUF0KGxlbmd0aCAtIDkpICE9PSA5NSAgLyogJ18nICovKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IGxlbmd0aCAtIDEwOyBpID49IDA7IGktLSkge1xuICAgIGlmIChzLmNoYXJDb2RlQXQoaSkgIT09IDM2IC8qICckJyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2hlcmUgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKlxuICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICogbWFwcGluZ3Mgd2l0aCB0aGUgc2FtZSBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4sIGJ1dCBkaWZmZXJlbnQgZ2VuZXJhdGVkXG4gKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICogc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAqL1xuZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gIHZhciBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDAgfHwgb25seUNvbXBhcmVPcmlnaW5hbCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyA9IGNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zO1xuXG4vKipcbiAqIENvbXBhcmF0b3IgYmV0d2VlbiB0d28gbWFwcGluZ3Mgd2l0aCBkZWZsYXRlZCBzb3VyY2UgYW5kIG5hbWUgaW5kaWNlcyB3aGVyZVxuICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICpcbiAqIE9wdGlvbmFsbHkgcGFzcyBpbiBgdHJ1ZWAgYXMgYG9ubHlDb21wYXJlR2VuZXJhdGVkYCB0byBjb25zaWRlciB0d29cbiAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiwgYnV0IGRpZmZlcmVudFxuICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAqIG1hcHBpbmcgd2l0aCBhIHN0dWJiZWQgb3V0IG1hcHBpbmcuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgIHJldHVybiBjbXA7XG4gIH1cblxuICBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xufVxuZXhwb3J0cy5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCA9IGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkO1xuXG5mdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gIGlmIChhU3RyMSA9PT0gYVN0cjIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGlmIChhU3RyMSA+IGFTdHIyKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGluZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBzdHJpbmdzIHdoZXJlXG4gKiB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucyBhcmUgY29tcGFyZWQuXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikge1xuICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IHN0cmNtcChtYXBwaW5nQS5zb3VyY2UsIG1hcHBpbmdCLnNvdXJjZSk7XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgY21wID0gbWFwcGluZ0Eub3JpZ2luYWxMaW5lIC0gbWFwcGluZ0Iub3JpZ2luYWxMaW5lO1xuICBpZiAoY21wICE9PSAwKSB7XG4gICAgcmV0dXJuIGNtcDtcbiAgfVxuXG4gIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gIGlmIChjbXAgIT09IDApIHtcbiAgICByZXR1cm4gY21wO1xuICB9XG5cbiAgcmV0dXJuIHN0cmNtcChtYXBwaW5nQS5uYW1lLCBtYXBwaW5nQi5uYW1lKTtcbn1cbmV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL3V0aWwuanNcbi8vIG1vZHVsZSBpZCA9IDRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgaGFzTmF0aXZlTWFwID0gdHlwZW9mIE1hcCAhPT0gXCJ1bmRlZmluZWRcIjtcblxuLyoqXG4gKiBBIGRhdGEgc3RydWN0dXJlIHdoaWNoIGlzIGEgY29tYmluYXRpb24gb2YgYW4gYXJyYXkgYW5kIGEgc2V0LiBBZGRpbmcgYSBuZXdcbiAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICogZWxlbWVudCBpcyBPKDEpLiBSZW1vdmluZyBlbGVtZW50cyBmcm9tIHRoZSBzZXQgaXMgbm90IHN1cHBvcnRlZC4gT25seVxuICogc3RyaW5ncyBhcmUgc3VwcG9ydGVkIGZvciBtZW1iZXJzaGlwLlxuICovXG5mdW5jdGlvbiBBcnJheVNldCgpIHtcbiAgdGhpcy5fYXJyYXkgPSBbXTtcbiAgdGhpcy5fc2V0ID0gaGFzTmF0aXZlTWFwID8gbmV3IE1hcCgpIDogT2JqZWN0LmNyZWF0ZShudWxsKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgbWV0aG9kIGZvciBjcmVhdGluZyBBcnJheVNldCBpbnN0YW5jZXMgZnJvbSBhbiBleGlzdGluZyBhcnJheS5cbiAqL1xuQXJyYXlTZXQuZnJvbUFycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfZnJvbUFycmF5KGFBcnJheSwgYUFsbG93RHVwbGljYXRlcykge1xuICB2YXIgc2V0ID0gbmV3IEFycmF5U2V0KCk7XG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBzZXQuYWRkKGFBcnJheVtpXSwgYUFsbG93RHVwbGljYXRlcyk7XG4gIH1cbiAgcmV0dXJuIHNldDtcbn07XG5cbi8qKlxuICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAqIGFkZGVkLCB0aGFuIHRob3NlIGRvIG5vdCBjb3VudCB0b3dhcmRzIHRoZSBzaXplLlxuICpcbiAqIEByZXR1cm5zIE51bWJlclxuICovXG5BcnJheVNldC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIEFycmF5U2V0X3NpemUoKSB7XG4gIHJldHVybiBoYXNOYXRpdmVNYXAgPyB0aGlzLl9zZXQuc2l6ZSA6IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMuX3NldCkubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHN0cmluZyB0byB0aGlzIHNldC5cbiAqXG4gKiBAcGFyYW0gU3RyaW5nIGFTdHJcbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gIHZhciBzU3RyID0gaGFzTmF0aXZlTWFwID8gYVN0ciA6IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gIHZhciBpc0R1cGxpY2F0ZSA9IGhhc05hdGl2ZU1hcCA/IHRoaXMuaGFzKGFTdHIpIDogaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKTtcbiAgdmFyIGlkeCA9IHRoaXMuX2FycmF5Lmxlbmd0aDtcbiAgaWYgKCFpc0R1cGxpY2F0ZSB8fCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgfVxuICBpZiAoIWlzRHVwbGljYXRlKSB7XG4gICAgaWYgKGhhc05hdGl2ZU1hcCkge1xuICAgICAgdGhpcy5fc2V0LnNldChhU3RyLCBpZHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZXRbc1N0cl0gPSBpZHg7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIElzIHRoZSBnaXZlbiBzdHJpbmcgYSBtZW1iZXIgb2YgdGhpcyBzZXQ/XG4gKlxuICogQHBhcmFtIFN0cmluZyBhU3RyXG4gKi9cbkFycmF5U2V0LnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiBBcnJheVNldF9oYXMoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXMoYVN0cik7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHJldHVybiBoYXMuY2FsbCh0aGlzLl9zZXQsIHNTdHIpO1xuICB9XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGluZGV4IG9mIHRoZSBnaXZlbiBzdHJpbmcgaW4gdGhlIGFycmF5P1xuICpcbiAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICovXG5BcnJheVNldC5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIEFycmF5U2V0X2luZGV4T2YoYVN0cikge1xuICBpZiAoaGFzTmF0aXZlTWFwKSB7XG4gICAgdmFyIGlkeCA9IHRoaXMuX3NldC5nZXQoYVN0cik7XG4gICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIHJldHVybiBpZHg7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBzU3RyID0gdXRpbC50b1NldFN0cmluZyhhU3RyKTtcbiAgICBpZiAoaGFzLmNhbGwodGhpcy5fc2V0LCBzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTdHIgKyAnXCIgaXMgbm90IGluIHRoZSBzZXQuJyk7XG59O1xuXG4vKipcbiAqIFdoYXQgaXMgdGhlIGVsZW1lbnQgYXQgdGhlIGdpdmVuIGluZGV4P1xuICpcbiAqIEBwYXJhbSBOdW1iZXIgYUlkeFxuICovXG5BcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gIGlmIChhSWR4ID49IDAgJiYgYUlkeCA8IHRoaXMuX2FycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLl9hcnJheVthSWR4XTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ05vIGVsZW1lbnQgaW5kZXhlZCBieSAnICsgYUlkeCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc2V0ICh3aGljaCBoYXMgdGhlIHByb3BlciBpbmRpY2VzXG4gKiBpbmRpY2F0ZWQgYnkgaW5kZXhPZikuIE5vdGUgdGhhdCB0aGlzIGlzIGEgY29weSBvZiB0aGUgaW50ZXJuYWwgYXJyYXkgdXNlZFxuICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAqL1xuQXJyYXlTZXQucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF90b0FycmF5KCkge1xuICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbn07XG5cbmV4cG9ydHMuQXJyYXlTZXQgPSBBcnJheVNldDtcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbGliL2FycmF5LXNldC5qc1xuLy8gbW9kdWxlIGlkID0gNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTQgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG5cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICogcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gIC8vIE9wdGltaXplZCBmb3IgbW9zdCBjb21tb24gY2FzZVxuICB2YXIgbGluZUEgPSBtYXBwaW5nQS5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICB2YXIgY29sdW1uQSA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbjtcbiAgdmFyIGNvbHVtbkIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nQSwgbWFwcGluZ0IpIDw9IDA7XG59XG5cbi8qKlxuICogQSBkYXRhIHN0cnVjdHVyZSB0byBwcm92aWRlIGEgc29ydGVkIHZpZXcgb2YgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gYVxuICogcGVyZm9ybWFuY2UgY29uc2Npb3VzIG1hbm5lci4gSXQgdHJhZGVzIGEgbmVnbGliYWJsZSBvdmVyaGVhZCBpbiBnZW5lcmFsXG4gKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAqL1xuZnVuY3Rpb24gTWFwcGluZ0xpc3QoKSB7XG4gIHRoaXMuX2FycmF5ID0gW107XG4gIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gIC8vIFNlcnZlcyBhcyBpbmZpbXVtXG4gIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG59XG5cbi8qKlxuICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICogYEFycmF5LnByb3RvdHlwZS5mb3JFYWNoYCB0YWtlcy5cbiAqXG4gKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICovXG5NYXBwaW5nTGlzdC5wcm90b3R5cGUudW5zb3J0ZWRGb3JFYWNoID1cbiAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgdGhpcy5fYXJyYXkuZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKTtcbiAgfTtcblxuLyoqXG4gKiBBZGQgdGhlIGdpdmVuIHNvdXJjZSBtYXBwaW5nLlxuICpcbiAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIE1hcHBpbmdMaXN0X2FkZChhTWFwcGluZykge1xuICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICB0aGlzLl9sYXN0ID0gYU1hcHBpbmc7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fc29ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5fYXJyYXkucHVzaChhTWFwcGluZyk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICogZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICpcbiAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICogcGVyZm9ybWFuY2UuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBOT1QgYmUgbXV0YXRlZCwgYW5kIHNob3VsZCBiZSB0cmVhdGVkIGFzXG4gKiBhbiBpbW11dGFibGUgYm9ycm93LiBJZiB5b3Ugd2FudCB0byB0YWtlIG93bmVyc2hpcCwgeW91IG11c3QgbWFrZSB5b3VyIG93blxuICogY29weS5cbiAqL1xuTWFwcGluZ0xpc3QucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF90b0FycmF5KCkge1xuICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgIHRoaXMuX2FycmF5LnNvcnQodXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZCk7XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGhpcy5fYXJyYXk7XG59O1xuXG5leHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2xpYi9tYXBwaW5nLWxpc3QuanNcbi8vIG1vZHVsZSBpZCA9IDZcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xudmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xudmFyIEFycmF5U2V0ID0gcmVxdWlyZSgnLi9hcnJheS1zZXQnKS5BcnJheVNldDtcbnZhciBiYXNlNjRWTFEgPSByZXF1aXJlKCcuL2Jhc2U2NC12bHEnKTtcbnZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbmZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICB9XG5cbiAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgPyBuZXcgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcClcbiAgICA6IG5ldyBCYXNpY1NvdXJjZU1hcENvbnN1bWVyKHNvdXJjZU1hcCk7XG59XG5cblNvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAgPSBmdW5jdGlvbihhU291cmNlTWFwKSB7XG4gIHJldHVybiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLmZyb21Tb3VyY2VNYXAoYVNvdXJjZU1hcCk7XG59XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4vLyBgX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kIGBfX29yaWdpbmFsTWFwcGluZ3NgIGFyZSBhcnJheXMgdGhhdCBob2xkIHRoZVxuLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbi8vIGFyZSBsYXppbHkgaW5zdGFudGlhdGVkLCBhY2Nlc3NlZCB2aWEgdGhlIGBfZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuLy8gYF9vcmlnaW5hbE1hcHBpbmdzYCBnZXR0ZXJzIHJlc3BlY3RpdmVseSwgYW5kIHdlIG9ubHkgcGFyc2UgdGhlIG1hcHBpbmdzXG4vLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbi8vIHRoZXNlIGhvb3BzIGJlY2F1c2UgdGhlcmUgY2FuIGJlIG1hbnkgdGhvdXNhbmRzIG9mIG1hcHBpbmdzLCBhbmQgcGFyc2luZ1xuLy8gdGhlbSBpcyBleHBlbnNpdmUsIHNvIHdlIG9ubHkgd2FudCB0byBkbyBpdCBpZiB3ZSBtdXN0LlxuLy9cbi8vIEVhY2ggb2JqZWN0IGluIHRoZSBhcnJheXMgaXMgb2YgdGhlIGZvcm06XG4vL1xuLy8gICAgIHtcbi8vICAgICAgIGdlbmVyYXRlZExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBnZW5lcmF0ZWRDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbi8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbi8vICAgICAgICAgICAgICAgY2h1bmsgb2YgY29kZSxcbi8vICAgICAgIG9yaWdpbmFsTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuLy8gICAgICAgb3JpZ2luYWxDb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UgdGhhdFxuLy8gICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIHRoaXMgY2h1bmsgb2YgZ2VuZXJhdGVkIGNvZGUsXG4vLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4vLyAgICAgICAgICAgICBjb2RlLlxuLy8gICAgIH1cbi8vXG4vLyBBbGwgcHJvcGVydGllcyBleGNlcHQgZm9yIGBnZW5lcmF0ZWRMaW5lYCBhbmQgYGdlbmVyYXRlZENvbHVtbmAgY2FuIGJlXG4vLyBgbnVsbGAuXG4vL1xuLy8gYF9nZW5lcmF0ZWRNYXBwaW5nc2AgaXMgb3JkZXJlZCBieSB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9ucy5cbi8vXG4vLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19nZW5lcmF0ZWRNYXBwaW5ncycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCF0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MpIHtcbiAgICAgIHRoaXMuX3BhcnNlTWFwcGluZ3ModGhpcy5fbWFwcGluZ3MsIHRoaXMuc291cmNlUm9vdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fX29yaWdpbmFsTWFwcGluZ3MgPSBudWxsO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ19vcmlnaW5hbE1hcHBpbmdzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19vcmlnaW5hbE1hcHBpbmdzKSB7XG4gICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncztcbiAgfVxufSk7XG5cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fY2hhcklzTWFwcGluZ1NlcGFyYXRvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NoYXJJc01hcHBpbmdTZXBhcmF0b3IoYVN0ciwgaW5kZXgpIHtcbiAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICByZXR1cm4gYyA9PT0gXCI7XCIgfHwgYyA9PT0gXCIsXCI7XG4gIH07XG5cbi8qKlxuICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICovXG5Tb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCBfcGFyc2VNYXBwaW5nc1wiKTtcbiAgfTtcblxuU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcblNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSID0gMjtcblxuU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBlYWNoIG1hcHBpbmcgYmV0d2VlbiBhbiBvcmlnaW5hbCBzb3VyY2UvbGluZS9jb2x1bW4gYW5kIGFcbiAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gKlxuICogQHBhcmFtIEZ1bmN0aW9uIGFDYWxsYmFja1xuICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAqIEBwYXJhbSBPYmplY3QgYUNvbnRleHRcbiAqICAgICAgICBPcHRpb25hbC4gSWYgc3BlY2lmaWVkLCB0aGlzIG9iamVjdCB3aWxsIGJlIHRoZSB2YWx1ZSBvZiBgdGhpc2AgZXZlcnlcbiAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICogQHBhcmFtIGFPcmRlclxuICogICAgICAgIEVpdGhlciBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYCBvclxuICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gKiAgICAgICAgaXRlcmF0ZSBvdmVyIHRoZSBtYXBwaW5ncyBzb3J0ZWQgYnkgdGhlIGdlbmVyYXRlZCBmaWxlJ3MgbGluZS9jb2x1bW5cbiAqICAgICAgICBvcmRlciBvciB0aGUgb3JpZ2luYWwncyBzb3VyY2UvbGluZS9jb2x1bW4gb3JkZXIsIHJlc3BlY3RpdmVseS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAqL1xuU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmVhY2hNYXBwaW5nID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgdmFyIGNvbnRleHQgPSBhQ29udGV4dCB8fCBudWxsO1xuICAgIHZhciBvcmRlciA9IGFPcmRlciB8fCBTb3VyY2VNYXBDb25zdW1lci5HRU5FUkFURURfT1JERVI7XG5cbiAgICB2YXIgbWFwcGluZ3M7XG4gICAgc3dpdGNoIChvcmRlcikge1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSOlxuICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVI6XG4gICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgIH1cblxuICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5zb3VyY2VSb290O1xuICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgdmFyIHNvdXJjZSA9IG1hcHBpbmcuc291cmNlID09PSBudWxsID8gbnVsbCA6IHRoaXMuX3NvdXJjZXMuYXQobWFwcGluZy5zb3VyY2UpO1xuICAgICAgaWYgKHNvdXJjZSAhPSBudWxsICYmIHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4oc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBnZW5lcmF0ZWRMaW5lOiBtYXBwaW5nLmdlbmVyYXRlZExpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4sXG4gICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICBuYW1lOiBtYXBwaW5nLm5hbWUgPT09IG51bGwgPyBudWxsIDogdGhpcy5fbmFtZXMuYXQobWFwcGluZy5uYW1lKVxuICAgICAgfTtcbiAgICB9LCB0aGlzKS5mb3JFYWNoKGFDYWxsYmFjaywgY29udGV4dCk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyBhbGwgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAqIGxpbmUsIGFuZCBjb2x1bW4gcHJvdmlkZWQuIElmIG5vIGNvbHVtbiBpcyBwcm92aWRlZCwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAqIGNsb3Nlc3QgbGluZSB0aGF0IGhhcyBhbnkgbWFwcGluZ3MuIE90aGVyd2lzZSwgcmV0dXJucyBhbGwgbWFwcGluZ3NcbiAqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGxpbmUgYW5kIGVpdGhlciB0aGUgY29sdW1uIHdlIGFyZSBzZWFyY2hpbmcgZm9yXG4gKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAqXG4gKiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAqXG4gKiBhbmQgYW4gYXJyYXkgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCwgZWFjaCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gKi9cblNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9hbGxHZW5lcmF0ZWRQb3NpdGlvbnNGb3IoYUFyZ3MpIHtcbiAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBleGFjdCBtYXRjaCwgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nXG4gICAgLy8gcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGNsb3Nlc3QgbWFwcGluZyBsZXNzIHRoYW4gdGhlIG5lZWRsZS4gQnlcbiAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAvLyB0aGUgZ2l2ZW4gbGluZSwgcHJvdmlkZWQgc3VjaCBhIG1hcHBpbmcgZXhpc3RzLlxuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICBvcmlnaW5hbExpbmU6IGxpbmUsXG4gICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nLCAwKVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgIG5lZWRsZS5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgbmVlZGxlLnNvdXJjZSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5fc291cmNlcy5oYXMobmVlZGxlLnNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgbmVlZGxlLnNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihuZWVkbGUuc291cmNlKTtcblxuICAgIHZhciBtYXBwaW5ncyA9IFtdO1xuXG4gICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbmFsTWFwcGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQpO1xuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAoYUFyZ3MuY29sdW1uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2UgZm91bmQuIFNpbmNlXG4gICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgLy8gdGhlIGxpbmUgd2UgZm91bmQuXG4gICAgICAgIHdoaWxlIChtYXBwaW5nICYmIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBvcmlnaW5hbExpbmUpIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3JpZ2luYWxDb2x1bW4gPSBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uO1xuXG4gICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgIC8vIGEgbWFwcGluZyBmb3IgYSBkaWZmZXJlbnQgbGluZSB0aGFuIHRoZSBvbmUgd2Ugd2VyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAvLyBTaW5jZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB0aGlzIGlzIGd1YXJhbnRlZWQgdG8gZmluZCBhbGwgbWFwcGluZ3MgZm9yXG4gICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICB3aGlsZSAobWFwcGluZyAmJlxuICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09IGxpbmUgJiZcbiAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdzO1xuICB9O1xuXG5leHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluc3RhbmNlIHJlcHJlc2VudHMgYSBwYXJzZWQgc291cmNlIG1hcCB3aGljaCB3ZSBjYW5cbiAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICogcG9zaXRpb24gaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKlxuICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gKiBhbHJlYWR5IHBhcnNlZCB0byBhbiBvYmplY3QpLiBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHNvdXJjZSBtYXBzIGhhdmUgdGhlXG4gKiBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAqXG4gKiAgIC0gdmVyc2lvbjogV2hpY2ggdmVyc2lvbiBvZiB0aGUgc291cmNlIG1hcCBzcGVjIHRoaXMgbWFwIGlzIGZvbGxvd2luZy5cbiAqICAgLSBzb3VyY2VzOiBBbiBhcnJheSBvZiBVUkxzIHRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMuXG4gKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICogICAtIHNvdXJjZVJvb3Q6IE9wdGlvbmFsLiBUaGUgVVJMIHJvb3QgZnJvbSB3aGljaCBhbGwgc291cmNlcyBhcmUgcmVsYXRpdmUuXG4gKiAgIC0gc291cmNlc0NvbnRlbnQ6IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBjb250ZW50cyBvZiB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICpcbiAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gKlxuICogICAgIHtcbiAqICAgICAgIHZlcnNpb24gOiAzLFxuICogICAgICAgZmlsZTogXCJvdXQuanNcIixcbiAqICAgICAgIHNvdXJjZVJvb3QgOiBcIlwiLFxuICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICogICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICBtYXBwaW5nczogXCJBQSxBQjs7QUJDREU7XCJcbiAqICAgICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQ/cGxpPTEjXG4gKi9cbmZ1bmN0aW9uIEJhc2ljU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNvdXJjZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzJyk7XG4gIC8vIFNhc3MgMy4zIGxlYXZlcyBvdXQgdGhlICduYW1lcycgYXJyYXksIHNvIHdlIGRldmlhdGUgZnJvbSB0aGUgc3BlYyAod2hpY2hcbiAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgdmFyIG5hbWVzID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnbmFtZXMnLCBbXSk7XG4gIHZhciBzb3VyY2VSb290ID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc291cmNlUm9vdCcsIG51bGwpO1xuICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICB2YXIgbWFwcGluZ3MgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdtYXBwaW5ncycpO1xuICB2YXIgZmlsZSA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ2ZpbGUnLCBudWxsKTtcblxuICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgLy8gc3RyaW5nIHJhdGhlciB0aGFuIGEgbnVtYmVyLCBzbyB3ZSB1c2UgbG9vc2UgZXF1YWxpdHkgY2hlY2tpbmcgaGVyZS5cbiAgaWYgKHZlcnNpb24gIT0gdGhpcy5fdmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICB9XG5cbiAgc291cmNlcyA9IHNvdXJjZXNcbiAgICAubWFwKFN0cmluZylcbiAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAvLyBcImZvby5qc1wiLiAgTm9ybWFsaXplIHRoZXNlIGZpcnN0IHNvIHRoYXQgZnV0dXJlIGNvbXBhcmlzb25zIHdpbGwgc3VjY2VlZC5cbiAgICAvLyBTZWUgYnVnemlsLmxhLzEwOTA3NjguXG4gICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAvLyBBbHdheXMgZW5zdXJlIHRoYXQgYWJzb2x1dGUgc291cmNlcyBhcmUgaW50ZXJuYWxseSBzdG9yZWQgcmVsYXRpdmUgdG9cbiAgICAvLyB0aGUgc291cmNlIHJvb3QsIGlmIHRoZSBzb3VyY2Ugcm9vdCBpcyBhYnNvbHV0ZS4gTm90IGRvaW5nIHRoaXMgd291bGRcbiAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgLy8gc291cmNlICh2YWxpZCwgYnV0IHdoeT8/KS4gU2VlIGdpdGh1YiBpc3N1ZSAjMTk5IGFuZCBidWd6aWwubGEvMTE4ODk4Mi5cbiAgICAubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICA/IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlKVxuICAgICAgICA6IHNvdXJjZTtcbiAgICB9KTtcblxuICAvLyBQYXNzIGB0cnVlYCBiZWxvdyB0byBhbGxvdyBkdXBsaWNhdGUgbmFtZXMgYW5kIHNvdXJjZXMuIFdoaWxlIHNvdXJjZSBtYXBzXG4gIC8vIGFyZSBpbnRlbmRlZCB0byBiZSBjb21wcmVzc2VkIGFuZCBkZWR1cGxpY2F0ZWQsIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyXG4gIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgLy8gIzcyIGFuZCBidWd6aWwubGEvODg5NDkyLlxuICB0aGlzLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShuYW1lcy5tYXAoU3RyaW5nKSwgdHJ1ZSk7XG4gIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgdGhpcy5zb3VyY2VSb290ID0gc291cmNlUm9vdDtcbiAgdGhpcy5zb3VyY2VzQ29udGVudCA9IHNvdXJjZXNDb250ZW50O1xuICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICB0aGlzLmZpbGUgPSBmaWxlO1xufVxuXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbi8qKlxuICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICpcbiAqIEBwYXJhbSBTb3VyY2VNYXBHZW5lcmF0b3IgYVNvdXJjZU1hcFxuICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAqIEByZXR1cm5zIEJhc2ljU291cmNlTWFwQ29uc3VtZXJcbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZnJvbVNvdXJjZU1hcChhU291cmNlTWFwKSB7XG4gICAgdmFyIHNtYyA9IE9iamVjdC5jcmVhdGUoQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuXG4gICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgIHZhciBzb3VyY2VzID0gc21jLl9zb3VyY2VzID0gQXJyYXlTZXQuZnJvbUFycmF5KGFTb3VyY2VNYXAuX3NvdXJjZXMudG9BcnJheSgpLCB0cnVlKTtcbiAgICBzbWMuc291cmNlUm9vdCA9IGFTb3VyY2VNYXAuX3NvdXJjZVJvb3Q7XG4gICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc21jLnNvdXJjZVJvb3QpO1xuICAgIHNtYy5maWxlID0gYVNvdXJjZU1hcC5fZmlsZTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAvLyBuYW1lcyB0byBpbmRpY2VzIGludG8gdGhlIHNvdXJjZXMgYW5kIG5hbWVzIEFycmF5U2V0cyksIHdlIGhhdmUgdG8gbWFrZVxuICAgIC8vIGEgY29weSBvZiB0aGUgZW50cnkgb3IgZWxzZSBiYWQgdGhpbmdzIGhhcHBlbi4gU2hhcmVkIG11dGFibGUgc3RhdGVcbiAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICB2YXIgZ2VuZXJhdGVkTWFwcGluZ3MgPSBhU291cmNlTWFwLl9tYXBwaW5ncy50b0FycmF5KCkuc2xpY2UoKTtcbiAgICB2YXIgZGVzdEdlbmVyYXRlZE1hcHBpbmdzID0gc21jLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBbXTtcbiAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoID0gZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzcmNNYXBwaW5nID0gZ2VuZXJhdGVkTWFwcGluZ3NbaV07XG4gICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgIGRlc3RNYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBzcmNNYXBwaW5nLmdlbmVyYXRlZExpbmU7XG4gICAgICBkZXN0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gPSBzcmNNYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgIGRlc3RNYXBwaW5nLnNvdXJjZSA9IHNvdXJjZXMuaW5kZXhPZihzcmNNYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGRlc3RNYXBwaW5nLm9yaWdpbmFsTGluZSA9IHNyY01hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcubmFtZSkge1xuICAgICAgICAgIGRlc3RNYXBwaW5nLm5hbWUgPSBuYW1lcy5pbmRleE9mKHNyY01hcHBpbmcubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkZXN0T3JpZ2luYWxNYXBwaW5ncy5wdXNoKGRlc3RNYXBwaW5nKTtcbiAgICAgIH1cblxuICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgIH1cblxuICAgIHF1aWNrU29ydChzbWMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcblxuICAgIHJldHVybiBzbWM7XG4gIH07XG5cbi8qKlxuICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NvdXJjZXMudG9BcnJheSgpLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlUm9vdCAhPSBudWxsID8gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgcykgOiBzO1xuICAgIH0sIHRoaXMpO1xuICB9XG59KTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBKSVQgd2l0aCBhIG5pY2Ugc2hhcGUgLyBoaWRkZW4gY2xhc3MuXG4gKi9cbmZ1bmN0aW9uIE1hcHBpbmcoKSB7XG4gIHRoaXMuZ2VuZXJhdGVkTGluZSA9IDA7XG4gIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgdGhpcy5zb3VyY2UgPSBudWxsO1xuICB0aGlzLm9yaWdpbmFsTGluZSA9IG51bGw7XG4gIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICB0aGlzLm5hbWUgPSBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgdmFyIGdlbmVyYXRlZExpbmUgPSAxO1xuICAgIHZhciBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgdmFyIHByZXZpb3VzU291cmNlID0gMDtcbiAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICB2YXIgbGVuZ3RoID0gYVN0ci5sZW5ndGg7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICB2YXIgdGVtcCA9IHt9O1xuICAgIHZhciBvcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgdmFyIG1hcHBpbmcsIHN0ciwgc2VnbWVudCwgZW5kLCB2YWx1ZTtcblxuICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkge1xuICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgIGdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgaW5kZXgrKztcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYVN0ci5jaGFyQXQoaW5kZXgpID09PSAnLCcpIHtcbiAgICAgICAgaW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgbWFwcGluZy5nZW5lcmF0ZWRMaW5lID0gZ2VuZXJhdGVkTGluZTtcblxuICAgICAgICAvLyBCZWNhdXNlIGVhY2ggb2Zmc2V0IGlzIGVuY29kZWQgcmVsYXRpdmUgdG8gdGhlIHByZXZpb3VzIG9uZSxcbiAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgIC8vIGZhY3QgYnkgY2FjaGluZyB0aGUgcGFyc2VkIHZhcmlhYmxlIGxlbmd0aCBmaWVsZHMgb2YgZWFjaCBzZWdtZW50LFxuICAgICAgICAvLyBhbGxvd2luZyB1cyB0byBhdm9pZCBhIHNlY29uZCBwYXJzZSBpZiB3ZSBlbmNvdW50ZXIgdGhlIHNhbWVcbiAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgZm9yIChlbmQgPSBpbmRleDsgZW5kIDwgbGVuZ3RoOyBlbmQrKykge1xuICAgICAgICAgIGlmICh0aGlzLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGVuZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgIHNlZ21lbnQgPSBjYWNoZWRTZWdtZW50c1tzdHJdO1xuICAgICAgICBpZiAoc2VnbWVudCkge1xuICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VnbWVudCA9IFtdO1xuICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgYmFzZTY0VkxRLmRlY29kZShhU3RyLCBpbmRleCwgdGVtcCk7XG4gICAgICAgICAgICB2YWx1ZSA9IHRlbXAudmFsdWU7XG4gICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgIHNlZ21lbnQucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlLCBidXQgbm8gbGluZSBhbmQgY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZvdW5kIGEgc291cmNlIGFuZCBsaW5lLCBidXQgbm8gY29sdW1uJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZW5lcmF0ZWQgY29sdW1uLlxuICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gcHJldmlvdXNTb3VyY2UgKyBzZWdtZW50WzFdO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlICs9IHNlZ21lbnRbMV07XG5cbiAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID0gcHJldmlvdXNPcmlnaW5hbExpbmUgKyBzZWdtZW50WzJdO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmU7XG4gICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgKz0gMTtcblxuICAgICAgICAgIC8vIE9yaWdpbmFsIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc2VnbWVudC5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gcHJldmlvdXNOYW1lICsgc2VnbWVudFs0XTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSArPSBzZWdtZW50WzRdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGdlbmVyYXRlZE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgb3JpZ2luYWxNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcXVpY2tTb3J0KGdlbmVyYXRlZE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKTtcbiAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgIHF1aWNrU29ydChvcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG9yaWdpbmFsTWFwcGluZ3M7XG4gIH07XG5cbi8qKlxuICogRmluZCB0aGUgbWFwcGluZyB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgaHlwb3RoZXRpY2FsIFwibmVlZGxlXCIgbWFwcGluZyB0aGF0XG4gKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmcgPVxuICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUNvbHVtbk5hbWUsIGFDb21wYXJhdG9yLCBhQmlhcykge1xuICAgIC8vIFRvIHJldHVybiB0aGUgcG9zaXRpb24gd2UgYXJlIHNlYXJjaGluZyBmb3IsIHdlIG11c3QgZmlyc3QgZmluZCB0aGVcbiAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgIC8vIHBvaW50cyB0by4gQmVjYXVzZSB0aGUgbWFwcGluZ3MgYXJlIHNvcnRlZCwgd2UgY2FuIHVzZSBiaW5hcnkgc2VhcmNoIHRvXG4gICAgLy8gZmluZCB0aGUgYmVzdCBtYXBwaW5nLlxuXG4gICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdMaW5lIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDEsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthTGluZU5hbWVdKTtcbiAgICB9XG4gICAgaWYgKGFOZWVkbGVbYUNvbHVtbk5hbWVdIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ29sdW1uIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAsIGdvdCAnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgIH1cblxuICAgIHJldHVybiBiaW5hcnlTZWFyY2guc2VhcmNoKGFOZWVkbGUsIGFNYXBwaW5ncywgYUNvbXBhcmF0b3IsIGFCaWFzKTtcbiAgfTtcblxuLyoqXG4gKiBDb21wdXRlIHRoZSBsYXN0IGNvbHVtbiBmb3IgZWFjaCBnZW5lcmF0ZWQgbWFwcGluZy4gVGhlIGxhc3QgY29sdW1uIGlzXG4gKiBpbmNsdXNpdmUuXG4gKi9cbkJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmNvbXB1dGVDb2x1bW5TcGFucyA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MubGVuZ3RoOyArK2luZGV4KSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4XTtcblxuICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAvLyBjYW4gY29tZSB1cCB3aXRoIGFuIG9wdGltaXN0aWMgZXN0aW1hdGUsIGhvd2V2ZXIsIGJ5IGFzc3VtaW5nIHRoYXRcbiAgICAgIC8vIG1hcHBpbmdzIGFyZSBjb250aWd1b3VzIChpLmUuIGdpdmVuIHR3byBjb25zZWN1dGl2ZSBtYXBwaW5ncywgdGhlXG4gICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgIGlmIChpbmRleCArIDEgPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIG5leHRNYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXggKyAxXTtcblxuICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gbmV4dE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC0gMTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGUgbGFzdCBtYXBwaW5nIGZvciBlYWNoIGxpbmUgc3BhbnMgdGhlIGVudGlyZSBsaW5lLlxuICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgfVxuICB9O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0XG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICogICAgIERlZmF1bHRzIHRvICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gKlxuICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAqXG4gKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UsIG9yIG51bGwuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICBnZW5lcmF0ZWRMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgIH07XG5cbiAgICB2YXIgaW5kZXggPSB0aGlzLl9maW5kTWFwcGluZyhcbiAgICAgIG5lZWRsZSxcbiAgICAgIHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLFxuICAgICAgXCJnZW5lcmF0ZWRMaW5lXCIsXG4gICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCxcbiAgICAgIHV0aWwuZ2V0QXJnKGFBcmdzLCAnYmlhcycsIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EKVxuICAgICk7XG5cbiAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnc291cmNlJywgbnVsbCk7XG4gICAgICAgIGlmIChzb3VyY2UgIT09IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4odGhpcy5zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICduYW1lJywgbnVsbCk7XG4gICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmF0KG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgbmFtZTogbmFtZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2U6IG51bGwsXG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgbmFtZTogbnVsbFxuICAgIH07XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMgPVxuICBmdW5jdGlvbiBCYXNpY1NvdXJjZU1hcENvbnN1bWVyX2hhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCkge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICF0aGlzLnNvdXJjZXNDb250ZW50LnNvbWUoZnVuY3Rpb24gKHNjKSB7IHJldHVybiBzYyA9PSBudWxsOyB9KTtcbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UgY29udGVudC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgdGhlIHVybCBvZiB0aGVcbiAqIG9yaWdpbmFsIHNvdXJjZSBmaWxlLiBSZXR1cm5zIG51bGwgaWYgbm8gb3JpZ2luYWwgc291cmNlIGNvbnRlbnQgaXNcbiAqIGF2YWlsYWJsZS5cbiAqL1xuQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBhU291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIGFTb3VyY2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9zb3VyY2VzLmhhcyhhU291cmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGFTb3VyY2UpXTtcbiAgICB9XG5cbiAgICB2YXIgdXJsO1xuICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbFxuICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgLy8gWFhYOiBmaWxlOi8vIFVSSXMgYW5kIGFic29sdXRlIHBhdGhzIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciBmb3JcbiAgICAgIC8vIG1hbnkgdXNlcnMuIFdlIGNhbiBoZWxwIHRoZW0gb3V0IHdoZW4gdGhleSBleHBlY3QgZmlsZTovLyBVUklzIHRvXG4gICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTg4NTU5Ny5cbiAgICAgIHZhciBmaWxlVXJpQWJzUGF0aCA9IGFTb3VyY2UucmVwbGFjZSgvXmZpbGU6XFwvXFwvLywgXCJcIik7XG4gICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICYmIHRoaXMuX3NvdXJjZXMuaGFzKGZpbGVVcmlBYnNQYXRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudFt0aGlzLl9zb3VyY2VzLmluZGV4T2YoZmlsZVVyaUFic1BhdGgpXVxuICAgICAgfVxuXG4gICAgICBpZiAoKCF1cmwucGF0aCB8fCB1cmwucGF0aCA9PSBcIi9cIilcbiAgICAgICAgICAmJiB0aGlzLl9zb3VyY2VzLmhhcyhcIi9cIiArIGFTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIGFTb3VyY2UpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgIC8vIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvci4gSW4gdGhhdCBjYXNlLCB3ZVxuICAgIC8vIGRvbid0IHdhbnQgdG8gdGhyb3cgaWYgd2UgY2FuJ3QgZmluZCB0aGUgc291cmNlIC0gd2UganVzdCB3YW50IHRvXG4gICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICogICAtIGJpYXM6IEVpdGhlciAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnIG9yXG4gKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5CYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyk7XG4gICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBsaW5lOiBudWxsLFxuICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICAgIH07XG4gICAgfVxuICAgIHNvdXJjZSA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihzb3VyY2UpO1xuXG4gICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgb3JpZ2luYWxMaW5lOiB1dGlsLmdldEFyZyhhQXJncywgJ2xpbmUnKSxcbiAgICAgIG9yaWdpbmFsQ29sdW1uOiB1dGlsLmdldEFyZyhhQXJncywgJ2NvbHVtbicpXG4gICAgfTtcblxuICAgIHZhciBpbmRleCA9IHRoaXMuX2ZpbmRNYXBwaW5nKFxuICAgICAgbmVlZGxlLFxuICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgdXRpbC5nZXRBcmcoYUFyZ3MsICdiaWFzJywgU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQpXG4gICAgKTtcblxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICB2YXIgbWFwcGluZyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IG5lZWRsZS5zb3VyY2UpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZENvbHVtbicsIG51bGwpLFxuICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbnVsbCxcbiAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgIGxhc3RDb2x1bW46IG51bGxcbiAgICB9O1xuICB9O1xuXG5leHBvcnRzLkJhc2ljU291cmNlTWFwQ29uc3VtZXIgPSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAqIHdlIGNhbiBxdWVyeSBmb3IgaW5mb3JtYXRpb24uIEl0IGRpZmZlcnMgZnJvbSBCYXNpY1NvdXJjZU1hcENvbnN1bWVyIGluXG4gKiB0aGF0IGl0IHRha2VzIFwiaW5kZXhlZFwiIHNvdXJjZSBtYXBzIChpLmUuIG9uZXMgd2l0aCBhIFwic2VjdGlvbnNcIiBmaWVsZCkgYXNcbiAqIGlucHV0LlxuICpcbiAqIFRoZSBvbmx5IHBhcmFtZXRlciBpcyBhIHJhdyBzb3VyY2UgbWFwIChlaXRoZXIgYXMgYSBKU09OIHN0cmluZywgb3IgYWxyZWFkeVxuICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICogaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gKlxuICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gKiAgIC0gZmlsZTogT3B0aW9uYWwuIFRoZSBnZW5lcmF0ZWQgZmlsZSB0aGlzIHNvdXJjZSBtYXAgaXMgYXNzb2NpYXRlZCB3aXRoLlxuICogICAtIHNlY3Rpb25zOiBBIGxpc3Qgb2Ygc2VjdGlvbiBkZWZpbml0aW9ucy5cbiAqXG4gKiBFYWNoIHZhbHVlIHVuZGVyIHRoZSBcInNlY3Rpb25zXCIgZmllbGQgaGFzIHR3byBmaWVsZHM6XG4gKiAgIC0gb2Zmc2V0OiBUaGUgb2Zmc2V0IGludG8gdGhlIG9yaWdpbmFsIHNwZWNpZmllZCBhdCB3aGljaCB0aGlzIHNlY3Rpb25cbiAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gKiAgICAgICBmaWVsZC5cbiAqICAgLSBtYXA6IEEgc291cmNlIG1hcCBkZWZpbml0aW9uLiBUaGlzIHNvdXJjZSBtYXAgY291bGQgYWxzbyBiZSBpbmRleGVkLFxuICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSBcIm1hcFwiIGZpZWxkLCBpdCdzIGFsc28gcG9zc2libGUgdG8gaGF2ZSBhIFwidXJsXCIgZmllbGRcbiAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gKiB1bnN1cHBvcnRlZC5cbiAqXG4gKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICogbW9kaWZpZWQgdG8gb21pdCBhIHNlY3Rpb24gd2hpY2ggdXNlcyB0aGUgXCJ1cmxcIiBmaWVsZC5cbiAqXG4gKiAge1xuICogICAgdmVyc2lvbiA6IDMsXG4gKiAgICBmaWxlOiBcImFwcC5qc1wiLFxuICogICAgc2VjdGlvbnM6IFt7XG4gKiAgICAgIG9mZnNldDoge2xpbmU6MTAwLCBjb2x1bW46MTB9LFxuICogICAgICBtYXA6IHtcbiAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAqICAgICAgICBmaWxlOiBcInNlY3Rpb24uanNcIixcbiAqICAgICAgICBzb3VyY2VzOiBbXCJmb28uanNcIiwgXCJiYXIuanNcIl0sXG4gKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gKiAgICAgICAgbWFwcGluZ3M6IFwiQUFBQSxFOztBQkNERTtcIlxuICogICAgICB9XG4gKiAgICB9XSxcbiAqICB9XG4gKlxuICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICovXG5mdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgdmFyIHNlY3Rpb25zID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAnc2VjdGlvbnMnKTtcblxuICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB2ZXJzaW9uOiAnICsgdmVyc2lvbik7XG4gIH1cblxuICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG5cbiAgdmFyIGxhc3RPZmZzZXQgPSB7XG4gICAgbGluZTogLTEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgaWYgKHMudXJsKSB7XG4gICAgICAvLyBUaGUgdXJsIGZpZWxkIHdpbGwgcmVxdWlyZSBzdXBwb3J0IGZvciBhc3luY2hyb25pY2l0eS5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdXBwb3J0IGZvciB1cmwgZmllbGQgaW4gc2VjdGlvbnMgbm90IGltcGxlbWVudGVkLicpO1xuICAgIH1cbiAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgIHZhciBvZmZzZXRMaW5lID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnbGluZScpO1xuICAgIHZhciBvZmZzZXRDb2x1bW4gPSB1dGlsLmdldEFyZyhvZmZzZXQsICdjb2x1bW4nKTtcblxuICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgIChvZmZzZXRMaW5lID09PSBsYXN0T2Zmc2V0LmxpbmUgJiYgb2Zmc2V0Q29sdW1uIDwgbGFzdE9mZnNldC5jb2x1bW4pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3Rpb24gb2Zmc2V0cyBtdXN0IGJlIG9yZGVyZWQgYW5kIG5vbi1vdmVybGFwcGluZy4nKTtcbiAgICB9XG4gICAgbGFzdE9mZnNldCA9IG9mZnNldDtcblxuICAgIHJldHVybiB7XG4gICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgLy8gVGhlIG9mZnNldCBmaWVsZHMgYXJlIDAtYmFzZWQsIGJ1dCB3ZSB1c2UgMS1iYXNlZCBpbmRpY2VzIHdoZW5cbiAgICAgICAgLy8gZW5jb2RpbmcvZGVjb2RpbmcgZnJvbSBWTFEuXG4gICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG9mZnNldENvbHVtbiArIDFcbiAgICAgIH0sXG4gICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSlcbiAgICB9XG4gIH0pO1xufVxuXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUpO1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFNvdXJjZU1hcENvbnN1bWVyO1xuXG4vKipcbiAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2Ygb3JpZ2luYWwgc291cmNlcy5cbiAqL1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdzb3VyY2VzJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzb3VyY2VzO1xuICB9XG59KTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBzb3VyY2UsIGxpbmUsIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHRoZSBnZW5lcmF0ZWRcbiAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlLCBvciBudWxsLlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBvciBudWxsLlxuICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBuYW1lOiBUaGUgb3JpZ2luYWwgaWRlbnRpZmllciwgb3IgbnVsbC5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX29yaWdpbmFsUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICBnZW5lcmF0ZWRDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJylcbiAgICB9O1xuXG4gICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgIC8vIHRvIGFuIG9yaWdpbmFsIHBvc2l0aW9uLlxuICAgIHZhciBzZWN0aW9uSW5kZXggPSBiaW5hcnlTZWFyY2guc2VhcmNoKG5lZWRsZSwgdGhpcy5fc2VjdGlvbnMsXG4gICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgdmFyIGNtcCA9IG5lZWRsZS5nZW5lcmF0ZWRMaW5lIC0gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgaWYgKGNtcCkge1xuICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKG5lZWRsZS5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICB9KTtcbiAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW3NlY3Rpb25JbmRleF07XG5cbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNvdXJjZTogbnVsbCxcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsLFxuICAgICAgICBuYW1lOiBudWxsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBzZWN0aW9uLmNvbnN1bWVyLm9yaWdpbmFsUG9zaXRpb25Gb3Ioe1xuICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgY29sdW1uOiBuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgIDogMCksXG4gICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGV2ZXJ5IHNvdXJjZSBpbiB0aGUgc291cmNlXG4gKiBtYXAsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgIHJldHVybiBzLmNvbnN1bWVyLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzKCk7XG4gICAgfSk7XG4gIH07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlIGNvbnRlbnQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIHRoZSB1cmwgb2YgdGhlXG4gKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gKiBhdmFpbGFibGUuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gIGZ1bmN0aW9uIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lcl9zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIG51bGxPbk1pc3NpbmcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICB2YXIgY29udGVudCA9IHNlY3Rpb24uY29uc3VtZXIuc291cmNlQ29udGVudEZvcihhU291cmNlLCB0cnVlKTtcbiAgICAgIGlmIChjb250ZW50KSB7XG4gICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU291cmNlICsgJ1wiIGlzIG5vdCBpbiB0aGUgU291cmNlTWFwLicpO1xuICAgIH1cbiAgfTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gKiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gbGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICpcbiAqIGFuZCBhbiBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gKlxuICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICovXG5JbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX2dlbmVyYXRlZFBvc2l0aW9uRm9yKGFBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgLy8gT25seSBjb25zaWRlciB0aGlzIHNlY3Rpb24gaWYgdGhlIHJlcXVlc3RlZCBzb3VyY2UgaXMgaW4gdGhlIGxpc3Qgb2ZcbiAgICAgIC8vIHNvdXJjZXMgb2YgdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlcy5pbmRleE9mKHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgaWYgKGdlbmVyYXRlZFBvc2l0aW9uKSB7XG4gICAgICAgIHZhciByZXQgPSB7XG4gICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSAtIDEpLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkUG9zaXRpb24uY29sdW1uICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgPyBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRDb2x1bW4gLSAxXG4gICAgICAgICAgICAgOiAwKVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsaW5lOiBudWxsLFxuICAgICAgY29sdW1uOiBudWxsXG4gICAgfTtcbiAgfTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gKi9cbkluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3BhcnNlTWFwcGluZ3MgPVxuICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgIHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IFtdO1xuICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcbiAgICAgIHZhciBzZWN0aW9uTWFwcGluZ3MgPSBzZWN0aW9uLmNvbnN1bWVyLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gc2VjdGlvbk1hcHBpbmdzW2pdO1xuXG4gICAgICAgIHZhciBzb3VyY2UgPSBzZWN0aW9uLmNvbnN1bWVyLl9zb3VyY2VzLmF0KG1hcHBpbmcuc291cmNlKTtcbiAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZSA9IHV0aWwuam9pbihzZWN0aW9uLmNvbnN1bWVyLnNvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgICAgdmFyIG5hbWUgPSBzZWN0aW9uLmNvbnN1bWVyLl9uYW1lcy5hdChtYXBwaW5nLm5hbWUpO1xuICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgIG5hbWUgPSB0aGlzLl9uYW1lcy5pbmRleE9mKG5hbWUpO1xuXG4gICAgICAgIC8vIFRoZSBtYXBwaW5ncyBjb21pbmcgZnJvbSB0aGUgY29uc3VtZXIgZm9yIHRoZSBzZWN0aW9uIGhhdmVcbiAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgIC8vIG5lZWQgdG8gb2Zmc2V0IHRoZW0gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb25jYXRlbmF0ZWRcbiAgICAgICAgLy8gZ2VuZXJhdGVkIGZpbGUuXG4gICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgICAgZ2VuZXJhdGVkTGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lICtcbiAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiArXG4gICAgICAgICAgICAoc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkTGluZSA9PT0gbWFwcGluZy5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgIDogMCksXG4gICAgICAgICAgb3JpZ2luYWxMaW5lOiBtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgaWYgKHR5cGVvZiBhZGp1c3RlZE1hcHBpbmcub3JpZ2luYWxMaW5lID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgIHF1aWNrU29ydCh0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG4gIH07XG5cbmV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qc1xuLy8gbW9kdWxlIGlkID0gN1xuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbmV4cG9ydHMuR1JFQVRFU1RfTE9XRVJfQk9VTkQgPSAxO1xuZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbi8qKlxuICogUmVjdXJzaXZlIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2guXG4gKlxuICogQHBhcmFtIGFMb3cgSW5kaWNlcyBoZXJlIGFuZCBsb3dlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICogQHBhcmFtIGFIaWdoIEluZGljZXMgaGVyZSBhbmQgaGlnaGVyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gKiBAcGFyYW0gYUhheXN0YWNrIFRoZSBub24tZW1wdHkgYXJyYXkgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgRnVuY3Rpb24gd2hpY2ggdGFrZXMgdHdvIGVsZW1lbnRzIGFuZCByZXR1cm5zIC0xLCAwLCBvciAxLlxuICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICogICAgICdiaW5hcnlTZWFyY2guTEVBU1RfVVBQRVJfQk9VTkQnLiBTcGVjaWZpZXMgd2hldGhlciB0byByZXR1cm4gdGhlXG4gKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICovXG5mdW5jdGlvbiByZWN1cnNpdmVTZWFyY2goYUxvdywgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKSB7XG4gIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gIC8vXG4gIC8vICAgMS4gV2UgZmluZCB0aGUgZXhhY3QgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gIC8vXG4gIC8vICAgMi4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBidXQgd2UgY2FuIHJldHVybiB0aGUgaW5kZXggb2ZcbiAgLy8gICAgICB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQuXG4gIC8vXG4gIC8vICAgMy4gV2UgZGlkIG5vdCBmaW5kIHRoZSBleGFjdCBlbGVtZW50LCBhbmQgdGhlcmUgaXMgbm8gbmV4dC1jbG9zZXN0XG4gIC8vICAgICAgZWxlbWVudCB0aGFuIHRoZSBvbmUgd2UgYXJlIHNlYXJjaGluZyBmb3IsIHNvIHdlIHJldHVybiAtMS5cbiAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gIHZhciBjbXAgPSBhQ29tcGFyZShhTmVlZGxlLCBhSGF5c3RhY2tbbWlkXSwgdHJ1ZSk7XG4gIGlmIChjbXAgPT09IDApIHtcbiAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcmV0dXJuIG1pZDtcbiAgfVxuICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBncmVhdGVyIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKGFIaWdoIC0gbWlkID4gMSkge1xuICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICByZXR1cm4gcmVjdXJzaXZlU2VhcmNoKG1pZCwgYUhpZ2gsIGFOZWVkbGUsIGFIYXlzdGFjaywgYUNvbXBhcmUsIGFCaWFzKTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAvLyB3ZSBhcmUgaW4gdGVybWluYXRpb24gY2FzZSAoMykgb3IgKDIpIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHRoaW5nLlxuICAgIGlmIChhQmlhcyA9PSBleHBvcnRzLkxFQVNUX1VQUEVSX0JPVU5EKSB7XG4gICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgaWYgKG1pZCAtIGFMb3cgPiAxKSB7XG4gICAgICAvLyBUaGUgZWxlbWVudCBpcyBpbiB0aGUgbG93ZXIgaGFsZi5cbiAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgfVxuXG4gICAgLy8gd2UgYXJlIGluIHRlcm1pbmF0aW9uIGNhc2UgKDMpIG9yICgyKSBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSB0aGluZy5cbiAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgcmV0dXJuIG1pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYmluYXJ5IHNlYXJjaCB3aGljaCB3aWxsIGFsd2F5cyB0cnkgYW5kIHJldHVyblxuICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAqIG1hcHBpbmdzIGJldHdlZW4gb3JpZ2luYWwgYW5kIGdlbmVyYXRlZCBsaW5lL2NvbCBwYWlycyBhcmUgc2luZ2xlIHBvaW50cyxcbiAqIGFuZCB0aGVyZSBpcyBhbiBpbXBsaWNpdCByZWdpb24gYmV0d2VlbiBlYWNoIG9mIHRoZW0sIHNvIGEgbWlzcyBqdXN0IG1lYW5zXG4gKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gKlxuICogQHBhcmFtIGFOZWVkbGUgVGhlIGVsZW1lbnQgeW91IGFyZSBsb29raW5nIGZvci5cbiAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gKiBAcGFyYW0gYUNvbXBhcmUgQSBmdW5jdGlvbiB3aGljaCB0YWtlcyB0aGUgbmVlZGxlIGFuZCBhbiBlbGVtZW50IGluIHRoZVxuICogICAgIGFycmF5IGFuZCByZXR1cm5zIC0xLCAwLCBvciAxIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuZWVkbGUgaXMgbGVzc1xuICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAqIEBwYXJhbSBhQmlhcyBFaXRoZXIgJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAqICAgICAnYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAqICAgICBzZWFyY2hpbmcgZm9yLCByZXNwZWN0aXZlbHksIGlmIHRoZSBleGFjdCBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZC5cbiAqICAgICBEZWZhdWx0cyB0byAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAqL1xuZXhwb3J0cy5zZWFyY2ggPSBmdW5jdGlvbiBzZWFyY2goYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpIHtcbiAgaWYgKGFIYXlzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICB2YXIgaW5kZXggPSByZWN1cnNpdmVTZWFyY2goLTEsIGFIYXlzdGFjay5sZW5ndGgsIGFOZWVkbGUsIGFIYXlzdGFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8vIFdlIGhhdmUgZm91bmQgZWl0aGVyIHRoZSBleGFjdCBlbGVtZW50LCBvciB0aGUgbmV4dC1jbG9zZXN0IGVsZW1lbnQgdGhhblxuICAvLyB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLiBIb3dldmVyLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSBzdWNoXG4gIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgd2hpbGUgKGluZGV4IC0gMSA+PSAwKSB7XG4gICAgaWYgKGFDb21wYXJlKGFIYXlzdGFja1tpbmRleF0sIGFIYXlzdGFja1tpbmRleCAtIDFdLCB0cnVlKSAhPT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIC0taW5kZXg7XG4gIH1cblxuICByZXR1cm4gaW5kZXg7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuLy8gbW9kdWxlIGlkID0gOFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbi8vIEl0IHR1cm5zIG91dCB0aGF0IHNvbWUgKG1vc3Q/KSBKYXZhU2NyaXB0IGVuZ2luZXMgZG9uJ3Qgc2VsZi1ob3N0XG4vLyBgQXJyYXkucHJvdG90eXBlLnNvcnRgLiBUaGlzIG1ha2VzIHNlbnNlIGJlY2F1c2UgQysrIHdpbGwgbGlrZWx5IHJlbWFpblxuLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbi8vIGN1c3RvbSBjb21wYXJhdG9yIGZ1bmN0aW9uLCBjYWxsaW5nIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gdGhlIFZNJ3MgQysrIGFuZFxuLy8gSklUJ2QgSlMgaXMgcmF0aGVyIHNsb3cgKmFuZCogbG9zZXMgSklUIHR5cGUgaW5mb3JtYXRpb24sIHJlc3VsdGluZyBpblxuLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbi8vIGZhY3QsIHdoZW4gc29ydGluZyB3aXRoIGEgY29tcGFyYXRvciwgdGhlc2UgY29zdHMgb3V0d2VpZ2ggdGhlIGJlbmVmaXRzIG9mXG4vLyBzb3J0aW5nIGluIEMrKy4gQnkgdXNpbmcgb3VyIG93biBKUy1pbXBsZW1lbnRlZCBRdWljayBTb3J0IChiZWxvdyksIHdlIGdldFxuLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4vKipcbiAqIFN3YXAgdGhlIGVsZW1lbnRzIGluZGV4ZWQgYnkgYHhgIGFuZCBgeWAgaW4gdGhlIGFycmF5IGBhcnlgLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIFRoZSBhcnJheS5cbiAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gKiAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBpdGVtLlxuICogQHBhcmFtIHtOdW1iZXJ9IHlcbiAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICovXG5mdW5jdGlvbiBzd2FwKGFyeSwgeCwgeSkge1xuICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgYXJ5W3hdID0gYXJ5W3ldO1xuICBhcnlbeV0gPSB0ZW1wO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSByYW5kb20gaW50ZWdlciB3aXRoaW4gdGhlIHJhbmdlIGBsb3cgLi4gaGlnaGAgaW5jbHVzaXZlLlxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBsb3dcbiAqICAgICAgICBUaGUgbG93ZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAqICAgICAgICBUaGUgdXBwZXIgYm91bmQgb24gdGhlIHJhbmdlLlxuICovXG5mdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICByZXR1cm4gTWF0aC5yb3VuZChsb3cgKyAoTWF0aC5yYW5kb20oKSAqIChoaWdoIC0gbG93KSkpO1xufVxuXG4vKipcbiAqIFRoZSBRdWljayBTb3J0IGFsZ29yaXRobS5cbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAqICAgICAgICBBbiBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY29tcGFyYXRvclxuICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAqIEBwYXJhbSB7TnVtYmVyfSBwXG4gKiAgICAgICAgU3RhcnQgaW5kZXggb2YgdGhlIGFycmF5XG4gKiBAcGFyYW0ge051bWJlcn0gclxuICogICAgICAgIEVuZCBpbmRleCBvZiB0aGUgYXJyYXlcbiAqL1xuZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gIC8vIElmIG91ciBsb3dlciBib3VuZCBpcyBsZXNzIHRoYW4gb3VyIHVwcGVyIGJvdW5kLCB3ZSAoMSkgcGFydGl0aW9uIHRoZVxuICAvLyBhcnJheSBpbnRvIHR3byBwaWVjZXMgYW5kICgyKSByZWN1cnNlIG9uIGVhY2ggaGFsZi4gSWYgaXQgaXMgbm90LCB0aGlzIGlzXG4gIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICBpZiAocCA8IHIpIHtcbiAgICAvLyAoMSkgUGFydGl0aW9uaW5nLlxuICAgIC8vXG4gICAgLy8gVGhlIHBhcnRpdGlvbmluZyBjaG9vc2VzIGEgcGl2b3QgYmV0d2VlbiBgcGAgYW5kIGByYCBhbmQgbW92ZXMgYWxsXG4gICAgLy8gZWxlbWVudHMgdGhhdCBhcmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdCB0byB0aGUgYmVmb3JlIGl0LCBhbmRcbiAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgLy8gb25jZSBwYXJ0aXRpb24gaXMgZG9uZSwgdGhlIHBpdm90IGlzIGluIHRoZSBleGFjdCBwbGFjZSBpdCB3aWxsIGJlIHdoZW5cbiAgICAvLyB0aGUgYXJyYXkgaXMgcHV0IGluIHNvcnRlZCBvcmRlciwgYW5kIGl0IHdpbGwgbm90IG5lZWQgdG8gYmUgbW92ZWRcbiAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgIC8vIEFsd2F5cyBjaG9vc2UgYSByYW5kb20gcGl2b3Qgc28gdGhhdCBhbiBpbnB1dCBhcnJheSB3aGljaCBpcyByZXZlcnNlXG4gICAgLy8gc29ydGVkIGRvZXMgbm90IGNhdXNlIE8obl4yKSBydW5uaW5nIHRpbWUuXG4gICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgIHZhciBpID0gcCAtIDE7XG5cbiAgICBzd2FwKGFyeSwgcGl2b3RJbmRleCwgcik7XG4gICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgYGpgIGlzIGluY3JlbWVudGVkIGluIHRoaXMgbG9vcCwgdGhlIGZvbGxvd2luZyBob2xkXG4gICAgLy8gdHJ1ZTpcbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbcCAuLiBpXWAgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBwaXZvdC5cbiAgICAvL1xuICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgZm9yICh2YXIgaiA9IHA7IGogPCByOyBqKyspIHtcbiAgICAgIGlmIChjb21wYXJhdG9yKGFyeVtqXSwgcGl2b3QpIDw9IDApIHtcbiAgICAgICAgaSArPSAxO1xuICAgICAgICBzd2FwKGFyeSwgaSwgaik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3dhcChhcnksIGkgKyAxLCBqKTtcbiAgICB2YXIgcSA9IGkgKyAxO1xuXG4gICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCBxIC0gMSk7XG4gICAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBxICsgMSwgcik7XG4gIH1cbn1cblxuLyoqXG4gKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7QXJyYXl9IGFyeVxuICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjb21wYXJhdG9yXG4gKiAgICAgICAgRnVuY3Rpb24gdG8gdXNlIHRvIGNvbXBhcmUgdHdvIGl0ZW1zLlxuICovXG5leHBvcnRzLnF1aWNrU29ydCA9IGZ1bmN0aW9uIChhcnksIGNvbXBhcmF0b3IpIHtcbiAgZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCAwLCBhcnkubGVuZ3RoIC0gMSk7XG59O1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvcXVpY2stc29ydC5qc1xuLy8gbW9kdWxlIGlkID0gOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5cbnZhciBTb3VyY2VNYXBHZW5lcmF0b3IgPSByZXF1aXJlKCcuL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLy8gTWF0Y2hlcyBhIFdpbmRvd3Mtc3R5bGUgYFxcclxcbmAgbmV3bGluZSBvciBhIGBcXG5gIG5ld2xpbmUgdXNlZCBieSBhbGwgb3RoZXJcbi8vIG9wZXJhdGluZyBzeXN0ZW1zIHRoZXNlIGRheXMgKGNhcHR1cmluZyB0aGUgcmVzdWx0KS5cbnZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbi8vIE5ld2xpbmUgY2hhcmFjdGVyIGNvZGUgZm9yIGNoYXJDb2RlQXQoKSBjb21wYXJpc29uc1xudmFyIE5FV0xJTkVfQ09ERSA9IDEwO1xuXG4vLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4vLyB0aGUgc291cmNlLW1hcCBsaWJyYXJ5IGFyZSBsb2FkZWQuIFRoaXMgTVVTVCBOT1QgQ0hBTkdFIGFjcm9zc1xuLy8gdmVyc2lvbnMhXG52YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuLyoqXG4gKiBTb3VyY2VOb2RlcyBwcm92aWRlIGEgd2F5IHRvIGFic3RyYWN0IG92ZXIgaW50ZXJwb2xhdGluZy9jb25jYXRlbmF0aW5nXG4gKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAqIGNvbHVtbiBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gKiBAcGFyYW0gYUNvbHVtbiBUaGUgb3JpZ2luYWwgY29sdW1uIG51bWJlci5cbiAqIEBwYXJhbSBhU291cmNlIFRoZSBvcmlnaW5hbCBzb3VyY2UncyBmaWxlbmFtZS5cbiAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICogICAgICAgIGdlbmVyYXRlZCBKUywgb3Igb3RoZXIgU291cmNlTm9kZXMuXG4gKiBAcGFyYW0gYU5hbWUgVGhlIG9yaWdpbmFsIGlkZW50aWZpZXIuXG4gKi9cbmZ1bmN0aW9uIFNvdXJjZU5vZGUoYUxpbmUsIGFDb2x1bW4sIGFTb3VyY2UsIGFDaHVua3MsIGFOYW1lKSB7XG4gIHRoaXMuY2hpbGRyZW4gPSBbXTtcbiAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICB0aGlzLmxpbmUgPSBhTGluZSA9PSBudWxsID8gbnVsbCA6IGFMaW5lO1xuICB0aGlzLmNvbHVtbiA9IGFDb2x1bW4gPT0gbnVsbCA/IG51bGwgOiBhQ29sdW1uO1xuICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICB0aGlzLm5hbWUgPSBhTmFtZSA9PSBudWxsID8gbnVsbCA6IGFOYW1lO1xuICB0aGlzW2lzU291cmNlTm9kZV0gPSB0cnVlO1xuICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICpcbiAqIEBwYXJhbSBhR2VuZXJhdGVkQ29kZSBUaGUgZ2VuZXJhdGVkIGNvZGVcbiAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gKiBAcGFyYW0gYVJlbGF0aXZlUGF0aCBPcHRpb25hbC4gVGhlIHBhdGggdGhhdCByZWxhdGl2ZSBzb3VyY2VzIGluIHRoZVxuICogICAgICAgIFNvdXJjZU1hcENvbnN1bWVyIHNob3VsZCBiZSByZWxhdGl2ZSB0by5cbiAqL1xuU291cmNlTm9kZS5mcm9tU3RyaW5nV2l0aFNvdXJjZU1hcCA9XG4gIGZ1bmN0aW9uIFNvdXJjZU5vZGVfZnJvbVN0cmluZ1dpdGhTb3VyY2VNYXAoYUdlbmVyYXRlZENvZGUsIGFTb3VyY2VNYXBDb25zdW1lciwgYVJlbGF0aXZlUGF0aCkge1xuICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgIC8vIGFuZCB0aGUgU291cmNlTWFwXG4gICAgdmFyIG5vZGUgPSBuZXcgU291cmNlTm9kZSgpO1xuXG4gICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgLy8gd2hpbGUgYWxsIG9kZCBpbmRpY2VzIGFyZSB0aGUgbmV3bGluZXMgYmV0d2VlbiB0d28gYWRqYWNlbnQgbGluZXNcbiAgICAvLyAoc2luY2UgYFJFR0VYX05FV0xJTkVgIGNhcHR1cmVzIGl0cyBtYXRjaCkuXG4gICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgYWNjZXNzZWQgYnkgY2FsbGluZyBgc2hpZnROZXh0TGluZWAuXG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgdmFyIHJlbWFpbmluZ0xpbmVzSW5kZXggPSAwO1xuICAgIHZhciBzaGlmdE5leHRMaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgbGluZUNvbnRlbnRzID0gZ2V0TmV4dExpbmUoKTtcbiAgICAgIC8vIFRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIG1pZ2h0IG5vdCBoYXZlIGEgbmV3bGluZS5cbiAgICAgIHZhciBuZXdMaW5lID0gZ2V0TmV4dExpbmUoKSB8fCBcIlwiO1xuICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG5cbiAgICAgIGZ1bmN0aW9uIGdldE5leHRMaW5lKCkge1xuICAgICAgICByZXR1cm4gcmVtYWluaW5nTGluZXNJbmRleCA8IHJlbWFpbmluZ0xpbmVzLmxlbmd0aCA/XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1tyZW1haW5pbmdMaW5lc0luZGV4KytdIDogdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICB2YXIgbGFzdEdlbmVyYXRlZExpbmUgPSAxLCBsYXN0R2VuZXJhdGVkQ29sdW1uID0gMDtcblxuICAgIC8vIFRoZSBnZW5lcmF0ZSBTb3VyY2VOb2RlcyB3ZSBuZWVkIGEgY29kZSByYW5nZS5cbiAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgIC8vIEhlcmUgd2Ugc3RvcmUgdGhlIGxhc3QgbWFwcGluZy5cbiAgICB2YXIgbGFzdE1hcHBpbmcgPSBudWxsO1xuXG4gICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcgIT09IG51bGwpIHtcbiAgICAgICAgLy8gV2UgYWRkIHRoZSBjb2RlIGZyb20gXCJsYXN0TWFwcGluZ1wiIHRvIFwibWFwcGluZ1wiOlxuICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgIGlmIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSBmaXJzdCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbiA9IDA7XG4gICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgLy8gXCJtYXBwaW5nLmdlbmVyYXRlZENvbHVtblwiIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF07XG4gICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdID0gbmV4dExpbmUuc3Vic3RyKG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBjb2RlKTtcbiAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgIGxhc3RNYXBwaW5nID0gbWFwcGluZztcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFdlIGFkZCB0aGUgZ2VuZXJhdGVkIGNvZGUgdW50aWwgdGhlIGZpcnN0IG1hcHBpbmdcbiAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAvLyBFYWNoIGxpbmUgaXMgYWRkZWQgYXMgc2VwYXJhdGUgc3RyaW5nLlxuICAgICAgd2hpbGUgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgIGxhc3RHZW5lcmF0ZWRMaW5lKys7XG4gICAgICB9XG4gICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzW3JlbWFpbmluZ0xpbmVzSW5kZXhdO1xuICAgICAgICBub2RlLmFkZChuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pKTtcbiAgICAgICAgcmVtYWluaW5nTGluZXNbcmVtYWluaW5nTGluZXNJbmRleF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uID0gbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG4gICAgICB9XG4gICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgfSwgdGhpcyk7XG4gICAgLy8gV2UgaGF2ZSBwcm9jZXNzZWQgYWxsIG1hcHBpbmdzLlxuICAgIGlmIChyZW1haW5pbmdMaW5lc0luZGV4IDwgcmVtYWluaW5nTGluZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobGFzdE1hcHBpbmcpIHtcbiAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSByZW1haW5pbmcgY29kZSBpbiB0aGUgY3VycmVudCBsaW5lIHdpdGggXCJsYXN0TWFwcGluZ1wiXG4gICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgIH1cbiAgICAgIC8vIGFuZCBhZGQgdGhlIHJlbWFpbmluZyBsaW5lcyB3aXRob3V0IGFueSBtYXBwaW5nXG4gICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5zcGxpY2UocmVtYWluaW5nTGluZXNJbmRleCkuam9pbihcIlwiKSk7XG4gICAgfVxuXG4gICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2VGaWxlKSB7XG4gICAgICB2YXIgY29udGVudCA9IGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKHNvdXJjZUZpbGUpO1xuICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBpZiAoYVJlbGF0aXZlUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgfVxuICAgICAgICBub2RlLnNldFNvdXJjZUNvbnRlbnQoc291cmNlRmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbm9kZTtcblxuICAgIGZ1bmN0aW9uIGFkZE1hcHBpbmdXaXRoQ29kZShtYXBwaW5nLCBjb2RlKSB7XG4gICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5vZGUuYWRkKGNvZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICA/IHV0aWwuam9pbihhUmVsYXRpdmVQYXRoLCBtYXBwaW5nLnNvdXJjZSlcbiAgICAgICAgICA6IG1hcHBpbmcuc291cmNlO1xuICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gKlxuICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gU291cmNlTm9kZV9hZGQoYUNodW5rKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICBhQ2h1bmsuZm9yRWFjaChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAgIHRoaXMuYWRkKGNodW5rKTtcbiAgICB9LCB0aGlzKTtcbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgaWYgKGFDaHVuaykge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGFDaHVuayk7XG4gICAgfVxuICB9XG4gIGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAqXG4gKiBAcGFyYW0gYUNodW5rIEEgc3RyaW5nIHNuaXBwZXQgb2YgZ2VuZXJhdGVkIEpTIGNvZGUsIGFub3RoZXIgaW5zdGFuY2Ugb2ZcbiAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5wcmVwZW5kID0gZnVuY3Rpb24gU291cmNlTm9kZV9wcmVwZW5kKGFDaHVuaykge1xuICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgZm9yICh2YXIgaSA9IGFDaHVuay5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHRoaXMucHJlcGVuZChhQ2h1bmtbaV0pO1xuICAgIH1cbiAgfVxuICBlbHNlIGlmIChhQ2h1bmtbaXNTb3VyY2VOb2RlXSB8fCB0eXBlb2YgYUNodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgIFwiRXhwZWN0ZWQgYSBTb3VyY2VOb2RlLCBzdHJpbmcsIG9yIGFuIGFycmF5IG9mIFNvdXJjZU5vZGVzIGFuZCBzdHJpbmdzLiBHb3QgXCIgKyBhQ2h1bmtcbiAgICApO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBXYWxrIG92ZXIgdGhlIHRyZWUgb2YgSlMgc25pcHBldHMgaW4gdGhpcyBub2RlIGFuZCBpdHMgY2hpbGRyZW4uIFRoZVxuICogd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBzbmlwcGV0IG9mIEpTIGFuZCBpcyBwYXNzZWQgdGhhdFxuICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2FsayA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2FsayhhRm4pIHtcbiAgdmFyIGNodW5rO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNodW5rID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICBpZiAoY2h1bmtbaXNTb3VyY2VOb2RlXSkge1xuICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgYUZuKGNodW5rLCB7IHNvdXJjZTogdGhpcy5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmUsXG4gICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBMaWtlIGBTdHJpbmcucHJvdG90eXBlLmpvaW5gIGV4Y2VwdCBmb3IgU291cmNlTm9kZXMuIEluc2VydHMgYGFTdHJgIGJldHdlZW5cbiAqIGVhY2ggb2YgYHRoaXMuY2hpbGRyZW5gLlxuICpcbiAqIEBwYXJhbSBhU2VwIFRoZSBzZXBhcmF0b3IuXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICB2YXIgbmV3Q2hpbGRyZW47XG4gIHZhciBpO1xuICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gIGlmIChsZW4gPiAwKSB7XG4gICAgbmV3Q2hpbGRyZW4gPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIG5ld0NoaWxkcmVuLnB1c2goYVNlcCk7XG4gICAgfVxuICAgIG5ld0NoaWxkcmVuLnB1c2godGhpcy5jaGlsZHJlbltpXSk7XG4gICAgdGhpcy5jaGlsZHJlbiA9IG5ld0NoaWxkcmVuO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiBDYWxsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSBvbiB0aGUgdmVyeSByaWdodC1tb3N0IHNvdXJjZSBzbmlwcGV0LiBVc2VmdWxcbiAqIGZvciB0cmltbWluZyB3aGl0ZXNwYWNlIGZyb20gdGhlIGVuZCBvZiBhIHNvdXJjZSBub2RlLCBldGMuXG4gKlxuICogQHBhcmFtIGFQYXR0ZXJuIFRoZSBwYXR0ZXJuIHRvIHJlcGxhY2UuXG4gKiBAcGFyYW0gYVJlcGxhY2VtZW50IFRoZSB0aGluZyB0byByZXBsYWNlIHRoZSBwYXR0ZXJuIHdpdGguXG4gKi9cblNvdXJjZU5vZGUucHJvdG90eXBlLnJlcGxhY2VSaWdodCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpIHtcbiAgdmFyIGxhc3RDaGlsZCA9IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgbGFzdENoaWxkLnJlcGxhY2VSaWdodChhUGF0dGVybiwgYVJlcGxhY2VtZW50KTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXSA9IGxhc3RDaGlsZC5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuY2hpbGRyZW4ucHVzaCgnJy5yZXBsYWNlKGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAqIGluIHRoZSBzb3VyY2VzQ29udGVudCBmaWVsZC5cbiAqXG4gKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICogQHBhcmFtIGFTb3VyY2VDb250ZW50IFRoZSBjb250ZW50IG9mIHRoZSBzb3VyY2UgZmlsZVxuICovXG5Tb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgIHRoaXMuc291cmNlQ29udGVudHNbdXRpbC50b1NldFN0cmluZyhhU291cmNlRmlsZSldID0gYVNvdXJjZUNvbnRlbnQ7XG4gIH07XG5cbi8qKlxuICogV2FsayBvdmVyIHRoZSB0cmVlIG9mIFNvdXJjZU5vZGVzLiBUaGUgd2Fsa2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2hcbiAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICpcbiAqIEBwYXJhbSBhRm4gVGhlIHRyYXZlcnNhbCBmdW5jdGlvbi5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUud2Fsa1NvdXJjZUNvbnRlbnRzID1cbiAgZnVuY3Rpb24gU291cmNlTm9kZV93YWxrU291cmNlQ29udGVudHMoYUZuKSB7XG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgdGhpcy5jaGlsZHJlbltpXS53YWxrU291cmNlQ29udGVudHMoYUZuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc291cmNlcyA9IE9iamVjdC5rZXlzKHRoaXMuc291cmNlQ29udGVudHMpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBhRm4odXRpbC5mcm9tU2V0U3RyaW5nKHNvdXJjZXNbaV0pLCB0aGlzLnNvdXJjZUNvbnRlbnRzW3NvdXJjZXNbaV1dKTtcbiAgICB9XG4gIH07XG5cbi8qKlxuICogUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzb3VyY2Ugbm9kZS4gV2Fsa3Mgb3ZlciB0aGUgdHJlZVxuICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nKCkge1xuICB2YXIgc3RyID0gXCJcIjtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIHN0ciArPSBjaHVuaztcbiAgfSk7XG4gIHJldHVybiBzdHI7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNvdXJjZSBub2RlIGFsb25nIHdpdGggYSBzb3VyY2VcbiAqIG1hcC5cbiAqL1xuU291cmNlTm9kZS5wcm90b3R5cGUudG9TdHJpbmdXaXRoU291cmNlTWFwID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZ1dpdGhTb3VyY2VNYXAoYUFyZ3MpIHtcbiAgdmFyIGdlbmVyYXRlZCA9IHtcbiAgICBjb2RlOiBcIlwiLFxuICAgIGxpbmU6IDEsXG4gICAgY29sdW1uOiAwXG4gIH07XG4gIHZhciBtYXAgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKTtcbiAgdmFyIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxMaW5lID0gbnVsbDtcbiAgdmFyIGxhc3RPcmlnaW5hbENvbHVtbiA9IG51bGw7XG4gIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgdGhpcy53YWxrKGZ1bmN0aW9uIChjaHVuaywgb3JpZ2luYWwpIHtcbiAgICBnZW5lcmF0ZWQuY29kZSArPSBjaHVuaztcbiAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICYmIG9yaWdpbmFsLmxpbmUgIT09IG51bGxcbiAgICAgICAgJiYgb3JpZ2luYWwuY29sdW1uICE9PSBudWxsKSB7XG4gICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsTGluZSAhPT0gb3JpZ2luYWwubGluZVxuICAgICAgICAgfHwgbGFzdE9yaWdpbmFsQ29sdW1uICE9PSBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIHNvdXJjZTogb3JpZ2luYWwuc291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgY29sdW1uOiBvcmlnaW5hbC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9LFxuICAgICAgICAgIG5hbWU6IG9yaWdpbmFsLm5hbWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBvcmlnaW5hbC5zb3VyY2U7XG4gICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgIGxhc3RPcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgIGxhc3RPcmlnaW5hbE5hbWUgPSBvcmlnaW5hbC5uYW1lO1xuICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgIGNvbHVtbjogZ2VuZXJhdGVkLmNvbHVtblxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgfVxuICAgIGZvciAodmFyIGlkeCA9IDAsIGxlbmd0aCA9IGNodW5rLmxlbmd0aDsgaWR4IDwgbGVuZ3RoOyBpZHgrKykge1xuICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgIGdlbmVyYXRlZC5saW5lKys7XG4gICAgICAgIGdlbmVyYXRlZC5jb2x1bW4gPSAwO1xuICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgIGlmIChpZHggKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VNYXBwaW5nQWN0aXZlKSB7XG4gICAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICBvcmlnaW5hbDoge1xuICAgICAgICAgICAgICBsaW5lOiBvcmlnaW5hbC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgY29sdW1uOiBnZW5lcmF0ZWQuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZW5lcmF0ZWQuY29sdW1uKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgdGhpcy53YWxrU291cmNlQ29udGVudHMoZnVuY3Rpb24gKHNvdXJjZUZpbGUsIHNvdXJjZUNvbnRlbnQpIHtcbiAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHsgY29kZTogZ2VuZXJhdGVkLmNvZGUsIG1hcDogbWFwIH07XG59O1xuXG5leHBvcnRzLlNvdXJjZU5vZGUgPSBTb3VyY2VOb2RlO1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9saWIvc291cmNlLW5vZGUuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.js b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.js
new file mode 100644
index 0000000000..4e630e2943
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.js
@@ -0,0 +1,3090 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["sourceMap"] = factory();
+ else
+ root["sourceMap"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = true;
+
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+
+
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
+ exports.SourceNode = __webpack_require__(10).SourceNode;
+
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var base64VLQ = __webpack_require__(2);
+ var util = __webpack_require__(4);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var MappingList = __webpack_require__(6).MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = ''
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+ var base64 = __webpack_require__(3);
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '<dir>/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+ }());
+
+ function identity (s) {
+ return s;
+ }
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+ }
+ exports.toSetString = supportsNullProto ? identity : toSetString;
+
+ function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+ }
+ exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+ function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var has = Object.prototype.hasOwnProperty;
+ var hasNativeMap = typeof Map !== "undefined";
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+
+
+/***/ })
+/******/ ])
+});
+; \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js
new file mode 100644
index 0000000000..f2a46bd025
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/dist/source-map.min.js
@@ -0,0 +1,2 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&r.setSourceContent(n,t)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null!=t&&(t=String(t),this._sources.has(t)||this._sources.add(t)),null!=o&&(o=String(o),this._names.has(o)||this._names.add(o)),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if(n&&"number"!=typeof n.line&&"number"!=typeof n.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t,s=0,a=1,u=0,l=0,c=0,g=0,p="",h=this._mappings.toArray(),f=0,d=h.length;f<d;f++){if(n=h[f],e="",n.generatedLine!==a)for(s=0;n.generatedLine!==a;)e+=";",a++;else if(f>0){if(!i.compareByGeneratedPositionsInflated(n,h[f-1]))continue;e+=","}e+=o.encode(n.generatedColumn-s),s=n.generatedColumn,null!=n.source&&(t=this._sources.indexOf(n.source),e+=o.encode(t-g),g=t,e+=o.encode(n.originalLine-1-l),l=n.originalLine-1,e+=o.encode(n.originalColumn-u),u=n.originalColumn,null!=n.name&&(r=this._names.indexOf(n.name),e+=o.encode(r-c),c=r)),p+=e}return p},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<<s,u=a-1,l=a;n.encode=function(e){var n,r="",o=t(e);do n=o&u,o>>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a<<p,p+=s}while(t);r.value=o(g),r.rest=n}},function(e,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");n.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},n.decode=function(e){var n=65,r=90,t=97,o=122,i=48,s=57,a=43,u=47,l=26,c=52;return n<=e&&e<=r?e-n:t<=e&&e<=o?e-t+l:i<=e&&e<=s?e-i+c:e==a?62:e==u?63:-1}},function(e,n){function r(e,n,r){if(n in e)return e[n];if(3===arguments.length)return r;throw new Error('"'+n+'" is a required argument.')}function t(e){var n=e.match(m);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function o(e){var n="";return e.scheme&&(n+=e.scheme+":"),n+="//",e.auth&&(n+=e.auth+"@"),e.host&&(n+=e.host),e.port&&(n+=":"+e.port),e.path&&(n+=e.path),n}function i(e){var r=e,i=t(e);if(i){if(!i.path)return e;r=i.path}for(var s,a=n.isAbsolute(r),u=r.split(/\/+/),l=0,c=u.length-1;c>=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(_))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(t<0)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return e}function l(e){return g(e)?"$"+e:e}function c(e){return g(e)?e.slice(1):e}function g(e){if(!e)return!1;var n=e.length;if(n<9)return!1;if(95!==e.charCodeAt(n-1)||95!==e.charCodeAt(n-2)||111!==e.charCodeAt(n-3)||116!==e.charCodeAt(n-4)||111!==e.charCodeAt(n-5)||114!==e.charCodeAt(n-6)||112!==e.charCodeAt(n-7)||95!==e.charCodeAt(n-8)||95!==e.charCodeAt(n-9))return!1;for(var r=n-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function p(e,n,r){var t=e.source-n.source;return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:e.name-n.name))))}function h(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=e.source-n.source,0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:e.name-n.name))))}function f(e,n){return e===n?0:e>n?1:-1}function d(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=f(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:f(e.name,n.name)))))}n.getArg=r;var m=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,_=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(m)},n.relative=a;var v=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=v?u:l,n.fromSetString=v?u:c,n.compareByOriginalPositions=p,n.compareByGeneratedPositionsDeflated=h,n.compareByGeneratedPositionsInflated=d},function(e,n,r){function t(){this._array=[],this._set=s?new Map:Object.create(null)}var o=r(4),i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Map;t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;o<i;o++)r.add(e[o],n);return r},t.prototype.size=function(){return s?this._set.size:Object.getOwnPropertyNames(this._set).length},t.prototype.add=function(e,n){var r=s?e:o.toSetString(e),t=s?this.has(e):i.call(this._set,r),a=this._array.length;t&&!n||this._array.push(e),t||(s?this._set.set(e,a):this._set[r]=a)},t.prototype.has=function(e){if(s)return this._set.has(e);var n=o.toSetString(e);return i.call(this._set,n)},t.prototype.indexOf=function(e){if(s){var n=this._set.get(e);if(n>=0)return n}else{var r=o.toSetString(e);if(i.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},t.prototype.toArray=function(){return this._array.slice()},n.ArraySet=t},function(e,n,r){function t(e,n){var r=e.generatedLine,t=n.generatedLine,o=e.generatedColumn,s=n.generatedColumn;return t>r||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e){var n=e;return"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=n.sections?new s(n):new o(n)}function o(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),t=a.getArg(n,"sources"),o=a.getArg(n,"names",[]),i=a.getArg(n,"sourceRoot",null),s=a.getArg(n,"sourcesContent",null),u=a.getArg(n,"mappings"),c=a.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);t=t.map(String).map(a.normalize).map(function(e){return i&&a.isAbsolute(i)&&a.isAbsolute(e)?a.relative(i,e):e}),this._names=l.fromArray(o.map(String),!0),this._sources=l.fromArray(t,!0),this.sourceRoot=i,this.sourcesContent=s,this._mappings=u,this.file=c}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),o=a.getArg(n,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var i={line:-1,column:0};this._sections=o.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=a.getArg(e,"offset"),r=a.getArg(n,"line"),o=a.getArg(n,"column");if(r<i.line||r===i.line&&o<i.column)throw new Error("Section offsets must be ordered and non-overlapping.");return i=n,{generatedOffset:{generatedLine:r+1,generatedColumn:o+1},consumer:new t(a.getArg(e,"map"))}})}var a=r(4),u=r(8),l=r(5).ArraySet,c=r(2),g=r(9).quickSort;t.fromSourceMap=function(e){return o.fromSourceMap(e)},t.prototype._version=3,t.prototype.__generatedMappings=null,Object.defineProperty(t.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),t.prototype.__originalMappings=null,Object.defineProperty(t.prototype,"_originalMappings",{get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),t.prototype._charIsMappingSeparator=function(e,n){var r=e.charAt(n);return";"===r||","===r},t.prototype._parseMappings=function(e,n){throw new Error("Subclasses must implement _parseMappings")},t.GENERATED_ORDER=1,t.ORIGINAL_ORDER=2,t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.prototype.eachMapping=function(e,n,r){var o,i=n||null,s=r||t.GENERATED_ORDER;switch(s){case t.GENERATED_ORDER:o=this._generatedMappings;break;case t.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var u=this.sourceRoot;o.map(function(e){var n=null===e.source?null:this._sources.at(e.source);return null!=n&&null!=u&&(n=a.join(u,n)),{source:n,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}},this).forEach(e,i)},t.prototype.allGeneratedPositionsFor=function(e){var n=a.getArg(e,"line"),r={source:a.getArg(e,"source"),originalLine:n,originalColumn:a.getArg(e,"column",0)};if(null!=this.sourceRoot&&(r.source=a.relative(this.sourceRoot,r.source)),!this._sources.has(r.source))return[];r.source=this._sources.indexOf(r.source);var t=[],o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,u.LEAST_UPPER_BOUND);if(o>=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.fromSourceMap=function(e){var n=Object.create(o.prototype),r=n._names=l.fromArray(e._names.toArray(),!0),t=n._sources=l.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file;for(var s=e._mappings.toArray().slice(),u=n.__generatedMappings=[],c=n.__originalMappings=[],p=0,h=s.length;p<h;p++){var f=s[p],d=new i;d.generatedLine=f.generatedLine,d.generatedColumn=f.generatedColumn,f.source&&(d.source=t.indexOf(f.source),d.originalLine=f.originalLine,d.originalColumn=f.originalColumn,f.name&&(d.name=r.indexOf(f.name)),c.push(d)),u.push(d)}return g(n.__originalMappings,a.compareByOriginalPositions),n},o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){return this._sources.toArray().map(function(e){return null!=this.sourceRoot?a.join(this.sourceRoot,e):e},this)}}),o.prototype._parseMappings=function(e,n){for(var r,t,o,s,u,l=1,p=0,h=0,f=0,d=0,m=0,_=e.length,v=0,y={},C={},A=[],S=[];v<_;)if(";"===e.charAt(v))l++,v++,p=0;else if(","===e.charAt(v))v++;else{for(r=new i,r.generatedLine=l,s=v;s<_&&!this._charIsMappingSeparator(e,s);s++);if(t=e.slice(v,s),o=y[t])v+=t.length;else{for(o=[];v<s;)c.decode(e,v,C),u=C.value,v=C.rest,o.push(u);if(2===o.length)throw new Error("Found a source, but no line and column");if(3===o.length)throw new Error("Found a source and line, but no column");y[t]=o}r.generatedColumn=p+o[0],p=r.generatedColumn,o.length>1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),S.push(r),"number"==typeof r.originalLine&&A.push(r)}g(S,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,g(A,a.compareByOriginalPositions),this.__originalMappings=A},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var n=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(n.generatedLine===r.generatedLine){n.lastGeneratedColumn=r.generatedColumn-1;continue}}n.lastGeneratedColumn=1/0}},o.prototype.originalPositionFor=function(e){var n={generatedLine:a.getArg(e,"line"),generatedColumn:a.getArg(e,"column")},r=this._findMapping(n,this._generatedMappings,"generatedLine","generatedColumn",a.compareByGeneratedPositionsDeflated,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(r>=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=a.join(this.sourceRoot,i)));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=a.urlParse(this.sourceRoot))){var t=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),!this._sources.has(n))return{line:null,column:null,lastColumn:null};n=this._sources.indexOf(n);var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n<this._sections.length;n++)for(var r=0;r<this._sections[n].consumer.sources.length;r++)e.push(this._sections[n].consumer.sources[r]);return e}}),s.prototype.originalPositionFor=function(e){var n={generatedLine:a.getArg(e,"line"),generatedColumn:a.getArg(e,"column")},r=u.search(n,this._sections,function(e,n){var r=e.generatedLine-n.generatedOffset.generatedLine;return r?r:e.generatedColumn-n.generatedOffset.generatedColumn}),t=this._sections[r];return t?t.consumer.originalPositionFor({line:n.generatedLine-(t.generatedOffset.generatedLine-1),column:n.generatedColumn-(t.generatedOffset.generatedLine===n.generatedLine?t.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},s.prototype.hasContentsOfAllSources=function(){return this._sections.every(function(e){return e.consumer.hasContentsOfAllSources()})},s.prototype.sourceContentFor=function(e,n){for(var r=0;r<this._sections.length;r++){var t=this._sections[r],o=t.consumer.sourceContentFor(e,!0);if(o)return o}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},s.prototype.generatedPositionFor=function(e){for(var n=0;n<this._sections.length;n++){var r=this._sections[n];if(r.consumer.sources.indexOf(a.getArg(e,"source"))!==-1){var t=r.consumer.generatedPositionFor(e);if(t){var o={line:t.line+(r.generatedOffset.generatedLine-1),column:t.column+(r.generatedOffset.generatedLine===t.line?r.generatedOffset.generatedColumn-1:0)};return o}}}return{line:null,column:null}},s.prototype._parseMappings=function(e,n){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var t=this._sections[r],o=t.consumer._generatedMappings,i=0;i<o.length;i++){var s=o[i],u=t.consumer._sources.at(s.source);null!==t.consumer.sourceRoot&&(u=a.join(t.consumer.sourceRoot,u)),this._sources.add(u),u=this._sources.indexOf(u);var l=t.consumer._names.at(s.name);this._names.add(l),l=this._names.indexOf(l);var c={source:u,generatedLine:s.generatedLine+(t.generatedOffset.generatedLine-1),generatedColumn:s.generatedColumn+(t.generatedOffset.generatedLine===s.generatedLine?t.generatedOffset.generatedColumn-1:0),originalLine:s.originalLine,originalColumn:s.originalColumn,name:l};this.__generatedMappings.push(c),"number"==typeof c.originalLine&&this.__originalMappings.push(c)}g(this.__generatedMappings,a.compareByGeneratedPositionsDeflated),g(this.__originalMappings,a.compareByOriginalPositions)},n.IndexedSourceMapConsumer=s},function(e,n){function r(e,t,o,i,s,a){var u=Math.floor((t-e)/2)+e,l=s(o,i[u],!0);return 0===l?u:l>0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t<i.length?t:-1:u:u-e>1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(i<s){var a=t(i,s),u=i-1;r(e,a,s);for(var l=e[s],c=i;c<s;c++)n(e[c],l)<=0&&(u+=1,r(e,u,c));r(e,u+1,c);var g=u+1;o(e,n,i,g-1),o(e,n,g+1,s)}}n.quickSort=function(e,n){o(e,n,0,e.length-1)}},function(e,n,r){function t(e,n,r,t,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==n?null:n,this.source=null==r?null:r,this.name=null==o?null:o,this[u]=!0,null!=t&&this.add(t)}var o=r(1).SourceMapGenerator,i=r(4),s=/(\r?\n)/,a=10,u="$$$isSourceNode$$$";t.fromStringWithSourceMap=function(e,n,r){function o(e,n){if(null===e||void 0===e.source)a.add(n);else{var o=r?i.join(r,e.source):e.source;a.add(new t(e.originalLine,e.originalColumn,o,n,e.name))}}var a=new t,u=e.split(s),l=0,c=function(){function e(){return l<u.length?u[l++]:void 0}var n=e(),r=e()||"";return n+r},g=1,p=0,h=null;return n.eachMapping(function(e){if(null!==h){if(!(g<e.generatedLine)){var n=u[l],r=n.substr(0,e.generatedColumn-p);return u[l]=n.substr(e.generatedColumn-p),p=e.generatedColumn,o(h,r),void(h=e)}o(h,c()),g++,p=0}for(;g<e.generatedLine;)a.add(c()),g++;if(p<e.generatedColumn){var n=u[l];a.add(n.substr(0,e.generatedColumn)),u[l]=n.substr(e.generatedColumn),p=e.generatedColumn}h=e},this),l<u.length&&(h&&o(h,c()),a.add(u.splice(l).join(""))),n.sources.forEach(function(e){var t=n.sourceContentFor(e);null!=t&&(null!=r&&(e=i.join(r,e)),a.setSourceContent(e,t))}),a},t.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},t.prototype.prepend=function(e){if(Array.isArray(e))for(var n=e.length-1;n>=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;r<t;r++)n=this.children[r],n[u]?n.walk(e):""!==n&&e(n,{source:this.source,line:this.line,column:this.column,name:this.name})},t.prototype.join=function(e){var n,r,t=this.children.length;if(t>0){for(n=[],r=0;r<t-1;r++)n.push(this.children[r]),n.push(e);n.push(this.children[r]),this.children=n}return this},t.prototype.replaceRight=function(e,n){var r=this.children[this.children.length-1];return r[u]?r.replaceRight(e,n):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,n):this.children.push("".replace(e,n)),this},t.prototype.setSourceContent=function(e,n){this.sourceContents[i.toSetString(e)]=n},t.prototype.walkSourceContents=function(e){for(var n=0,r=this.children.length;n<r;n++)this.children[n][u]&&this.children[n].walkSourceContents(e);for(var t=Object.keys(this.sourceContents),n=0,r=t.length;n<r;n++)e(i.fromSetString(t[n]),this.sourceContents[t[n]])},t.prototype.toString=function(){var e="";return this.walk(function(n){e+=n}),e},t.prototype.toStringWithSourceMap=function(e){var n={code:"",line:1,column:0},r=new o(e),t=!1,i=null,s=null,u=null,l=null;return this.walk(function(e,o){n.code+=e,null!==o.source&&null!==o.line&&null!==o.column?(i===o.source&&s===o.line&&u===o.column&&l===o.name||r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:n.line,column:n.column},name:o.name}),i=o.source,s=o.line,u=o.column,l=o.name,t=!0):t&&(r.addMapping({generated:{line:n.line,column:n.column}}),i=null,t=!1);for(var c=0,g=e.length;c<g;c++)e.charCodeAt(c)===a?(n.line++,n.column=0,c+1===g?(i=null,t=!1):t&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:n.line,column:n.column},name:o.name})):n.column++}),this.walkSourceContents(function(e,n){r.setSourceContent(e,n)}),{code:n.code,map:r}},n.SourceNode=t}])});
+//# sourceMappingURL=source-map.min.js.map \ No newline at end of file
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/array-set.js b/tools/node_modules/eslint/node_modules/source-map/lib/array-set.js
new file mode 100644
index 0000000000..fbd5c81cae
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/array-set.js
@@ -0,0 +1,121 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var util = require('./util');
+var has = Object.prototype.hasOwnProperty;
+var hasNativeMap = typeof Map !== "undefined";
+
+/**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+function ArraySet() {
+ this._array = [];
+ this._set = hasNativeMap ? new Map() : Object.create(null);
+}
+
+/**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+};
+
+/**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ArraySet.prototype.size = function ArraySet_size() {
+ return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;
+};
+
+/**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = hasNativeMap ? aStr : util.toSetString(aStr);
+ var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ if (hasNativeMap) {
+ this._set.set(aStr, idx);
+ } else {
+ this._set[sStr] = idx;
+ }
+ }
+};
+
+/**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ArraySet.prototype.has = function ArraySet_has(aStr) {
+ if (hasNativeMap) {
+ return this._set.has(aStr);
+ } else {
+ var sStr = util.toSetString(aStr);
+ return has.call(this._set, sStr);
+ }
+};
+
+/**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ if (hasNativeMap) {
+ var idx = this._set.get(aStr);
+ if (idx >= 0) {
+ return idx;
+ }
+ } else {
+ var sStr = util.toSetString(aStr);
+ if (has.call(this._set, sStr)) {
+ return this._set[sStr];
+ }
+ }
+
+ throw new Error('"' + aStr + '" is not in the set.');
+};
+
+/**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+};
+
+/**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+};
+
+exports.ArraySet = ArraySet;
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js b/tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js
new file mode 100644
index 0000000000..612b404018
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/base64-vlq.js
@@ -0,0 +1,140 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+var base64 = require('./base64');
+
+// A single base 64 digit can contain 6 bits of data. For the base 64 variable
+// length quantities we use in the source map spec, the first bit is the sign,
+// the next four bits are the actual value, and the 6th bit is the
+// continuation bit. The continuation bit tells us whether there are more
+// digits in this value following this digit.
+//
+// Continuation
+// | Sign
+// | |
+// V V
+// 101011
+
+var VLQ_BASE_SHIFT = 5;
+
+// binary: 100000
+var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+// binary: 011111
+var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+// binary: 100000
+var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+/**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+}
+
+/**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+}
+
+/**
+ * Returns the base 64 VLQ encoded value.
+ */
+exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+};
+
+/**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+};
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/base64.js b/tools/node_modules/eslint/node_modules/source-map/lib/base64.js
new file mode 100644
index 0000000000..8aa86b3026
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/base64.js
@@ -0,0 +1,67 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+/**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+};
+
+/**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+};
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js b/tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js
new file mode 100644
index 0000000000..010ac941e1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/binary-search.js
@@ -0,0 +1,111 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+exports.GREATEST_LOWER_BOUND = 1;
+exports.LEAST_UPPER_BOUND = 2;
+
+/**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+}
+
+/**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+};
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js b/tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js
new file mode 100644
index 0000000000..06d1274a02
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/mapping-list.js
@@ -0,0 +1,79 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var util = require('./util');
+
+/**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+}
+
+/**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+}
+
+/**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+/**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+};
+
+/**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+};
+
+exports.MappingList = MappingList;
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js b/tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js
new file mode 100644
index 0000000000..6a7caadbbd
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/quick-sort.js
@@ -0,0 +1,114 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+// It turns out that some (most?) JavaScript engines don't self-host
+// `Array.prototype.sort`. This makes sense because C++ will likely remain
+// faster than JS when doing raw CPU-intensive sorting. However, when using a
+// custom comparator function, calling back and forth between the VM's C++ and
+// JIT'd JS is rather slow *and* loses JIT type information, resulting in
+// worse generated code for the comparator function than would be optimal. In
+// fact, when sorting with a comparator, these costs outweigh the benefits of
+// sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+// a ~3500ms mean speed-up in `bench/bench.html`.
+
+/**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+}
+
+/**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+}
+
+/**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+}
+
+/**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+};
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js b/tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js
new file mode 100644
index 0000000000..6abcc280ee
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/source-map-consumer.js
@@ -0,0 +1,1082 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var util = require('./util');
+var binarySearch = require('./binary-search');
+var ArraySet = require('./array-set').ArraySet;
+var base64VLQ = require('./base64-vlq');
+var quickSort = require('./quick-sort').quickSort;
+
+function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+}
+
+SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+}
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+SourceMapConsumer.prototype._version = 3;
+
+// `__generatedMappings` and `__originalMappings` are arrays that hold the
+// parsed mapping coordinates from the source map's "mappings" attribute. They
+// are lazily instantiated, accessed via the `_generatedMappings` and
+// `_originalMappings` getters respectively, and we only parse the mappings
+// and create these arrays once queried for a source location. We jump through
+// these hoops because there can be many thousands of mappings, and parsing
+// them is expensive, so we only want to do it if we must.
+//
+// Each object in the arrays is of the form:
+//
+// {
+// generatedLine: The line number in the generated code,
+// generatedColumn: The column number in the generated code,
+// source: The path to the original source file that generated this
+// chunk of code,
+// originalLine: The line number in the original source that
+// corresponds to this chunk of generated code,
+// originalColumn: The column number in the original source that
+// corresponds to this chunk of generated code,
+// name: The name of the original symbol which generated this chunk of
+// code.
+// }
+//
+// All properties except for `generatedLine` and `generatedColumn` can be
+// `null`.
+//
+// `_generatedMappings` is ordered by the generated positions.
+//
+// `_originalMappings` is ordered by the original positions.
+
+SourceMapConsumer.prototype.__generatedMappings = null;
+Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+});
+
+SourceMapConsumer.prototype.__originalMappings = null;
+Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+});
+
+SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+/**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+SourceMapConsumer.GENERATED_ORDER = 1;
+SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+/**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+/**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+exports.SourceMapConsumer = SourceMapConsumer;
+
+/**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ .map(String)
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names.map(String), true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+}
+
+BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+/**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+BasicSourceMapConsumer.prototype._version = 3;
+
+/**
+ * The list of original sources.
+ */
+Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+});
+
+/**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+}
+
+/**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+/**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+/**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+/**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+/**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+/**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+/**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+/**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+}
+
+IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+/**
+ * The version of the source mapping spec that we are consuming.
+ */
+IndexedSourceMapConsumer.prototype._version = 3;
+
+/**
+ * The list of original sources.
+ */
+Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+});
+
+/**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+/**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+/**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+/**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+/**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js b/tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js
new file mode 100644
index 0000000000..aff1e7fb26
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/source-map-generator.js
@@ -0,0 +1,416 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var base64VLQ = require('./base64-vlq');
+var util = require('./util');
+var ArraySet = require('./array-set').ArraySet;
+var MappingList = require('./mapping-list').MappingList;
+
+/**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+}
+
+SourceMapGenerator.prototype._version = 3;
+
+/**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+/**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null) {
+ source = String(source);
+ if (!this._sources.has(source)) {
+ this._sources.add(source);
+ }
+ }
+
+ if (name != null) {
+ name = String(name);
+ if (!this._names.has(name)) {
+ this._names.add(name);
+ }
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+/**
+ * Set the source content for a source file.
+ */
+SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = Object.create(null);
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+/**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+/**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ // When aOriginal is truthy but has empty values for .line and .column,
+ // it is most likely a programmer error. In this case we throw a very
+ // specific error message to try to guide them the right way.
+ // For example: https://github.com/Polymer/polymer-bundler/pull/519
+ if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {
+ throw new Error(
+ 'original.line and original.column are not numbers -- you probably meant to omit ' +
+ 'the original mapping entirely and only map the generated position. If so, pass ' +
+ 'null for the original mapping instead of an object with empty or null values.'
+ );
+ }
+
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+/**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var next;
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+ next = ''
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ next += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ next += ',';
+ }
+ }
+
+ next += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ next += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ next += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ next += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ next += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+
+ result += next;
+ }
+
+ return result;
+ };
+
+SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+/**
+ * Externalize the source map.
+ */
+SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+/**
+ * Render the source map being generated to a string.
+ */
+SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+exports.SourceMapGenerator = SourceMapGenerator;
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/source-node.js b/tools/node_modules/eslint/node_modules/source-map/lib/source-node.js
new file mode 100644
index 0000000000..d196a53f8c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/source-node.js
@@ -0,0 +1,413 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
+var util = require('./util');
+
+// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+// operating systems these days (capturing the result).
+var REGEX_NEWLINE = /(\r?\n)/;
+
+// Newline character code for charCodeAt() comparisons
+var NEWLINE_CODE = 10;
+
+// Private symbol for identifying `SourceNode`s when multiple versions of
+// the source-map library are loaded. This MUST NOT CHANGE across
+// versions!
+var isSourceNode = "$$$isSourceNode$$$";
+
+/**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+}
+
+/**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are accessed by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var remainingLinesIndex = 0;
+ var shiftNextLine = function() {
+ var lineContents = getNextLine();
+ // The last line of a file might not have a newline.
+ var newLine = getNextLine() || "";
+ return lineContents + newLine;
+
+ function getNextLine() {
+ return remainingLinesIndex < remainingLines.length ?
+ remainingLines[remainingLinesIndex++] : undefined;
+ }
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[remainingLinesIndex];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[remainingLinesIndex];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLinesIndex < remainingLines.length) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.splice(remainingLinesIndex).join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+/**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+};
+
+/**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+};
+
+/**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+};
+
+/**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+};
+
+/**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+};
+
+/**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+/**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+/**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+};
+
+/**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+};
+
+exports.SourceNode = SourceNode;
diff --git a/tools/node_modules/eslint/node_modules/source-map/lib/util.js b/tools/node_modules/eslint/node_modules/source-map/lib/util.js
new file mode 100644
index 0000000000..44e0e45205
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/lib/util.js
@@ -0,0 +1,417 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+
+/**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+}
+exports.getArg = getArg;
+
+var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+var dataUrlRegexp = /^data:.+\,.+$/;
+
+function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+}
+exports.urlParse = urlParse;
+
+function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+}
+exports.urlGenerate = urlGenerate;
+
+/**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consecutive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '<dir>/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+}
+exports.normalize = normalize;
+
+/**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+}
+exports.join = join;
+
+exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+};
+
+/**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+}
+exports.relative = relative;
+
+var supportsNullProto = (function () {
+ var obj = Object.create(null);
+ return !('__proto__' in obj);
+}());
+
+function identity (s) {
+ return s;
+}
+
+/**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+function toSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return '$' + aStr;
+ }
+
+ return aStr;
+}
+exports.toSetString = supportsNullProto ? identity : toSetString;
+
+function fromSetString(aStr) {
+ if (isProtoString(aStr)) {
+ return aStr.slice(1);
+ }
+
+ return aStr;
+}
+exports.fromSetString = supportsNullProto ? identity : fromSetString;
+
+function isProtoString(s) {
+ if (!s) {
+ return false;
+ }
+
+ var length = s.length;
+
+ if (length < 9 /* "__proto__".length */) {
+ return false;
+ }
+
+ if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 2) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 3) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 4) !== 116 /* 't' */ ||
+ s.charCodeAt(length - 5) !== 111 /* 'o' */ ||
+ s.charCodeAt(length - 6) !== 114 /* 'r' */ ||
+ s.charCodeAt(length - 7) !== 112 /* 'p' */ ||
+ s.charCodeAt(length - 8) !== 95 /* '_' */ ||
+ s.charCodeAt(length - 9) !== 95 /* '_' */) {
+ return false;
+ }
+
+ for (var i = length - 10; i >= 0; i--) {
+ if (s.charCodeAt(i) !== 36 /* '$' */) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+}
+exports.compareByOriginalPositions = compareByOriginalPositions;
+
+/**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+}
+exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+}
+
+/**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+}
+exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
diff --git a/tools/node_modules/eslint/node_modules/source-map/package.json b/tools/node_modules/eslint/node_modules/source-map/package.json
new file mode 100644
index 0000000000..048e3ae860
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/package.json
@@ -0,0 +1,72 @@
+{
+ "name": "source-map",
+ "description": "Generates and consumes source maps",
+ "version": "0.5.7",
+ "homepage": "https://github.com/mozilla/source-map",
+ "author": "Nick Fitzgerald <nfitzgerald@mozilla.com>",
+ "contributors": [
+ "Tobias Koppers <tobias.koppers@googlemail.com>",
+ "Duncan Beevers <duncan@dweebd.com>",
+ "Stephen Crane <scrane@mozilla.com>",
+ "Ryan Seddon <seddon.ryan@gmail.com>",
+ "Miles Elam <miles.elam@deem.com>",
+ "Mihai Bazon <mihai.bazon@gmail.com>",
+ "Michael Ficarra <github.public.email@michael.ficarra.me>",
+ "Todd Wolfson <todd@twolfson.com>",
+ "Alexander Solovyov <alexander@solovyov.net>",
+ "Felix Gnass <fgnass@gmail.com>",
+ "Conrad Irwin <conrad.irwin@gmail.com>",
+ "usrbincc <usrbincc@yahoo.com>",
+ "David Glasser <glasser@davidglasser.net>",
+ "Chase Douglas <chase@newrelic.com>",
+ "Evan Wallace <evan.exe@gmail.com>",
+ "Heather Arthur <fayearthur@gmail.com>",
+ "Hugh Kennedy <hughskennedy@gmail.com>",
+ "David Glasser <glasser@davidglasser.net>",
+ "Simon Lydell <simon.lydell@gmail.com>",
+ "Jmeas Smith <jellyes2@gmail.com>",
+ "Michael Z Goddard <mzgoddard@gmail.com>",
+ "azu <azu@users.noreply.github.com>",
+ "John Gozde <john@gozde.ca>",
+ "Adam Kirkton <akirkton@truefitinnovation.com>",
+ "Chris Montgomery <christopher.montgomery@dowjones.com>",
+ "J. Ryan Stinnett <jryans@gmail.com>",
+ "Jack Herrington <jherrington@walmartlabs.com>",
+ "Chris Truter <jeffpalentine@gmail.com>",
+ "Daniel Espeset <daniel@danielespeset.com>",
+ "Jamie Wong <jamie.lf.wong@gmail.com>",
+ "Eddy Bruël <ejpbruel@mozilla.com>",
+ "Hawken Rives <hawkrives@gmail.com>",
+ "Gilad Peleg <giladp007@gmail.com>",
+ "djchie <djchie.dev@gmail.com>",
+ "Gary Ye <garysye@gmail.com>",
+ "Nicolas Lalevée <nicolas.lalevee@hibnet.org>"
+ ],
+ "repository": {
+ "type": "git",
+ "url": "http://github.com/mozilla/source-map.git"
+ },
+ "main": "./source-map.js",
+ "files": [
+ "source-map.js",
+ "lib/",
+ "dist/source-map.debug.js",
+ "dist/source-map.js",
+ "dist/source-map.min.js",
+ "dist/source-map.min.js.map"
+ ],
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "license": "BSD-3-Clause",
+ "scripts": {
+ "test": "npm run build && node test/run-tests.js",
+ "build": "webpack --color",
+ "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
+ },
+ "devDependencies": {
+ "doctoc": "^0.15.0",
+ "webpack": "^1.12.0"
+ },
+ "typings": "source-map"
+}
diff --git a/tools/node_modules/eslint/node_modules/source-map/source-map.js b/tools/node_modules/eslint/node_modules/source-map/source-map.js
new file mode 100644
index 0000000000..bc88fe820c
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/source-map/source-map.js
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;
+exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;
+exports.SourceNode = require('./lib/source-node').SourceNode;
diff --git a/tools/node_modules/eslint/node_modules/to-fast-properties/index.js b/tools/node_modules/eslint/node_modules/to-fast-properties/index.js
new file mode 100644
index 0000000000..028c88af01
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/to-fast-properties/index.js
@@ -0,0 +1,27 @@
+'use strict';
+
+let fastProto = null;
+
+// Creates an object with permanently fast properties in V8. See Toon Verwaest's
+// post https://medium.com/@tverwaes/setting-up-prototypes-in-v8-ec9c9491dfe2#5f62
+// for more details. Use %HasFastProperties(object) and the Node.js flag
+// --allow-natives-syntax to check whether an object has fast properties.
+function FastObject(o) {
+ // A prototype object will have "fast properties" enabled once it is checked
+ // against the inline property cache of a function, e.g. fastProto.property:
+ // https://github.com/v8/v8/blob/6.0.122/test/mjsunit/fast-prototype.js#L48-L63
+ if (fastProto !== null && typeof fastProto.property) {
+ const result = fastProto;
+ fastProto = FastObject.prototype = null;
+ return result;
+ }
+ fastProto = FastObject.prototype = o == null ? Object.create(null) : o;
+ return new FastObject;
+}
+
+// Initialize the inline property cache of FastObject
+FastObject();
+
+module.exports = function toFastproperties(o) {
+ return FastObject(o);
+};
diff --git a/tools/node_modules/eslint/node_modules/to-fast-properties/license b/tools/node_modules/eslint/node_modules/to-fast-properties/license
new file mode 100644
index 0000000000..cef79eff98
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/to-fast-properties/license
@@ -0,0 +1,10 @@
+MIT License
+
+Copyright (c) 2014 Petka Antonov
+ 2015 Sindre Sorhus
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/to-fast-properties/package.json b/tools/node_modules/eslint/node_modules/to-fast-properties/package.json
new file mode 100644
index 0000000000..7a64b2ccb1
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/to-fast-properties/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "to-fast-properties",
+ "version": "2.0.0",
+ "description": "Force V8 to use fast properties for an object",
+ "license": "MIT",
+ "repository": "sindresorhus/to-fast-properties",
+ "author": {
+ "name": "Sindre Sorhus",
+ "email": "sindresorhus@gmail.com",
+ "url": "sindresorhus.com"
+ },
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "test": "node --allow-natives-syntax test.js"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "object",
+ "obj",
+ "properties",
+ "props",
+ "v8",
+ "optimize",
+ "fast",
+ "convert",
+ "mode"
+ ],
+ "devDependencies": {
+ "ava": "0.0.4"
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/to-fast-properties/readme.md b/tools/node_modules/eslint/node_modules/to-fast-properties/readme.md
new file mode 100644
index 0000000000..692101d661
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/to-fast-properties/readme.md
@@ -0,0 +1,37 @@
+# to-fast-properties [![Build Status](https://travis-ci.org/sindresorhus/to-fast-properties.svg?branch=master)](https://travis-ci.org/sindresorhus/to-fast-properties)
+
+> Force V8 to use fast properties for an object
+
+[Read more.](http://stackoverflow.com/questions/24987896/)
+
+Use `%HasFastProperties(object)` and `--allow-natives-syntax` to check whether an object already has fast properties.
+
+
+## Install
+
+```
+$ npm install --save to-fast-properties
+```
+
+
+## Usage
+
+```js
+const toFastProperties = require('to-fast-properties');
+
+const obj = {
+ foo: true,
+ bar: true
+};
+
+delete obj.foo;
+// `obj` now has slow properties
+
+toFastProperties(obj);
+// `obj` now has fast properties
+```
+
+
+## License
+
+MIT © Petka Antonov, John-David Dalton, Sindre Sorhus
diff --git a/tools/node_modules/eslint/node_modules/unist-util-stringify-position/index.js b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/index.js
new file mode 100644
index 0000000000..3d78a4442f
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/index.js
@@ -0,0 +1,50 @@
+'use strict'
+
+var own = {}.hasOwnProperty
+
+module.exports = stringify
+
+function stringify(value) {
+ // Nothing.
+ if (!value || typeof value !== 'object') {
+ return ''
+ }
+
+ // Node.
+ if (own.call(value, 'position') || own.call(value, 'type')) {
+ return position(value.position)
+ }
+
+ // Position.
+ if (own.call(value, 'start') || own.call(value, 'end')) {
+ return position(value)
+ }
+
+ // Point.
+ if (own.call(value, 'line') || own.call(value, 'column')) {
+ return point(value)
+ }
+
+ // ?
+ return ''
+}
+
+function point(point) {
+ if (!point || typeof point !== 'object') {
+ point = {}
+ }
+
+ return index(point.line) + ':' + index(point.column)
+}
+
+function position(pos) {
+ if (!pos || typeof pos !== 'object') {
+ pos = {}
+ }
+
+ return point(pos.start) + '-' + point(pos.end)
+}
+
+function index(value) {
+ return value && typeof value === 'number' ? value : 1
+}
diff --git a/tools/node_modules/eslint/node_modules/unist-util-stringify-position/license b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/license
new file mode 100644
index 0000000000..8d8660d36e
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/license
@@ -0,0 +1,22 @@
+(The MIT License)
+
+Copyright (c) 2016 Titus Wormer <tituswormer@gmail.com>
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/tools/node_modules/eslint/node_modules/unist-util-stringify-position/package.json b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/package.json
new file mode 100644
index 0000000000..0f35015de9
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/package.json
@@ -0,0 +1,84 @@
+{
+ "name": "unist-util-stringify-position",
+ "version": "2.0.3",
+ "description": "unist utility to serialize a node, position, or point as a human readable location",
+ "license": "MIT",
+ "keywords": [
+ "unist",
+ "unist-util",
+ "util",
+ "utility",
+ "position",
+ "location",
+ "point",
+ "node",
+ "stringify",
+ "tostring"
+ ],
+ "repository": "syntax-tree/unist-util-stringify-position",
+ "bugs": "https://github.com/syntax-tree/unist-util-stringify-position/issues",
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ },
+ "author": "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)",
+ "contributors": [
+ "Titus Wormer <tituswormer@gmail.com> (https://wooorm.com)"
+ ],
+ "types": "types/index.d.ts",
+ "files": [
+ "types/index.d.ts",
+ "index.js"
+ ],
+ "dependencies": {
+ "@types/unist": "^2.0.2"
+ },
+ "devDependencies": {
+ "browserify": "^16.0.0",
+ "dtslint": "^3.0.0",
+ "nyc": "^15.0.0",
+ "prettier": "^1.0.0",
+ "remark-cli": "^7.0.0",
+ "remark-preset-wooorm": "^6.0.0",
+ "tape": "^4.0.0",
+ "tinyify": "^2.0.0",
+ "typescript": "^3.0.0",
+ "xo": "^0.27.0"
+ },
+ "scripts": {
+ "format": "remark . -qfo && prettier --write \"**/*.{js,ts}\" && xo --fix",
+ "build-bundle": "browserify . -s unistUtilStringifyPosition > unist-util-stringify-position.js",
+ "build-mangle": "browserify . -s unistUtilStringifyPosition -p tinyify > unist-util-stringify-position.min.js",
+ "build": "npm run build-bundle && npm run build-mangle",
+ "test-api": "node test",
+ "test-coverage": "nyc --reporter lcov tape test.js",
+ "test-types": "dtslint types",
+ "test": "npm run format && npm run build && npm run test-coverage && npm run test-types"
+ },
+ "nyc": {
+ "check-coverage": true,
+ "lines": 100,
+ "functions": 100,
+ "branches": 100
+ },
+ "prettier": {
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "bracketSpacing": false,
+ "semi": false,
+ "trailingComma": "none"
+ },
+ "xo": {
+ "prettier": true,
+ "esnext": false,
+ "ignores": [
+ "unist-util-stringify-position.js"
+ ]
+ },
+ "remarkConfig": {
+ "plugins": [
+ "preset-wooorm"
+ ]
+ }
+}
diff --git a/tools/node_modules/eslint/node_modules/unist-util-stringify-position/readme.md b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/readme.md
new file mode 100644
index 0000000000..bb565149bb
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/unist-util-stringify-position/readme.md
@@ -0,0 +1,140 @@
+# unist-util-stringify-position
+
+[![Build][build-badge]][build]
+[![Coverage][coverage-badge]][coverage]
+[![Downloads][downloads-badge]][downloads]
+[![Size][size-badge]][size]
+[![Sponsors][sponsors-badge]][collective]
+[![Backers][backers-badge]][collective]
+[![Chat][chat-badge]][chat]
+
+[**unist**][unist] utility to pretty print the positional information of a node.
+
+## Install
+
+[npm][]:
+
+```sh
+npm install unist-util-stringify-position
+```
+
+## Use
+
+```js
+var stringify = require('unist-util-stringify-position')
+
+// Point
+stringify({line: 2, column: 3}) // => '2:3'
+
+// Position
+stringify({start: {line: 2}, end: {line: 3}}) // => '2:1-3:1'
+
+// Node
+stringify({
+ type: 'text',
+ value: '!',
+ position: {
+ start: {line: 5, column: 11},
+ end: {line: 5, column: 12}
+ }
+}) // => '5:11-5:12'
+```
+
+## API
+
+### `stringifyPosition(node|position|point)`
+
+Stringify one [point][], a [position][] (start and end [point][]s), or a node’s
+[positional information][positional-information].
+
+###### Parameters
+
+* `node` ([`Node`][node])
+ — Node whose `'position'` property to stringify
+* `position` ([`Position`][position])
+ — Position whose `'start'` and `'end'` points to stringify
+* `point` ([`Point`][point])
+ — Point whose `'line'` and `'column'` to stringify
+
+###### Returns
+
+`string?` — A range `ls:cs-le:ce` (when given `node` or `position`) or a point
+`l:c` (when given `point`), where `l` stands for line, `c` for column, `s` for
+`start`, and `e` for end.
+An empty string (`''`) is returned if the given value is neither `node`,
+`position`, nor `point`.
+
+## Related
+
+* [`unist-util-generated`](https://github.com/syntax-tree/unist-util-generated)
+ — Check if a node is generated
+* [`unist-util-position`](https://github.com/syntax-tree/unist-util-position)
+ — Get positional info of nodes
+* [`unist-util-remove-position`](https://github.com/syntax-tree/unist-util-remove-position)
+ — Remove positional info from trees
+* [`unist-util-source`](https://github.com/syntax-tree/unist-util-source)
+ — Get the source of a value (node or position) in a file
+
+## Contribute
+
+See [`contributing.md` in `syntax-tree/.github`][contributing] for ways to get
+started.
+See [`support.md`][support] for ways to get help.
+
+This project has a [code of conduct][coc].
+By interacting with this repository, organization, or community you agree to
+abide by its terms.
+
+## License
+
+[MIT][license] © [Titus Wormer][author]
+
+<!-- Definition -->
+
+[build-badge]: https://img.shields.io/travis/syntax-tree/unist-util-stringify-position.svg
+
+[build]: https://travis-ci.org/syntax-tree/unist-util-stringify-position
+
+[coverage-badge]: https://img.shields.io/codecov/c/github/syntax-tree/unist-util-stringify-position.svg
+
+[coverage]: https://codecov.io/github/syntax-tree/unist-util-stringify-position
+
+[downloads-badge]: https://img.shields.io/npm/dm/unist-util-stringify-position.svg
+
+[downloads]: https://www.npmjs.com/package/unist-util-stringify-position
+
+[size-badge]: https://img.shields.io/bundlephobia/minzip/unist-util-stringify-position.svg
+
+[size]: https://bundlephobia.com/result?p=unist-util-stringify-position
+
+[sponsors-badge]: https://opencollective.com/unified/sponsors/badge.svg
+
+[backers-badge]: https://opencollective.com/unified/backers/badge.svg
+
+[collective]: https://opencollective.com/unified
+
+[chat-badge]: https://img.shields.io/badge/chat-spectrum-7b16ff.svg
+
+[chat]: https://spectrum.chat/unified/syntax-tree
+
+[npm]: https://docs.npmjs.com/cli/install
+
+[license]: license
+
+[author]: https://wooorm.com
+
+[contributing]: https://github.com/syntax-tree/.github/blob/master/contributing.md
+
+[support]: https://github.com/syntax-tree/.github/blob/master/support.md
+
+[coc]: https://github.com/syntax-tree/.github/blob/master/code-of-conduct.md
+
+[unist]: https://github.com/syntax-tree/unist
+
+[node]: https://github.com/syntax-tree/unist#node
+
+[position]: https://github.com/syntax-tree/unist#position
+
+[point]: https://github.com/syntax-tree/unist#point
+
+[positional-information]: https://github.com/syntax-tree/unist#positional-information
diff --git a/tools/node_modules/eslint/package.json b/tools/node_modules/eslint/package.json
index c3dfa1bb37..03103f2210 100644
--- a/tools/node_modules/eslint/package.json
+++ b/tools/node_modules/eslint/package.json
@@ -47,6 +47,8 @@
"homepage": "https://eslint.org",
"bugs": "https://github.com/eslint/eslint/issues/",
"dependencies": {
+ "@babel/eslint-parser": "^7.16.3",
+ "@babel/plugin-syntax-import-assertions": "^7.16.0",
"@eslint/eslintrc": "^1.0.4",
"@humanwhocodes/config-array": "^0.6.0",
"ajv": "^6.10.0",
@@ -56,6 +58,7 @@
"doctrine": "^3.0.0",
"enquirer": "^2.3.5",
"escape-string-regexp": "^4.0.0",
+ "eslint-plugin-markdown": "^2.2.1",
"eslint-scope": "^7.1.0",
"eslint-utils": "^3.0.0",
"eslint-visitor-keys": "^3.1.0",
@@ -87,7 +90,7 @@
"v8-compile-cache": "^2.0.3"
},
"devDependencies": {
- "@babel/core": "^7.4.3",
+ "@babel/core": "^7.16.0",
"@babel/preset-env": "^7.4.3",
"babel-loader": "^8.0.5",
"chai": "^4.0.1",